39994 lines
1.8 MiB
39994 lines
1.8 MiB
<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="1536409461357" STYLE="fork" TEXT="Lumi">
|
|
<font NAME="SansSerif" SIZE="25"/>
|
|
<node CREATED="1434128046296" ID="ID_1900827283" MODIFIED="1533388497006" POSITION="right" TEXT="GUI">
|
|
<font BOLD="true" NAME="SansSerif" SIZE="14"/>
|
|
<node CREATED="1434128054470" HGAP="7" ID="ID_1166611516" MODIFIED="1518487921038" TEXT="Workflow" VSHIFT="-15">
|
|
<node CREATED="1455289597596" ID="ID_970065036" MODIFIED="1518487921038" TEXT="work site"/>
|
|
<node CREATED="1455289466261" ID="ID_273679080" MODIFIED="1518487921038" TEXT="PresentationState"/>
|
|
<node CREATED="1487210691163" ID="ID_1259700796" MODIFIED="1535638478130" 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="1518487921038" TEXT="Spot == wo wir sind"/>
|
|
<node CREATED="1487211011447" ID="ID_61564732" MODIFIED="1518487921038" TEXT="Work Site == wo wir sein können"/>
|
|
<node CREATED="1487211200966" ID="ID_1565474518" MODIFIED="1518487921038" TEXT="Focus == Realisierung des Spot in einem ControlSystem"/>
|
|
<node CREATED="1487211243656" ID="ID_953924547" MODIFIED="1518487921038" TEXT="ControlSystem == Steuerungs-Paradigma">
|
|
<node CREATED="1487211263461" ID="ID_374086294" MODIFIED="1518487921038" TEXT="Maus / current element"/>
|
|
<node CREATED="1487211266901" ID="ID_306043379" MODIFIED="1518487921038" TEXT="Keyboard / Input Focus"/>
|
|
</node>
|
|
<node CREATED="1487211777687" ID="ID_577769257" MODIFIED="1518487921038" TEXT="Focus Path == kanonische Koordinaten innerhalb von einem UI Frame"/>
|
|
<node CREATED="1487211825857" ID="ID_883246945" MODIFIED="1518487921038" TEXT="UI Frame == top-level-Segment (konkret: WorkspaceWindow)"/>
|
|
<node CREATED="1487212066024" ID="ID_378199749" MODIFIED="1518487921038" TEXT="Spot Locator == das was navigiert wird, wenn sich der Spot bewegt"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1477784761581" HGAP="72" ID="ID_854334914" MODIFIED="1518487921039" TEXT="Rahmen" VGAP="19" VSHIFT="-21">
|
|
<node CREATED="1481320580216" ID="ID_1418071897" MODIFIED="1518487921039" TEXT="vorantreiben">
|
|
<node CREATED="1501776053522" ID="ID_664046169" MODIFIED="1518487921039" TEXT="Rückpfad Session -> UI">
|
|
<node CREATED="1501776081782" ID="ID_1369579979" MODIFIED="1518487921039" TEXT="warum wichtig?">
|
|
<icon BUILTIN="help"/>
|
|
<node CREATED="1501776102419" ID="ID_1120643044" MODIFIED="1518487921039" TEXT="full circle"/>
|
|
<node CREATED="1501776110026" ID="ID_53068153" MODIFIED="1518487921039" TEXT="asynchron"/>
|
|
<node CREATED="1501776132767" ID="ID_1853082326" MODIFIED="1518487921039" TEXT="treibt Diff-System"/>
|
|
</node>
|
|
<node CREATED="1501776157116" ID="ID_198311058" MODIFIED="1518487921039" TEXT="wie">
|
|
<node CREATED="1501776171290" ID="ID_1964256208" MODIFIED="1518487921039" TEXT="Diffs in Proc erzeugen"/>
|
|
<node CREATED="1501776183817" ID="ID_415789885" MODIFIED="1518487921039" 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 BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1501940591109" ID="ID_1925240675" MODIFIED="1518487921039" TEXT="#1099 DemoGuiRoundtrip">
|
|
<arrowlink COLOR="#e5e53f" DESTINATION="ID_1007296291" ENDARROW="Default" ENDINCLINATION="-931;34;" ID="Arrow_ID_1440938291" STARTARROW="None" STARTINCLINATION="-51;592;"/>
|
|
<icon BUILTIN="flag-yellow"/>
|
|
<node CREATED="1501940627280" ID="ID_1675066241" MODIFIED="1518487921039" TEXT="Dummy-Code im UI"/>
|
|
<node CREATED="1501940632871" ID="ID_189611570" MODIFIED="1518487921039" TEXT="Dummy Proc-Command"/>
|
|
<node CREATED="1501940639479" ID="ID_1314787910" MODIFIED="1518487921039" TEXT="komplettes Ping-Pong"/>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1481320590214" ID="ID_635303062" MODIFIED="1518487921039" TEXT="DummySessionConnection">
|
|
<arrowlink COLOR="#f9b709" DESTINATION="ID_1343270939" ENDARROW="Default" ENDINCLINATION="123;-106;" ID="Arrow_ID_1867016690" STARTARROW="None" STARTINCLINATION="-144;215;"/>
|
|
<icon BUILTIN="idea"/>
|
|
<node CREATED="1481320639544" ID="ID_1440497947" MODIFIED="1518487921039" TEXT="Singleton"/>
|
|
<node CREATED="1481320642455" ID="ID_1938045938" MODIFIED="1518487921039" TEXT="hat fake Session content"/>
|
|
<node CREATED="1481320650486" ID="ID_155238526" MODIFIED="1518487921039" TEXT="bietet fake Commands"/>
|
|
<node CREATED="1481320666196" ID="ID_1580591981" MODIFIED="1518487921039" TEXT="plus zugehörige Diagnostik"/>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1531419217662" ID="ID_1622732481" MODIFIED="1531419224038" TEXT="#1147 establish UI start-up sequence">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
<node CREATED="1531419242634" ID="ID_1022049727" MODIFIED="1531419624076" TEXT="Interfaces hochfahren">
|
|
<arrowlink COLOR="#effa97" DESTINATION="ID_687951877" ENDARROW="Default" ENDINCLINATION="-545;-1640;" ID="Arrow_ID_1500281313" STARTARROW="None" STARTINCLINATION="-189;37;"/>
|
|
</node>
|
|
<node CREATED="1531419250684" ID="ID_1850773836" MODIFIED="1531419638651" TEXT="Verbindungsstrukturen installieren">
|
|
<arrowlink COLOR="#fee998" DESTINATION="ID_176564515" ENDARROW="Default" ENDINCLINATION="-1211;-7367;" ID="Arrow_ID_157207334" STARTARROW="None" STARTINCLINATION="-579;123;"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1477784793993" ID="ID_1868522177" MODIFIED="1518487921039" TEXT="Umbau">
|
|
<linktarget COLOR="#bc4930" DESTINATION="ID_1868522177" ENDARROW="Default" ENDINCLINATION="221;282;" ID="Arrow_ID_600425644" SOURCE="ID_707273464" STARTARROW="None" STARTINCLINATION="1925;196;"/>
|
|
<icon BUILTIN="hourglass"/>
|
|
<node CREATED="1477784813895" ID="ID_1343270939" MODIFIED="1518487921039" TEXT="Model durch UI-Bus ersetzen">
|
|
<linktarget COLOR="#f9b709" DESTINATION="ID_1343270939" ENDARROW="Default" ENDINCLINATION="123;-106;" ID="Arrow_ID_1867016690" SOURCE="ID_635303062" STARTARROW="None" STARTINCLINATION="-144;215;"/>
|
|
<linktarget COLOR="#a9b4c1" DESTINATION="ID_1343270939" ENDARROW="Default" ENDINCLINATION="-197;638;" ID="Arrow_ID_1686519160" SOURCE="ID_202253849" STARTARROW="Default" STARTINCLINATION="-83;-1020;"/>
|
|
<node COLOR="#338800" CREATED="1481320683706" ID="ID_1226263415" MODIFIED="1518487921039" TEXT="klären, wo der Bus aufgehängt wird">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1481331063782" ID="ID_1606852933" MODIFIED="1518487921039" TEXT="Lifecycle-Frontend UI-Bus"/>
|
|
<node CREATED="1481331150275" ID="ID_814186655" MODIFIED="1518487921039" TEXT="CoreService als PImpl"/>
|
|
<node CREATED="1481333616753" ID="ID_709873899" MODIFIED="1518487921039" TEXT="Nexus ist Teil von CoreService"/>
|
|
<node CREATED="1481335769192" ID="ID_1335469664" MODIFIED="1518487921039" TEXT="Interface-Manager gleichermaßen"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1481320693912" ID="ID_918908848" MODIFIED="1518487921039" TEXT="Lebenszyklus klären">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1481332855167" ID="ID_362694314" MODIFIED="1518487921039">
|
|
<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="1518487921040" TEXT="Nexus braucht CoreService braucht Nexus...">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
denn:
|
|
</p>
|
|
<ul>
|
|
<li>
|
|
Nexus verwendet CoreService als "upstream", um <i>alle sonstigen Nachriten</i> dorthin zuzustellen
|
|
</li>
|
|
<li>
|
|
CoreService hat Nexus als Upstream, um mit dem restlichen System kommunizieren zu können
|
|
</li>
|
|
</ul>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="info"/>
|
|
</node>
|
|
<node CREATED="1481332999091" ID="ID_1793743943" MODIFIED="1518487921040" TEXT="Problem ist: ich wollte Nexus nicht speziell konstruieren"/>
|
|
<node CREATED="1481338218216" ID="ID_128336616" MODIFIED="1518487921040" TEXT="Lösung">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1481338222672" ID="ID_318056010" MODIFIED="1518487921040" TEXT="Bus-Term greift tatsä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="1518487921040" TEXT="kann also eine Referenz auf lokalen Speicher reinreichen"/>
|
|
<node CREATED="1481338295614" ID="ID_1811061645" MODIFIED="1518487921040" TEXT="Folglich muß 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="1518487921040" TEXT="Lebenszyklus generell unsauber">
|
|
<node CREATED="1481335709297" ID="ID_1340554881" MODIFIED="1518487921040" TEXT="Ticket #1048"/>
|
|
<node CREATED="1481335723887" ID="ID_689818706" MODIFIED="1518487921040" TEXT="GtkLumiera ist ein Singleton">
|
|
<icon BUILTIN="stop-sign"/>
|
|
</node>
|
|
<node CREATED="1481335735901" ID="ID_185489405" MODIFIED="1518487921040" TEXT="das lebt so viel zu lange">
|
|
<icon BUILTIN="smily_bad"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1481338348143" ID="ID_713195335" MODIFIED="1518487921040" TEXT="Entscheidung">
|
|
<icon BUILTIN="yes"/>
|
|
<node CREATED="1481338354702" ID="ID_1755264056" MODIFIED="1518487921040" TEXT="CoreServices ist das Lebenszyklus-PImpl"/>
|
|
<node CREATED="1481338363965" ID="ID_1656280824" MODIFIED="1518487921040" TEXT="wenn geschlossen, muß das ganze übrige GUI schon tot sein"/>
|
|
<node CREATED="1481338393113" ID="ID_1854005469" MODIFIED="1518487921040" TEXT="Warn-Log hierfür eingebaut">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node CREATED="1481338408983" ID="ID_516483369" MODIFIED="1518487921040" TEXT="könnte später sogar eine Exception sein">
|
|
<icon BUILTIN="help"/>
|
|
</node>
|
|
<node CREATED="1484871442777" ID="ID_492545805" MODIFIED="1518487921040">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
CoreService hat <i>keine volle</i> Bus-Connection
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...das hab ich mir jetzt explizit so überlegt und es ist sinnvoll.
|
|
</p>
|
|
<p>
|
|
Nur ein Tangible kann eine volle Bus-Connection haben, und das heißt,
|
|
</p>
|
|
<p>
|
|
es kann downlink-Nachrichten bekommen. Dagegen hat CoreService lediglich ein "freistehendes"
|
|
</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" ID="ID_728332859" MODIFIED="1518487921040" TEXT="wo kommen die CoreServices hin">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1481338456152" ID="ID_266095129" MODIFIED="1518487921040" TEXT="sie leben im Objekt Ui-Bus"/>
|
|
<node CREATED="1481338465823" ID="ID_78520725" MODIFIED="1518487921041" TEXT="und zwar als PImpl"/>
|
|
<node CREATED="1481338478069" ID="ID_406101846" MODIFIED="1518487921041" TEXT="und UI-Bus lebt im lokalen scope von GtkLumiera::main()"/>
|
|
</node>
|
|
<node CREATED="1481320759472" ID="ID_687951877" MODIFIED="1531419624076" TEXT="Interfaces öffnen">
|
|
<linktarget COLOR="#effa97" DESTINATION="ID_687951877" ENDARROW="Default" ENDINCLINATION="-545;-1640;" ID="Arrow_ID_1500281313" SOURCE="ID_1022049727" STARTARROW="None" STARTINCLINATION="-189;37;"/>
|
|
<icon BUILTIN="pencil"/>
|
|
<node CREATED="1481320765135" ID="ID_379585622" MODIFIED="1518487921041">
|
|
<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;"/>
|
|
<node COLOR="#338800" CREATED="1484792679322" ID="ID_426218722" MODIFIED="1522936023760" TEXT="#1047 preliminary definition of GuiNotification facade">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
4/18 inzwischen hier alles geklä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="1518487921041" TEXT="grundsätzliche Architektur geklärt">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...hängt am UI-Bus,
|
|
</p>
|
|
<p>
|
|
aber nur via einfacher "uplink"-Verbindung
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1493753215852" ID="ID_1971120" MODIFIED="1531584322019" TEXT="geklärt: wie kann man Shutdown implementieren">
|
|
<icon BUILTIN="help"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1493753249399" ID="ID_575609638" MODIFIED="1531584299207" TEXT="geklärt: #1098 hand-Over in UI-Thread">
|
|
<icon BUILTIN="help"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1501776210069" ID="ID_228920906" MODIFIED="1531584328938" TEXT="geklärt: konkrete Diff-Nachrichten">
|
|
<icon BUILTIN="help"/>
|
|
</node>
|
|
</node>
|
|
<node COLOR="#5c1010" CREATED="1501776256263" ID="ID_1196529588" MODIFIED="1518487921041" TEXT="Bedeutung">
|
|
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
|
|
<node CREATED="1501776296394" ID="ID_1578367045" MODIFIED="1518487921041" TEXT="Rückpfad Proc -> 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="1518487921041" TEXT="Abstraktion des GUI"/>
|
|
<node CREATED="1501776319543" ID="ID_641656399" MODIFIED="1518487921041">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
Sicht <i>"von unten"</i>
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1484877839299" HGAP="23" ID="ID_957622878" MODIFIED="1518487921041" TEXT="Asynchrones Protokoll" VSHIFT="1">
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
<node CREATED="1484877856640" ID="ID_1256835676" MODIFIED="1518487921041" TEXT="bedenke: alle Aktionen müssen in den Event-Thread"/>
|
|
<node CREATED="1484877868015" ID="ID_1612427727" MODIFIED="1518487921041" TEXT="über die Rolle des GUI-Modells nachdenken!"/>
|
|
</node>
|
|
<node CREATED="1481502320065" ID="ID_1298358905" MODIFIED="1518487921041" TEXT="macht bisher der GuiRunner" VSHIFT="17">
|
|
<icon BUILTIN="info"/>
|
|
<node CREATED="1481502327528" ID="ID_75293128" MODIFIED="1518487921041" TEXT="das ist ohnehin schlecht">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...weil es dadurch passieren könnte,
|
|
</p>
|
|
<p>
|
|
daß 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ürde.
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
<node CREATED="1481502335583" ID="ID_1245191241" MODIFIED="1518487921041" TEXT="Felder im GuiRunner sollten noexcept sein">
|
|
<icon BUILTIN="yes"/>
|
|
</node>
|
|
<node CREATED="1484793048273" ID="ID_66499328" MODIFIED="1518487921041" TEXT="verschoben">
|
|
<arrowlink COLOR="#4072ad" DESTINATION="ID_1019455888" ENDARROW="Default" ENDINCLINATION="-334;0;" ID="Arrow_ID_693735378" STARTARROW="None" STARTINCLINATION="-131;33;"/>
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1481502305995" ID="ID_1943234904" MODIFIED="1518487921042" TEXT="direkt vom UiManager betrieben">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node COLOR="#338800" CREATED="1484793113472" ID="ID_221612387" MODIFIED="1518487921042" TEXT="Lebenszyklus nochmal prüfen">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node COLOR="#338800" CREATED="1484797253856" ID="ID_226245696" MODIFIED="1518487921042" TEXT="GUI start sauber">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1484797307376" ID="ID_842106541" MODIFIED="1518487921042" TEXT="Abfolge">
|
|
<icon BUILTIN="info"/>
|
|
<node CREATED="1484797311008" ID="ID_424744338" MODIFIED="1518487921042" TEXT="GuiFacade::start"/>
|
|
<node CREATED="1484797337516" ID="ID_750979034" MODIFIED="1518487921042" TEXT="erzeugt unique_ptr<GuiRunner>"/>
|
|
<node CREATED="1484797370352" ID="ID_622906815" MODIFIED="1518487921042" TEXT="dieser hat GuiHandle als member">
|
|
<node CREATED="1484797379239" ID="ID_1948690926" MODIFIED="1518487921042" TEXT="läd Plugin"/>
|
|
<node CREATED="1484797399756" ID="ID_1084903350" MODIFIED="1518487921042" TEXT="ruft im ctor launchUi()"/>
|
|
</node>
|
|
<node CREATED="1484797429160" ID="ID_959278184" MODIFIED="1518487921042" TEXT="gtk-lumiera.cpp">
|
|
<node CREATED="1484797432999" ID="ID_1571358017" MODIFIED="1518487921042" TEXT="implementiert GUI-Plugin"/>
|
|
<node CREATED="1484797442686" ID="ID_83446606" MODIFIED="1518487921042" TEXT="launchUI -> erzeugt GUI-Thread"/>
|
|
</node>
|
|
<node CREATED="1484797483865" ID="ID_159090609" MODIFIED="1518487921042" TEXT="GuiThread (==runGUI())">
|
|
<node CREATED="1484797502462" ID="ID_21819368" MODIFIED="1518487921042" TEXT="erzeugt GtkLumiera"/>
|
|
<node CREATED="1484797512341" ID="ID_57994807" MODIFIED="1533608413510" TEXT="ruft darauf run()">
|
|
<node CREATED="1501854771820" ID="ID_1849270384" MODIFIED="1518487921042" 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>
|
|
<node CREATED="1484797517052" ID="ID_840628023" MODIFIED="1518487921042" TEXT="löst das sigTerm aus"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1484797531482" HGAP="104" ID="ID_1734603717" MODIFIED="1518487921042" 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="1518487921042" 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="1533608413511" TEXT="erzeugt UiManager">
|
|
<node CREATED="1501855161616" ID="ID_1916035717" MODIFIED="1518487921042" 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="1533608416103" TEXT="erzeugt GlobalCtx">
|
|
<node CREATED="1501855278529" ID="ID_1800772710" MODIFIED="1518487921042" TEXT="UiBus&"/>
|
|
<node CREATED="1501855278529" ID="ID_146051630" MODIFIED="1518487921042" TEXT="UiManager&"/>
|
|
<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="1518487921042" TEXT="bindet Menü-Actions"/>
|
|
</node>
|
|
<node CREATED="1501855040016" ID="ID_1016475327" MODIFIED="1518487921043" TEXT="erstellt Hautpfenster"/>
|
|
<node CREATED="1501855050087" ID="ID_1167747758" MODIFIED="1533608413512" TEXT="startet Event-Loop">
|
|
<node CREATED="1501855083654" ID="ID_207237338" MODIFIED="1518487921043" TEXT="uiManager.performMainLoop()"/>
|
|
<node CREATED="1484797557383" ID="ID_637078214" MODIFIED="1518487921043" TEXT="Gtk-Kit::run()"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1484797573701" ID="ID_162958920" MODIFIED="1518487921043" TEXT="UiBus">
|
|
<node CREATED="1484797576972" ID="ID_1159570219" MODIFIED="1533608413513" TEXT="erzeugt CoreService">
|
|
<node CREATED="1484871312594" ID="ID_1351400025" MODIFIED="1518487921043" TEXT="erbt zwar von BusTerm"/>
|
|
<node CREATED="1484871321473" ID="ID_112216780" MODIFIED="1518487921043" 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über nachgedacht.
|
|
</p>
|
|
<p>
|
|
|
|
</p>
|
|
<p>
|
|
Anmerkung: ein "frestehendes" BusTerm ist valide und zugelassen, es hat halt nur eine uplink-Connection.
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1484871556194" ID="ID_1978811406" MODIFIED="1518487921043" TEXT="macht Sinn so">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
nur ein Tangible kann downlink-Nachrichten sinnvoll empfangen;
|
|
</p>
|
|
<p>
|
|
es muß dazu auch jede Menge Methoden implementieren.
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1484797584483" FOLDED="true" ID="ID_1316050570" MODIFIED="1533608416104" TEXT="dieser hat Member ">
|
|
<node CREATED="1484797623574" ID="ID_1754670675" MODIFIED="1518487921043" TEXT="Nexus"/>
|
|
<node CREATED="1484797620495" ID="ID_1710248767" MODIFIED="1518487921043" TEXT="GuiNotificationService"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1501857011825" ID="ID_1201296805" MODIFIED="1518487921043" TEXT="Synchronisation">
|
|
<icon BUILTIN="info"/>
|
|
<node CREATED="1501857019737" ID="ID_1981037750" MODIFIED="1518487921043" TEXT="GuiSubsysDescriptor">
|
|
<node CREATED="1501857031391" ID="ID_1576806105" MODIFIED="1518487921043" TEXT="start hä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="1518487921043" TEXT="erzeugt GuiRunner"/>
|
|
<node CREATED="1501857054324" ID="ID_907543967" MODIFIED="1518487921043" 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="1518487921043" 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="1518487921043" TEXT="läd Gui-Plugin"/>
|
|
<node CREATED="1501857152263" ID="ID_521610150" MODIFIED="1518487921043" TEXT="triggert auf diesem launchUI"/>
|
|
</node>
|
|
<node CREATED="1501857292596" ID="ID_453282087" MODIFIED="1518487921043" TEXT="Gui-Plugin-launchUI">
|
|
<node CREATED="1501857310890" ID="ID_1249679018" MODIFIED="1518487921043" TEXT="erzeugt UI-Thread"/>
|
|
<node CREATED="1501857327592" ID="ID_1036948610" MODIFIED="1518487921043" TEXT="dieser bindet an runGUI"/>
|
|
</node>
|
|
<node CREATED="1501857358387" ID="ID_807727617" MODIFIED="1518487921043" TEXT="runGUI">
|
|
<node CREATED="1501857365394" ID="ID_509238853" MODIFIED="1518487921043" TEXT="erzeugt GtkLumiera"/>
|
|
<node CREATED="1501857382808" ID="ID_1737939783" MODIFIED="1518487921043" TEXT="ruft darauf run() auf"/>
|
|
<node COLOR="#3f9476" CREATED="1501857391335" ID="ID_1248703286" MODIFIED="1518487921043" TEXT="nicht weiter synchronisiert">
|
|
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
|
|
</node>
|
|
<node CREATED="1501857518526" ID="ID_837968815" MODIFIED="1533608413514" TEXT="Ende runGUI">
|
|
<node CREATED="1501857542075" ID="ID_767030758" MODIFIED="1518487921044" TEXT="aktiviert Term-Signal"/>
|
|
<node CREATED="1501857548922" ID="ID_1335129961" MODIFIED="1518487921044" 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="1518487921044" TEXT="nach dem Subsys-Start">
|
|
<node CREATED="1501857649532" ID="ID_1041981988" MODIFIED="1518487921044" TEXT="läuft der UI-Thread">
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
<node CREATED="1501857657707" ID="ID_35727639" MODIFIED="1518487921044">
|
|
<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="1518487921044">
|
|
<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="1533608413514" TEXT="zuverlässig">
|
|
<icon BUILTIN="idea"/>
|
|
<node CREATED="1501857709325" ID="ID_1889612043" MODIFIED="1518487921044" TEXT="entweder Start geht durch"/>
|
|
<node CREATED="1501857714988" ID="ID_158695659" MODIFIED="1518487921044" TEXT="oder scheitert und aktiviert Term-Signal"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1501857864240" ID="ID_1721447002" MODIFIED="1518487921044" TEXT="UI-Bus">
|
|
<node CREATED="1501857867935" ID="ID_1896700254" MODIFIED="1518487921044" TEXT="Nexus vorhanden"/>
|
|
<node CREATED="1501857873711" ID="ID_1994626464" MODIFIED="1518487921044" TEXT="CoreService konstruiert"/>
|
|
<node CREATED="1501857903891" ID="ID_791583661" MODIFIED="1533608413515" TEXT="aber">
|
|
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
<node CREATED="1501857907682" ID="ID_881624439" MODIFIED="1518487921044" TEXT="GTK_Loop muß (noch) nicht laufen"/>
|
|
<node CREATED="1501857924928" ID="ID_1224004206" MODIFIED="1518487921044" TEXT="InteractionDirector muß (noch) nicht connected sein"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1501858109615" ID="ID_747885327" MODIFIED="1518487921044" TEXT="UI-Facaden">
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1501858114023" ID="ID_749414376" MODIFIED="1533608413515">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
müssen <b>eigens</b> 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="1518487921045" TEXT="eigenen Callback schaffen"/>
|
|
<node CREATED="1501859763155" ID="ID_428809729" MODIFIED="1518487921045" TEXT="generische Komponente schaffen?"/>
|
|
</node>
|
|
<node CREATED="1501858134796" ID="ID_1622427478" MODIFIED="1518487921045" TEXT="nachdem die UI-Loop läuft">
|
|
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1484871163902" ID="ID_274722396" MODIFIED="1518487921045" TEXT="closeGuiModule (PImpl) hat Lock">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1484871188635" ID="ID_1922412139" MODIFIED="1518487921045" TEXT="Storage/Lebenzyklus des Term-Funktors (jetzt) OK">
|
|
<arrowlink COLOR="#a9b4c1" DESTINATION="ID_375871642" ENDARROW="Default" ENDINCLINATION="-164;-16;" ID="Arrow_ID_896120556" STARTARROW="None" STARTINCLINATION="345;-16;"/>
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1484793022924" ID="ID_1019455888" MODIFIED="1518487921045" TEXT="neuer Facade-Kontext">
|
|
<linktarget COLOR="#4072ad" DESTINATION="ID_1019455888" ENDARROW="Default" ENDINCLINATION="-334;0;" ID="Arrow_ID_693735378" SOURCE="ID_66499328" STARTARROW="None" STARTINCLINATION="-131;33;"/>
|
|
<icon BUILTIN="idea"/>
|
|
<node CREATED="1501866627055" ID="ID_1521184600" MODIFIED="1518487921045" TEXT="RAII-Stil"/>
|
|
<node CREATED="1501866591164" ID="ID_751026549" MODIFIED="1518487921045" TEXT="öffnet/schließt die öffentlichen Interfaces"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1481502251450" HGAP="96" ID="ID_1125529151" MODIFIED="1518487921045" TEXT="möglicher Race" VSHIFT="16">
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
<node CREATED="1484797174890" ID="ID_986391148" MODIFIED="1518487921045" TEXT="triggerShutdown() kommt bevor GuiNotification offen ist">
|
|
<icon BUILTIN="info"/>
|
|
</node>
|
|
<node CREATED="1484797210597" ID="ID_1555304752" MODIFIED="1518487921045" TEXT="ist das überhaupt ein Problem">
|
|
<icon BUILTIN="help"/>
|
|
<node CREATED="1484797230051" ID="ID_590420902" MODIFIED="1518487921045" TEXT="ja, weil dann das GUI weiterläuft">
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
<node CREATED="1501867017251" ID="ID_1980251688" MODIFIED="1518487921045" TEXT="...und der shutdown-Prozeß blockt"/>
|
|
</node>
|
|
<node CREATED="1481502257825" HGAP="24" ID="ID_232782099" MODIFIED="1518487921045" TEXT="Gefahr gering, aber gegeben" VSHIFT="11">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...weil unser Thread-Framework
|
|
</p>
|
|
<p>
|
|
tatsächlich <i>erzwingt,</i> daß der neue Thrad zu laufen beginnt, bevor die
|
|
</p>
|
|
<p>
|
|
startende Funktion zurückkehrt.
|
|
</p>
|
|
<p>
|
|
|
|
</p>
|
|
<p>
|
|
Daher können wir zumindest annehmen, daß die ganze Initialisierung
|
|
</p>
|
|
<p>
|
|
bereits läuft, wenn die start()-Funktion mit true (Erfolg) zurückkommt.
|
|
</p>
|
|
<p>
|
|
|
|
</p>
|
|
<p>
|
|
Allerdings ist <i>definitiv</i> ein Race gegeben, und wenn
|
|
</p>
|
|
<p>
|
|
direkt beim Starten anderer Subsysteme nach dem GUI etwas schiefläuft,
|
|
</p>
|
|
<p>
|
|
dann kann der Shutdown-Prozeß den Start des GUI überholen.
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1484797646771" HGAP="44" ID="ID_1605520996" MODIFIED="1518487921045" TEXT="Ausgestaltung" VSHIFT="10">
|
|
<icon BUILTIN="pencil"/>
|
|
<node CREATED="1501859455212" ID="ID_751494565" MODIFIED="1518487921045" TEXT="Lebenszyklus">
|
|
<node CREATED="1484797663121" ID="ID_134980216" MODIFIED="1518487921045" TEXT="braucht Bus-Connection">
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
<node CREATED="1484797863862" ID="ID_464230340" MODIFIED="1518487921045" TEXT="zum Controller machen">
|
|
<icon BUILTIN="help"/>
|
|
<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="1518487921045" 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="1518487921046" TEXT="ist ein BusTerm">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1484875959342" ID="ID_1202046492" MODIFIED="1518487921046" TEXT="nur unidirektional zum Bus verbunden"/>
|
|
<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" ID="ID_640788614" MODIFIED="1525124214729" TEXT="muß 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="1518487921046" 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>
|
|
<node CREATED="1484800480472" ID="ID_1441013524" MODIFIED="1518487921046" TEXT="Sanity-Check in CoreService anpassen">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...muß 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 CREATED="1484802745625" ID="ID_375871642" MODIFIED="1518487921046" TEXT="Heisenbug">
|
|
<linktarget COLOR="#a9b4c1" DESTINATION="ID_375871642" ENDARROW="Default" ENDINCLINATION="-164;-16;" ID="Arrow_ID_896120556" SOURCE="ID_1922412139" STARTARROW="None" STARTINCLINATION="345;-16;"/>
|
|
<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ä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> eines Lambdas hä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 das den term-Functor"/>
|
|
<node CREATED="1484865513568" ID="ID_696204655" MODIFIED="1518487921047" TEXT="selbst wenn der Funktor selber per Value übergeben wird">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
konkret:
|
|
</p>
|
|
<p>
|
|
der Kontext ist hier nämlich ein anderes Lambda, das dem Aufruf des GUI-Plugins mitgegeben wurde.
|
|
</p>
|
|
<p>
|
|
Dagegen die alte Lösung erzeugte an dieser Stelle einen Bind-Ausdruck, und das war offenbar genug,
|
|
</p>
|
|
<p>
|
|
um nicht mehr von dem direkten Kontext abhängig zu sein, in dem der Thread gestartet wurde.
|
|
</p>
|
|
<p>
|
|
|
|
</p>
|
|
<p>
|
|
Denn dieser Kontext (auf dem Stack) ist natürlich lange schon weg, wenn der Thread
|
|
</p>
|
|
<p>
|
|
terminiert und dann tatsächlich den Fuktor aufrufen mö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> Element connected
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="help"/>
|
|
<node CREATED="1484800781408" ID="ID_183164357" MODIFIED="1518487921047" TEXT="nä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 CREATED="1484876114521" ID="ID_1082250595" MODIFIED="1531583468190" TEXT="Protokoll zur Kommunikation">
|
|
<icon BUILTIN="info"/>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#4e0099" CREATED="1484876122960" ID="ID_31825421" MODIFIED="1531583401109" STYLE="fork" TEXT="UI-Bus nur im GUI-Thread">
|
|
<arrowlink COLOR="#6c5f80" DESTINATION="ID_489078622" ENDARROW="Default" ENDINCLINATION="725;-39;" 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="1531584013538" TEXT="muß Nachrichten explizit ü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="1531583372849" TEXT="an Locking denken">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1484797900185" ID="ID_1895372084" MODIFIED="1518487921047" TEXT="Protokoll zum Schließ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ßt aber nicht wirklich">
|
|
<icon BUILTIN="stop-sign"/>
|
|
<node CREATED="1501791881175" ID="ID_361179647" MODIFIED="1518487921047" TEXT="jede Lösung willkürlich"/>
|
|
<node CREATED="1501791876032" ID="ID_381137803" MODIFIED="1518487921047" TEXT="logisch unsinnig">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
weil die Abstraktion "UI-Element" 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> dar,
|
|
</p>
|
|
<p>
|
|
und ihre <i>"Methoden"</i> sind Commands auf der Session!
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1501859470962" ID="ID_99706930" MODIFIED="1518487921047">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
muß eigens <b>aktiviert</b> 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="1518487921048" TEXT="nach Start der UI-Loop"/>
|
|
<node CREATED="1501859566837" ID="ID_984712012" MODIFIED="1518487921048" TEXT="Verbindung zum CoreCtx">
|
|
<arrowlink COLOR="#4f547b" DESTINATION="ID_36527267" ENDARROW="Default" ENDINCLINATION="-424;-2038;" ID="Arrow_ID_134552555" STARTARROW="None" STARTINCLINATION="2623;0;"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1484797808349" HGAP="31" ID="ID_389264738" MODIFIED="1518487921048" STYLE="fork" TEXT="Notification-Funktionen" VSHIFT="11">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
<node CREATED="1501854084264" HGAP="-42" ID="ID_1333991907" MODIFIED="1518487921048" TEXT="allgemein...." VSHIFT="-60">
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
<node CREATED="1501854094710" ID="ID_1146157818" MODIFIED="1518487921048" 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="1518487921048" TEXT="Lebenszyklus"/>
|
|
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#01908b" CREATED="1502411488645" ID="ID_1875294174" MODIFIED="1531584909670" 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;"/>
|
|
<icon BUILTIN="yes"/>
|
|
<node CREATED="1502411559060" ID="ID_1282973269" MODIFIED="1518487921048" TEXT="GTK nicht exception-safe">
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
</node>
|
|
<node CREATED="1502411571690" ID="ID_878676751" MODIFIED="1518487921048" TEXT="aber was tun wenn....">
|
|
<icon BUILTIN="help"/>
|
|
<node CREATED="1503444108091" ID="ID_725326352" MODIFIED="1518487921048" TEXT="loggen und weitermachen"/>
|
|
<node CREATED="1503444117593" ID="ID_1115027114" MODIFIED="1531584945634" TEXT="loggen, Fehlerlog-Widget, weitermachen">
|
|
<icon BUILTIN="forward"/>
|
|
</node>
|
|
<node CREATED="1503444163706" ID="ID_577766875" MODIFIED="1518487921048" TEXT="UI-Reset"/>
|
|
<node CREATED="1503444173752" ID="ID_65458957" MODIFIED="1518487921048" TEXT="(emergency)-shutdown"/>
|
|
</node>
|
|
<node CREATED="1502411595263" ID="ID_58102462" MODIFIED="1518487921048" TEXT="Fallunterscheidung">
|
|
<node CREATED="1502411604054" ID="ID_1705249614" MODIFIED="1531584932146" TEXT="Fehler im Feedback/Notify harmlos">
|
|
<icon BUILTIN="yes"/>
|
|
</node>
|
|
<node CREATED="1502411612700" ID="ID_1951009863" MODIFIED="1531584540442" TEXT="Diff darf nicht scheitern">
|
|
<node CREATED="1503670572980" ID="ID_599888416" MODIFIED="1518487921048" TEXT="einzige Ausnahme">
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
<node CREATED="1503670585794" FOLDED="true" ID="ID_1806860698" MODIFIED="1533608416105" TEXT="speziellen Hanlder 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="1533608415749" 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="1518487921048" TEXT="Implementierungs-Muster">
|
|
<node CREATED="1503443979619" ID="ID_1673104600" MODIFIED="1518487921048" TEXT="jedes einzelne Lambda in Fehlerhandler wrappen">
|
|
<icon BUILTIN="button_cancel"/>
|
|
</node>
|
|
<node CREATED="1503443999616" ID="ID_601042478" MODIFIED="1518487921048" TEXT="generischer Fehlerhandler im Invocation-Lambda">
|
|
<icon BUILTIN="button_cancel"/>
|
|
</node>
|
|
<node CREATED="1503670528386" ID="ID_376091136" MODIFIED="1518487921048" 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 CREATED="1484797813373" ID="ID_536855363" MODIFIED="1518487921048" TEXT="generische Nachricht"/>
|
|
<node CREATED="1484797818780" ID="ID_354397333" MODIFIED="1518487921048" TEXT="state mark">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node COLOR="#338800" CREATED="1484877574046" ID="ID_251939815" MODIFIED="1518487921049" TEXT="Error">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1484877577550" ID="ID_258243919" MODIFIED="1518487921049" TEXT="Note">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1504203488690" ID="ID_149796171" MODIFIED="1518487921049" TEXT="Fehlermeldungen">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1504203497529" ID="ID_1933339677" MODIFIED="1531585056392" 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="bell"/>
|
|
<node CREATED="1504203643550" ID="ID_764647453" MODIFIED="1518487921049" TEXT="via InteractionDirector ansprechen"/>
|
|
<node CREATED="1504203694423" ID="ID_812129962" MODIFIED="1518487921049">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
Fehlerlog-Anzeige <i>vorlä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="1533688773500" TEXT="längerfristige Lö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="1533688484834" TEXT="Wizard erzeugt NotificationController"/>
|
|
<node CREATED="1533688486631" ID="ID_1186891962" MODIFIED="1533688503856" TEXT="dieser alloziert bei Bedarf ein Anzeige-Widget"/>
|
|
<node CREATED="1533688504805" ID="ID_882148786" MODIFIED="1533688519238" TEXT="welches dann in das Infobox-Panel platziert wird"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1504203511199" ID="ID_1027795869" MODIFIED="1518487921049" TEXT="Nachricht per UI-Bus senden"/>
|
|
</node>
|
|
<node CREATED="1484797822403" ID="ID_364545191" MODIFIED="1518487921049" TEXT="Diff">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node COLOR="#338800" CREATED="1502401930856" ID="ID_634125084" MODIFIED="1518487921049" 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="1518487921049" TEXT="unnötig: zwei Abstraktions-Typen">
|
|
<icon BUILTIN="stop-sign"/>
|
|
<node CREATED="1502410126058" ID="ID_30550435" MODIFIED="1518487921049" TEXT="MutationMessage"/>
|
|
<node CREATED="1502410130889" ID="ID_1402431306" MODIFIED="1518487921049" TEXT="DiffMessage"/>
|
|
</node>
|
|
<node CREATED="1502410149463" ID="ID_1909971032" MODIFIED="1518487921049" TEXT="Entscheidung für DiffMessage">
|
|
<icon BUILTIN="yes"/>
|
|
<node CREATED="1502599977964" ID="ID_249258988" MODIFIED="1518487921049" TEXT="ist das bessere Konzept"/>
|
|
<node CREATED="1502599993338" ID="ID_1306432135" MODIFIED="1518487921049" TEXT="abstrahierter Iterator">
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1502600004168" ID="ID_1865027243" MODIFIED="1518487921049" TEXT="aber Name »MutationMessage« beibehalten">
|
|
<icon BUILTIN="yes"/>
|
|
</node>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1502410165980" ID="ID_1450795292" MODIFIED="1518487921049" TEXT="MutationMessage entfernen">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1502410176619" ID="ID_1188430411" MODIFIED="1518487921049" TEXT="AbstractTangible_test umschreiben"/>
|
|
<node CREATED="1502410190737" ID="ID_1036564813" MODIFIED="1518487921049" TEXT="operator string() in DiffMessage übernehmen">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...das ist nützlich zur Diagnose,
|
|
</p>
|
|
<ul>
|
|
<li>
|
|
aber läßt sich das überhaupt auf IterSource übertragen?
|
|
</li>
|
|
<li>
|
|
war es überhaupt je gerechtferigt? zu starke Annahme über den Diff-Erzeuger!
|
|
</li>
|
|
</ul>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="help"/>
|
|
</node>
|
|
<node CREATED="1502410328279" ID="ID_1577461232" MODIFIED="1518487921050" TEXT="Tree-Diff-Aplikator direkt in Nexus verschieben"/>
|
|
<node CREATED="1502410351284" ID="ID_845679527" MODIFIED="1518487921050" TEXT="BusTerm-API ändern"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1484799660822" ID="ID_1288003894" MODIFIED="1518487921050" TEXT="TreeMutator binden">
|
|
<node CREATED="1502410730274" ID="ID_1631270974" MODIFIED="1518487921050" TEXT="passiert bisher in MutationMessage"/>
|
|
<node CREATED="1502410738992" ID="ID_1626925051" MODIFIED="1518487921050" TEXT="direkt in den Nexus verschieben">
|
|
<icon BUILTIN="yes"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1484877585605" ID="ID_101718446" MODIFIED="1518487921050" TEXT="verwende MutationMessage">
|
|
<icon BUILTIN="yes"/>
|
|
<node CREATED="1502401956093" ID="ID_322700967" MODIFIED="1518487921050" TEXT="MutationMessage von DiffMessage erzeugen">
|
|
<icon BUILTIN="button_cancel"/>
|
|
</node>
|
|
<node CREATED="1502454601603" ID="ID_384770680" MODIFIED="1518487921050" TEXT="nein: MutationMessage wird überflüssig">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node CREATED="1502401987033" ID="ID_1584846573" MODIFIED="1533303965804" 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="1518487921050" TEXT="generisch bleiben?">
|
|
<icon BUILTIN="button_cancel"/>
|
|
</node>
|
|
<node CREATED="1502402012558" ID="ID_1846096533" MODIFIED="1533608413520" 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="1533608416107" TEXT="Diskussion">
|
|
<node CREATED="1502402022580" FOLDED="true" ID="ID_1661331763" MODIFIED="1533608415752" 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="1533608415756" TEXT="Con">
|
|
<node CREATED="1502402075413" ID="ID_913770531" MODIFIED="1518487921050" TEXT="Komplexität"/>
|
|
<node CREATED="1502402086268" FOLDED="true" ID="ID_380041258" MODIFIED="1533608415359" TEXT="zusätzliche Indirektion">
|
|
<node CREATED="1502402254582" ID="ID_218820320" MODIFIED="1518487921050" TEXT="DiffMutable beim Empfänger"/>
|
|
<node CREATED="1502402499053" ID="ID_587801464" MODIFIED="1518487921050" TEXT="TreeMutator beim Empfänger"/>
|
|
<node CREATED="1502402266284" ID="ID_1573858698" MODIFIED="1518487921050" TEXT="IterSource<DiffStep> 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="1533608415362" 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ö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ß hier <i>ownership </i>übertragen wird.
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1502402370534" ID="ID_1923477219" MODIFIED="1518487921051" TEXT="es geht hier um C++ (Proc) <-> C++ (GUI)"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1502402701106" FOLDED="true" ID="ID_510901772" MODIFIED="1533608416110" TEXT="Abwägung">
|
|
<icon BUILTIN="yes"/>
|
|
<node CREATED="1502402718496" ID="ID_1641881714" MODIFIED="1518487921051" TEXT="mir gefällt die Lösung zum ownerhsip management"/>
|
|
<node CREATED="1502402735558" ID="ID_1883129099" MODIFIED="1518487921051" TEXT="halte das fü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="1533608415758" TEXT="Indirektion/Komplexität">
|
|
<node CREATED="1502402798909" ID="ID_813337624" MODIFIED="1518487921051" TEXT="zä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ämlich
|
|
</p>
|
|
<ul>
|
|
<li>
|
|
ein sehr theoretisches und anspruchsvolles Konzept
|
|
</li>
|
|
<li>
|
|
der Zwang, das auf jedem Empfänger umzusetzen
|
|
</li>
|
|
<li>
|
|
die hablseidene Trickserei mit der konkreten Puffergröß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> ein Desaster
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="smiley-oh"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1502402830713" ID="ID_1666981219" MODIFIED="1518487921051" TEXT="was zählt, ist die Entkoppelung"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1502403145431" ID="ID_636092614" MODIFIED="1518487921051" 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="1518487921051" TEXT="Vorsicht: Storage / GUI-Thread">
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
<node CREATED="1484877696486" ID="ID_476867583" MODIFIED="1518487921051" TEXT="wir müssen jede Aktion in den Event-Thread übergeben"/>
|
|
<node CREATED="1484877711388" ID="ID_407918505" MODIFIED="1518487921052">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
das heißt, die Diff-<b>Implementierung</b> muß länger leben
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1484877731337" ID="ID_1859059266" MODIFIED="1518487921052">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
faktisch erfolgt somit ein <b>Callback</b> aus einem anderen Thread
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1484877743992" ID="ID_680582075" MODIFIED="1518487921052">
|
|
<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="1518487921052" TEXT="Refactoring">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1502459182214" ID="ID_1601884743" MODIFIED="1518487921052" TEXT="MutationMessage wird überflüssig">
|
|
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
|
|
<icon BUILTIN="yes"/>
|
|
</node>
|
|
<node CREATED="1502459190477" ID="ID_102437369" MODIFIED="1518487921052" TEXT="DiffMessage übernimmt deren Rolle">
|
|
<icon BUILTIN="yes"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1502459198611" ID="ID_1739527989" MODIFIED="1518487921052" TEXT="aber DiffMessage wird umbenannt in MutationMessage">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1493753249399" HGAP="75" ID="ID_1023343635" MODIFIED="1531588546486" TEXT="#1098 hand-over in UI-Thread" VSHIFT="61">
|
|
<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="3463;134;"/>
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1501804992301" ID="ID_1647263044" MODIFIED="1518487921052" TEXT="schedule event"/>
|
|
<node CREATED="1501804985286" ID="ID_320977714" MODIFIED="1533608413527" TEXT="GTK-Mechanismus">
|
|
<node CREATED="1501850591393" ID="ID_1831316800" MODIFIED="1518487921052" TEXT="Glib::Dispatcher"/>
|
|
<node CREATED="1501850603736" ID="ID_1030340631" MODIFIED="1518487921052" TEXT="im UI-Thread erzeugen und binden"/>
|
|
<node CREATED="1501850614630" ID="ID_196299293" MODIFIED="1518487921052" TEXT="emit() -> event im UI-Thread"/>
|
|
</node>
|
|
<node COLOR="#435e98" CREATED="1501850632636" ID="ID_431682708" MODIFIED="1533608413531" TEXT="technische Probleme">
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
<node CREATED="1501850684373" ID="ID_1688212376" MODIFIED="1518487921052" 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="1518487921052" TEXT="jede Facade-Funktion brauch einen Dispatcher">
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
</node>
|
|
<node CREATED="1501850863525" ID="ID_1439490807" MODIFIED="1518487921053" TEXT="das wird eine Menge"/>
|
|
<node CREATED="1501850867597" ID="ID_141225152" MODIFIED="1518487921053" TEXT="alle Dispatcher haben eine gemeinsame Queue"/>
|
|
<node CREATED="1501850880179" ID="ID_745997733" MODIFIED="1518487921053" TEXT="mögliche contention-Probleme"/>
|
|
</node>
|
|
<node CREATED="1501850690748" ID="ID_1995715844" MODIFIED="1518487921053" TEXT="Erzeugen der Dispatcher">
|
|
<node CREATED="1501850920950" ID="ID_1529426036" MODIFIED="1518487921053" TEXT="muß im UI-Thread erfolgen"/>
|
|
<node CREATED="1501850933596" ID="ID_620574396" MODIFIED="1518487921053">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
<i>bevor</i> die Facade geöffnet wir
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1501850677790" ID="ID_1195250454" MODIFIED="1518487921053" TEXT="Argumentübergabe">
|
|
<node CREATED="1501850716049" ID="ID_104637334" MODIFIED="1518487921053" TEXT="emit() ist void(void)"/>
|
|
<node CREATED="1501850734414" ID="ID_994424125" MODIFIED="1518487921053">
|
|
<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="1518487921053">
|
|
<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 CREATED="1501867225983" ID="ID_1121867075" MODIFIED="1518487921053">
|
|
<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="1533608413532" TEXT="Helper: CallQueue">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1501938715247" ID="ID_1286525769" MODIFIED="1518487921053" TEXT="simplistic">
|
|
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
|
|
<icon BUILTIN="yes"/>
|
|
</node>
|
|
<node CREATED="1501938699841" ID="ID_1077640328" MODIFIED="1518487921053" TEXT="std::function"/>
|
|
<node CREATED="1501938690626" ID="ID_353231581" MODIFIED="1518487921053" TEXT="thread safe queue"/>
|
|
<node CREATED="1501938705321" ID="ID_1924064403" MODIFIED="1518487921053" TEXT="lambdas für Argument-binding"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1501938776839" ID="ID_1031878628" MODIFIED="1533608413533" TEXT="Convenience-Wrapper">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1501939110138" ID="ID_203135379" MODIFIED="1518487921054" TEXT="Lambda konstruieren">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node CREATED="1501939132431" ID="ID_1400757157" MODIFIED="1518487921054" TEXT="Funktion zum Triggern">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node CREATED="1501939149837" ID="ID_1733976265" MODIFIED="1518487921054" TEXT="diese an Glib::Dispatcher binden">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node CREATED="1502404797300" ID="ID_1177399909" MODIFIED="1533608413533" 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 BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1522935881957" HGAP="23" ID="ID_564244010" MODIFIED="1522935939206" 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ß hier zwar schon ein catch eingebaut war,
|
|
</p>
|
|
<p>
|
|
aber noch <i>irgend ein Hund</i> begraben liegt
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="help"/>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1531584775498" ID="ID_1901801971" MODIFIED="1531584845023" 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> noch offen
|
|
</p>
|
|
<p>
|
|
Im Moment loggen wir nur ins textuelle Konsole-Log (NoBug)
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="yes"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1501939174506" ID="ID_504999068" MODIFIED="1533608413534" TEXT="in NotificationService integrieren">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1502375098210" ID="ID_581509556" MODIFIED="1518487921054" STYLE="fork" TEXT="als PImpl">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node CREATED="1502375146395" ID="ID_144811928" MODIFIED="1518487921054" TEXT="CallQueue einrichten">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node CREATED="1502375120551" ID="ID_1281399419" MODIFIED="1518487921054" TEXT="Glib::Dispatcher verwenden">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node CREATED="1502375134501" ID="ID_1011463592" MODIFIED="1531584426150" STYLE="fork" TEXT="Aufrufe in Lamdas verpacken">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1502375294344" ID="ID_640199096" MODIFIED="1533608413535" TEXT="Spezialbehandlung für Shutdown">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1502375312469" ID="ID_1075926054" MODIFIED="1518487921054" TEXT="ironischerweise...">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...könnte das am Ende nicht sinnvoll sein,
|
|
</p>
|
|
<p>
|
|
speziell den UI-Shutdown-Trigger über den neuen Mechanismus laufen zu lassen,
|
|
</p>
|
|
<p>
|
|
obwohl jener doch genau der Anlaß war, diesen neuen Mechanismus zu bauen.
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1502390322659" ID="ID_194166182" MODIFIED="1533608413536" TEXT="den neuen Dispatcher nutzen?">
|
|
<icon BUILTIN="help"/>
|
|
<node CREATED="1502390340193" FOLDED="true" ID="ID_1491902996" MODIFIED="1533608416111" 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> durch
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1502390334890" FOLDED="true" ID="ID_1454460947" MODIFIED="1533608416113" 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üßte aufwendig zu Fuß programmiert werden"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1502390572106" ID="ID_1872668444" MODIFIED="1533608413539" TEXT="zusätzlich noch eine Benachrichtigung">
|
|
<node CREATED="1502390583289" ID="ID_741614829" MODIFIED="1518487921054" TEXT="an die UI-Nachrichtenbox">
|
|
<icon BUILTIN="info"/>
|
|
</node>
|
|
<node CREATED="1502390886681" ID="ID_985994192" MODIFIED="1518487921054" TEXT="führe Benachrichtiguns-Level ein">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1502390603674" ID="ID_125356908" MODIFIED="1518487921054" TEXT="#1102 : build a message display box in the UI">
|
|
<arrowlink COLOR="#8c8bae" DESTINATION="ID_1926586811" ENDARROW="Default" ENDINCLINATION="1456;47;" ID="Arrow_ID_1593124756" STARTARROW="None" STARTINCLINATION="-839;779;"/>
|
|
<icon BUILTIN="hourglass"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1501939193031" HGAP="3" ID="ID_1045913810" MODIFIED="1518487921054" TEXT="Test" VSHIFT="20">
|
|
<icon BUILTIN="bell"/>
|
|
<node COLOR="#338800" CREATED="1501939204166" ID="ID_383444966" MODIFIED="1533608413539" TEXT="CallQueue_test">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node COLOR="#338800" CREATED="1501946847700" ID="ID_1917302142" MODIFIED="1518487921054" TEXT="basic">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1501946852555" ID="ID_1617455971" MODIFIED="1518487921054" TEXT="mehrere">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1501946856587" ID="ID_1780067399" MODIFIED="1518487921054" TEXT="Streß">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1501939212693" ID="ID_1007296291" MODIFIED="1535892210892" TEXT="#1099 DemoGuiRoundtrip">
|
|
<linktarget COLOR="#e5e53f" DESTINATION="ID_1007296291" ENDARROW="Default" ENDINCLINATION="-931;34;" ID="Arrow_ID_1440938291" SOURCE="ID_1925240675" STARTARROW="None" STARTINCLINATION="-51;592;"/>
|
|
<linktarget COLOR="#f0eca5" DESTINATION="ID_1007296291" ENDARROW="Default" ENDINCLINATION="881;2029;" ID="Arrow_ID_1736540527" SOURCE="ID_1456159316" STARTARROW="None" STARTINCLINATION="418;-44;"/>
|
|
<linktarget COLOR="#ebf0a5" DESTINATION="ID_1007296291" ENDARROW="Default" ENDINCLINATION="-3154;1704;" ID="Arrow_ID_1091720734" SOURCE="ID_1098045534" STARTARROW="None" STARTINCLINATION="1627;38;"/>
|
|
<icon BUILTIN="pencil"/>
|
|
<node CREATED="1501939235834" FOLDED="true" ID="ID_1160414548" MODIFIED="1533608416114" TEXT="Menü-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="1518487921054" TEXT="triggert Proc-Command"/>
|
|
<node CREATED="1501939252991" ID="ID_31140909" MODIFIED="1518487921054" TEXT="dieses sendet Mark zurück"/>
|
|
<node CREATED="1501939263030" ID="ID_381890207" MODIFIED="1533608441262" TEXT="ein Widget im UI reagiert">
|
|
<node COLOR="#338800" CREATED="1533402866549" ID="ID_899369632" MODIFIED="1534508533795" TEXT="fest verdrahtete ID">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1533688905326" ID="ID_709974587" MODIFIED="1533688913192" TEXT="gehört dem NotificationController"/>
|
|
<node CREATED="1533688913996" ID="ID_33570780" MODIFIED="1533688928765">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
<i>das</i> ist schon die endgültige Lösung
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="yes"/>
|
|
</node>
|
|
<node CREATED="1533688935962" ID="ID_1996006263" MODIFIED="1533688943780" TEXT="NotificationController">
|
|
<node CREATED="1533688944816" ID="ID_1273458647" MODIFIED="1533688952787" TEXT="wird vom Wizard gemanagt"/>
|
|
<node CREATED="1533688953399" ID="ID_1850034653" MODIFIED="1533915641929" 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="1534508530448" TEXT="wo ist die ID selber definiert">
|
|
<icon BUILTIN="help"/>
|
|
<node CREATED="1533911116328" ID="ID_1079600246" MODIFIED="1533911128764" TEXT="sie muß insgesamt reprouzierbar sein"/>
|
|
<node CREATED="1533911129424" ID="ID_659618402" MODIFIED="1533911139946" TEXT="zumindest innerhalb einer Program-Ausführung"/>
|
|
<node CREATED="1533911854871" HGAP="23" ID="ID_1953310668" MODIFIED="1534026766064" TEXT="Problem dabei" VSHIFT="11">
|
|
<node CREATED="1533911897569" ID="ID_1876551933" MODIFIED="1533911919154" TEXT="ID ist somit Teil des Interface"/>
|
|
<node CREATED="1533911919814" ID="ID_558535868" MODIFIED="1533911928937" TEXT="welches Interface?">
|
|
<node CREATED="1533915325903" ID="ID_1053391149" MODIFIED="1533915334817" TEXT="GuiNotification">
|
|
<node CREATED="1533915343891" FOLDED="true" ID="ID_1650034681" MODIFIED="1533915518726" TEXT="Nebengedanke: paßt der Name?">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1533915353434" ID="ID_1231213592" MODIFIED="1533915424732" TEXT="ist mehr als "notification"?">
|
|
<icon BUILTIN="button_cancel"/>
|
|
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1533915365545" ID="ID_892577975" MODIFIED="1533915367959" TEXT="nein">
|
|
<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="1533915454893" ID="ID_877610316" MODIFIED="1533915459256" TEXT="der Name ist adäquat">
|
|
<node CREATED="1533915472186" ID="ID_1748932158" MODIFIED="1533915479325" TEXT="GuiFeedback würde auch gehen"/>
|
|
<node CREATED="1533915480649" ID="ID_846895155" MODIFIED="1533915485628" TEXT="aber klingt nicht so schön"/>
|
|
<node CREATED="1533915486336" ID="ID_627537189" MODIFIED="1533915508660" TEXT="und ist doppeldeutig">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...es könnte auch den Feedback des Users meinen
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1533915683535" ID="ID_1976057171" MODIFIED="1533915688561" TEXT="wäre mö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" ID="ID_1316198257" MODIFIED="1533915675249" TEXT="ErrorLogView">
|
|
<icon BUILTIN="button_cancel"/>
|
|
<node CREATED="1533915663705" ID="ID_1407115037" MODIFIED="1533915670027" TEXT="ist Implementation"/>
|
|
</node>
|
|
<node CREATED="1533915555871" ID="ID_1144697657" MODIFIED="1533915558835" TEXT="ErrorLog">
|
|
<node CREATED="1533915560942" ID="ID_981931913" MODIFIED="1533915564473" TEXT="wü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" ID="ID_1784095931" MODIFIED="1533915585148" TEXT="Wizzard">
|
|
<icon BUILTIN="forward"/>
|
|
<node CREATED="1533915588283" ID="ID_909934131" MODIFIED="1533915603577">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
Schlußfolgerung: Wizzard <i>wird</i> ein Interface
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1533911886268" ID="ID_1414379746" MODIFIED="1533911931262" 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" ID="ID_1959407299" MODIFIED="1534026961333" TEXT="dieses Interface fü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ß die ansprechen"/>
|
|
<node CREATED="1534026943481" ID="ID_445720698" MODIFIED="1534026954859" TEXT="bloß um eine "hinten herum" vereinbarte ID zu bekommen"/>
|
|
</node>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1533916387142" HGAP="-78" ID="ID_1746348489" MODIFIED="1533916411849" 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" ID="ID_1117749960" MODIFIED="1533918772587" 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" ID="ID_340215113" MODIFIED="1535647887424" TEXT="miß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="1534527069860" TEXT="neues Dock(Panel)">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1522936169270" ID="ID_1991244597" MODIFIED="1522936194888" TEXT="vorläufig eingehä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 -> 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" HGAP="34" ID="ID_1371608668" MODIFIED="1534527057298" TEXT="Begriffe klä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" ID="ID_806494084" MODIFIED="1533608457039" TEXT="wieder das Problem: wie bekommt man'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önnen wir nicht sofort lösen"/>
|
|
<node CREATED="1533608471274" ID="ID_1700599331" MODIFIED="1534520115340" TEXT="aber müssen der Lö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ß dieser Service der <b>ViewLocator</b> sein wird,
|
|
</p>
|
|
<p>
|
|
und daß man ihn via <b>InteractionDirector</b> erreicht
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1533608609479" ID="ID_1375309708" MODIFIED="1533608624410" 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ü-Aktion"/>
|
|
<node CREATED="1533608670271" ID="ID_216288706" MODIFIED="1533608678066" TEXT="oder generisch-fest-verdrahtet"/>
|
|
</node>
|
|
<node CREATED="1533608721200" ID="ID_724576502" MODIFIED="1533608725939" TEXT="Schluß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" ID="ID_592805858" MODIFIED="1534526968091" 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ü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" ID="ID_1131466377" MODIFIED="1534526965635" 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ä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 BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1534850824341" ID="ID_1234148559" MODIFIED="1534850840618" TEXT="vorläufiges Grid-Layout">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1534850841673" ID="ID_375492094" MODIFIED="1534850857117" TEXT="ParentView-Interface">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
</node>
|
|
<node CREATED="1504203667130" ID="ID_1745777873" MODIFIED="1534527104730" TEXT="vorläufig Empfänger für Fehler-Log">
|
|
<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="1518487921054" TEXT="Scroll-Pane">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node CREATED="1504203749815" ID="ID_1057483680" MODIFIED="1534508696960" STYLE="fork" TEXT="Textanzeige-Box">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1504215911647" ID="ID_1066629131" MODIFIED="1518487921054" TEXT="GtkTextView"/>
|
|
<node CREATED="1504215958961" ID="ID_55797578" LINK="https://developer.gnome.org/gtkmm-tutorial/stable/sec-textview-buffer.html.en#textview-formatting" MODIFIED="1518487921054" TEXT="Formattierung">
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
<node CREATED="1504219859389" FOLDED="true" ID="ID_653669269" MODIFIED="1534512772398" TEXT="Scrollen zum zuletzt eingefü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ß Marke verwenden">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1504216221389" ID="ID_355253225" MODIFIED="1534508698470" TEXT="Marks">
|
|
<node CREATED="1504216224349" ID="ID_1372118244" MODIFIED="1518487921054" TEXT="was ist die "insert"-Mark?">
|
|
<icon BUILTIN="help"/>
|
|
</node>
|
|
<node CREATED="1504219835536" ID="ID_1720205947" MODIFIED="1518487921054" TEXT="der Text-Cursor">
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1504203763606" ID="ID_877984616" MODIFIED="1518487921054" TEXT="in ein Widget verpacken">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1504203754175" ID="ID_580465154" MODIFIED="1533402997076" TEXT="Fehler-Level erkennen">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1534725200588" ID="ID_871562482" MODIFIED="1535752292770" TEXT="Operationen">
|
|
<icon BUILTIN="pencil"/>
|
|
<node COLOR="#338800" CREATED="1534725109137" ID="ID_694776463" MODIFIED="1535752255561" TEXT="expand">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node COLOR="#338800" CREATED="1534725397553" ID="ID_1072347956" MODIFIED="1535631557024" TEXT="collapsed-Repräsentation schaffen">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1535554610295" ID="ID_1050608842" MODIFIED="1535554619117" TEXT="nur vorläufige Lösung">
|
|
<icon BUILTIN="yes"/>
|
|
</node>
|
|
<node COLOR="#435e98" CREATED="1535629564615" ID="ID_1047933726" MODIFIED="1535630651685" 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="1535557120786" TEXT="Label-Text als ctor param"/>
|
|
<node CREATED="1535557122205" ID="ID_1034248466" MODIFIED="1535557176171" TEXT="resize_toplevel (=true by default)">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...ob beim Expand/Collapse das umschließende Widget resized werden soll
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
</node>
|
|
<node COLOR="#990000" CREATED="1535563193014" FOLDED="true" ID="ID_1551506828" MODIFIED="1535630371536" 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ü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="1535630629855" TEXT="Lö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" ID="ID_1376241476" MODIFIED="1535752092225" TEXT="essentiell: passiert im Parent-Widget">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>...wesentliches Struktur-Element:</p>
|
|
<p>der Parent-Container ist für das expand/collapse zuständig</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="button_ok"/>
|
|
<node COLOR="#338800" CREATED="1535634032601" ID="ID_964641889" MODIFIED="1535731317069" TEXT="Design-Problem: sich expandieren">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1535634116925" ID="ID_1129948550" MODIFIED="1535634126600" TEXT="Voraussetzung: unser Widget-Protokoll">
|
|
<node CREATED="1535634127852" ID="ID_317106359" MODIFIED="1535634136126" TEXT="enthält eine expand()-Methode"/>
|
|
<node CREATED="1535636097808" ID="ID_1540209936" MODIFIED="1535636109795" TEXT="Unterschied Widget / Controller ?">
|
|
<icon BUILTIN="help"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1535636169439" FOLDED="true" ID="ID_631287309" MODIFIED="1535731360335" TEXT="zwei Modelle denkbar">
|
|
<icon BUILTIN="yes"/>
|
|
<node CREATED="1535636219312" ID="ID_1940674226" MODIFIED="1535636242077" TEXT="Widget ist Expander">
|
|
<icon BUILTIN="full-1"/>
|
|
<node CREATED="1535636281176" ID="ID_232056866" MODIFIED="1535636470569" TEXT="wähle "das Widget" 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> Container...
|
|
</p>
|
|
<p>
|
|
...der das <i>eigentliche</i> Widget expandieren kann
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1535636621140" ID="ID_1785708787" MODIFIED="1535636640069" 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" ID="ID_1629039815" MODIFIED="1535636642157" 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üssen alle anderen Funktionen nach unten delegieren
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1535636755202" ID="ID_507299995" MODIFIED="1535636897708" TEXT="kann grundsätzlich nicht alle Fälle abdecken">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
wenn nämlich das "Expandieren" 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> Komponenten zusammen
|
|
</p>
|
|
<p>
|
|
|
|
</p>
|
|
<p>
|
|
Standard-Beispiel: Property-Panel
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1535636904118" ID="ID_489559609" MODIFIED="1535636933948" 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" ID="ID_913979725" MODIFIED="1535636244698" 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 "expand/collapse"-Funktionalität abstrahiert"/>
|
|
<node CREATED="1535637406019" ID="ID_1125726861" MODIFIED="1535637415126" TEXT="ermö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ü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 "Reveal"-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ählen
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1535638228558" ID="ID_1027845785" MODIFIED="1535638283984" 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ösung">
|
|
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
|
|
<icon BUILTIN="forward"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node COLOR="#435e98" CREATED="1535731363267" ID="ID_603236457" MODIFIED="1535731485315" TEXT="Lö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="1535731492690" TEXT="Widget hält einen Expander-Funktor"/>
|
|
<node CREATED="1535731402126" ID="ID_1177558244" MODIFIED="1535731498221" TEXT="damit ist eine Standard-Impl von Tangible::doExpand() möglich">
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1535638412517" ID="ID_447101734" MODIFIED="1535737874447" 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="1535737870629" TEXT="Expander">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1535725906647" ID="ID_1380126396" MODIFIED="1535737872678" TEXT="Revealer">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1535726065753" ID="ID_578786610" MODIFIED="1535743677411" TEXT="default-Impl doExpand()">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node COLOR="#338800" CREATED="1535726077504" ID="ID_1806068721" MODIFIED="1535743682618" TEXT="prüfen: canExpand">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1535726086631" ID="ID_1753268128" MODIFIED="1535743684443" TEXT="Expander aufrufen">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1535743810027" ID="ID_778321095" MODIFIED="1535743836008" TEXT="bestehende default-Impl aus Widget/Controller entfernen">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1535725923421" ID="ID_298871659" MODIFIED="1535752076020" TEXT="Expander geeignet verdrahten">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node COLOR="#435e98" CREATED="1535725940226" ID="ID_162482468" MODIFIED="1535750016792" TEXT="validiert das Design">
|
|
<icon BUILTIN="yes"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1535743705113" ID="ID_54369760" MODIFIED="1535749999498" TEXT="auch MockElm anpassen">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1535737902126" ID="ID_1001984094" MODIFIED="1535750031727" TEXT="Unit-Test">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1535750033829" ID="ID_1808097547" MODIFIED="1535750109787" TEXT="AbstractTangible_test::markState()">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node CREATED="1535750110787" ID="ID_1169665466" MODIFIED="1535750125766" TEXT="tested implizit die neue default-Implementierung mit">
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1534725101578" ID="ID_974315967" MODIFIED="1534725412673" TEXT="clearAll">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1534725131214" ID="ID_1479834475" MODIFIED="1534725417504" TEXT="addMsg">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1534725152139" ID="ID_887758432" MODIFIED="1534725420632" TEXT="addError">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1534725422454" ID="ID_1459967459" MODIFIED="1534725491846" TEXT="spezieller Markup">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1534725501467" ID="ID_1420459325" MODIFIED="1534725506867" TEXT="Bookmark speichern">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
</node>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1534725142756" ID="ID_343395831" MODIFIED="1534725674269" TEXT="clearInfoMsg">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1534725716254" ID="ID_1648079400" MODIFIED="1534725735604" TEXT="Fehler-Texte beiseite Speichern">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1534725675884" ID="ID_1549487041" MODIFIED="1534725711920" TEXT="Textbuffer leeren">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1534725690450" ID="ID_314460083" MODIFIED="1534725710992" TEXT="Fehler-Bookmarks erneut einsetzen">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
</node>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1534725160618" ID="ID_1981616896" MODIFIED="1534725672469" TEXT="turnError_into_InfoMsg">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1534725575098" ID="ID_383201596" MODIFIED="1534725585810" TEXT="Markup reduzieren">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1534725587112" ID="ID_31905080" MODIFIED="1534725593152" TEXT="Bookmarks entfernen">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
</node>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1534725180543" ID="ID_1442607312" MODIFIED="1534725302600" TEXT="triggerFlash">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1534725283337" ID="ID_1256364821" MODIFIED="1534725298760" TEXT="farbigen Rahmen">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
<node CREATED="1534725366734" ID="ID_951505172" MODIFIED="1534725377925" TEXT="vorläufig feste Farbe">
|
|
<icon BUILTIN="yes"/>
|
|
</node>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1534725292080" ID="ID_1462887421" MODIFIED="1534725297672" TEXT="timeout setzen">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
</node>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1534722011622" ID="ID_232472679" MODIFIED="1535756110798" TEXT="revealYourself">
|
|
<linktarget COLOR="#af6a8f" DESTINATION="ID_232472679" ENDARROW="Default" ENDINCLINATION="94;307;" ID="Arrow_ID_634173548" SOURCE="ID_898428560" STARTARROW="None" STARTINCLINATION="859;27;"/>
|
|
<icon BUILTIN="pencil"/>
|
|
<node COLOR="#338800" CREATED="1535726017256" ID="ID_899234988" MODIFIED="1535756045754" TEXT="default-Impl doReveal()">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node COLOR="#338800" CREATED="1535726035309" ID="ID_1034773573" MODIFIED="1535756048350" TEXT="prüfen canReveal">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1535726053483" ID="ID_628118697" MODIFIED="1535756052676" TEXT="Revealer aufrufen">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1535743810027" ID="ID_1786165843" MODIFIED="1535756056057" TEXT="bestehende default-Impl aus Widget/Controller entfernen">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1534722062911" ID="ID_1134044414" MODIFIED="1535725975155" TEXT="braucht Parent-Link">
|
|
<icon BUILTIN="button_cancel"/>
|
|
</node>
|
|
<node CREATED="1534722073526" ID="ID_1428186731" MODIFIED="1535725979353" TEXT="parent.reveal(this)">
|
|
<icon BUILTIN="button_cancel"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1535725982021" ID="ID_858097581" MODIFIED="1535756066541" TEXT="Revealer geeignet verdrahten">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node COLOR="#338800" CREATED="1535743705113" ID="ID_267884906" MODIFIED="1535756061190" TEXT="auch MockElm anpassen">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1535743754227" ID="ID_1964115972" MODIFIED="1535756064674" TEXT="doReveal(ID) API entfernen">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1535737911365" ID="ID_79619425" MODIFIED="1535737923428" TEXT="Unit-Test: AbtractTangible_test erweitern">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1535815055702" ID="ID_493114230" MODIFIED="1535815475299" TEXT="EventLog: Problem mit Backtracking">
|
|
<arrowlink COLOR="#ba8096" DESTINATION="ID_1041148737" ENDARROW="Default" ENDINCLINATION="-1705;-7489;" ID="Arrow_ID_1257144480" STARTARROW="None" STARTINCLINATION="838;114;"/>
|
|
<icon BUILTIN="flag-yellow"/>
|
|
</node>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1535756076321" ID="ID_1044092797" MODIFIED="1535756101199" TEXT="konkret was machen, damit man die Funktion sehen kann">
|
|
<icon BUILTIN="flag-pink"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1522936265009" ID="ID_433355936" MODIFIED="1522936276561" TEXT="Bang! -Button">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1533689031860" ID="ID_657232437" MODIFIED="1533689036552" TEXT="Implementierung">
|
|
<node COLOR="#338800" CREATED="1533689046050" ID="ID_32330448" MODIFIED="1533689051525" TEXT="ErrorLog-Widget">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1533689055601" ID="ID_335901895" MODIFIED="1533689061409" TEXT="InfoboxPanel anlegen">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node COLOR="#338800" CREATED="1534523190695" FOLDED="true" ID="ID_1941760302" MODIFIED="1534527439233" TEXT="ErrorLog bei Bedarf belegen">
|
|
<arrowlink COLOR="#88a8b3" DESTINATION="ID_1806645586" ENDARROW="Default" ENDINCLINATION="-186;-20;" ID="Arrow_ID_948128706" STARTARROW="None" STARTINCLINATION="-4;127;"/>
|
|
<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" ID="ID_1958771642" MODIFIED="1534524648697" TEXT="access-API">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1534523785342" ID="ID_1532375846" MODIFIED="1534524656476" TEXT="Löschen nicht vorgesehen">
|
|
<icon BUILTIN="yes"/>
|
|
</node>
|
|
<node CREATED="1534523790798" ID="ID_497989103" MODIFIED="1534523799758" TEXT="man kann ja das Panel schließ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="#338800" CREATED="1533689065976" ID="ID_1456563113" MODIFIED="1534119944991" TEXT="NotificationController im Wizzard ansiedeln">
|
|
<icon BUILTIN="full-1"/>
|
|
<node CREATED="1533768795377" ID="ID_377710833" MODIFIED="1533768810140" TEXT="wirklich ein eigenständiger Controller??">
|
|
<icon BUILTIN="help"/>
|
|
<node CREATED="1533768892227" ID="ID_1131924142" MODIFIED="1533768930833" TEXT="ja, macht Sinn">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
weil so sichergestellt ist, daß 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="1533771786813">
|
|
<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" ID="ID_1000961938" MODIFIED="1533771781272" TEXT="wohin?">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1533769130987" ID="ID_220812854" MODIFIED="1533769163306" TEXT="ctrl">
|
|
<icon BUILTIN="forward"/>
|
|
</node>
|
|
<node CREATED="1533769133802" ID="ID_643904873" MODIFIED="1533769166022" TEXT="interact">
|
|
<icon BUILTIN="button_cancel"/>
|
|
</node>
|
|
<node CREATED="1533769137338" ID="ID_918339492" MODIFIED="1533769168793" TEXT="workspace">
|
|
<icon BUILTIN="button_cancel"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1533689076590" ID="ID_321096443" MODIFIED="1534119951865" TEXT="mit Bus verdrahten und ID global konstant definieren">
|
|
<icon BUILTIN="full-2"/>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1533689098787" ID="ID_191346591" MODIFIED="1533689301486" TEXT="Empfangs-Logik im NotificationController">
|
|
<icon BUILTIN="full-3"/>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1534119968325" ID="ID_1630503080" MODIFIED="1534730011960" TEXT="Einrichtung">
|
|
<icon BUILTIN="pencil"/>
|
|
<node COLOR="#338800" CREATED="1534336479160" ID="ID_203145360" MODIFIED="1534527345585" 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="1534508409365" TEXT="als Funktor konfiguriert">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1534334822288" ID="ID_1305015272" MODIFIED="1534527003796" 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="1534525243617" 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;127;"/>
|
|
<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 BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1533689125583" FOLDED="true" ID="ID_1077285383" MODIFIED="1535814842908" TEXT="mit close-signal verdrahten">
|
|
<icon BUILTIN="stop-sign"/>
|
|
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1534629989468" ID="ID_1497889519" MODIFIED="1534630008024" 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: "<b>Schließen</b>"
|
|
</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" ID="ID_1711320497" MODIFIED="1534630202867" TEXT="was brauche ich?">
|
|
<node CREATED="1534630216909" ID="ID_1211516480" MODIFIED="1534630237569">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
wenn Log-Anzeige <i>verworfen</i> wird
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="forward"/>
|
|
<node CREATED="1534630507190" ID="ID_1710219381" MODIFIED="1534630516168" TEXT="aus dem umschließenden Container entfernt"/>
|
|
<node CREATED="1534630517045" ID="ID_435686246" MODIFIED="1534630526167" TEXT="und dann wirklich zerstört, nicht nur verborgen"/>
|
|
<node CREATED="1534630526995" ID="ID_626097783" MODIFIED="1534630535742" TEXT="zugehöriges Model wird ebenfalls zerstö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" ID="ID_333724082" MODIFIED="1534721330781" 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önnte kaputt sein"/>
|
|
<node CREATED="1534636033826" ID="ID_1327331647" MODIFIED="1534636037572" 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ä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" ID="ID_332877746" MODIFIED="1534630600819" 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" ID="ID_1602014175" MODIFIED="1534630925289" 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ält nur eine Referenz auf das DockItem"/>
|
|
<node CREATED="1534631014841" ID="ID_997149684" MODIFIED="1534631085070" TEXT="dieser Code ist gegenwärtig auskommentiert">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
er ist nämlich auch aufgerufen worden, nachdem die GTK-Loop bereits beendet war.
|
|
</p>
|
|
<p>
|
|
Dieser Code hat früher C-mäß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ä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" ID="ID_482488418" MODIFIED="1534632171240" TEXT="gtk_container_remove">
|
|
<node CREATED="1534632172396" ID="ID_1415075917" MODIFIED="1534632183158" TEXT="ä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ö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     
|
|
</p>
|
|
<p>
|
|
container can destroy that widget. If you want to use @widget     
|
|
</p>
|
|
<p>
|
|
again, you need to add a reference to it before removing it from  
|
|
</p>
|
|
<p>
|
|
a container, using g_object_ref(). If you don’t want to use @widget
|
|
</p>
|
|
<p>
|
|
again it’s usually more efficient to simply destroy it directly   
|
|
</p>
|
|
<p>
|
|
using gtk_widget_destroy() since this will remove it from the     
|
|
</p>
|
|
<p>
|
|
container and help break any circular reference count cycles.     
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1534632585779" ID="ID_1472646683" MODIFIED="1534632587041" TEXT="gtk_widget_destroy">
|
|
<node CREATED="1534632595042" ID="ID_818220639" MODIFIED="1534632609779" TEXT="macht praktisch nix"/>
|
|
<node CREATED="1534632593098" ID="ID_1924038071" MODIFIED="1534632594262" 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" ID="ID_1102539072" MODIFIED="1534721182274" 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>
|
|
"destroy" ist kein relevantes Konzept für GTK. Es gibt nur show()/hide().
|
|
</p>
|
|
<p>
|
|
|
|
</p>
|
|
<p>
|
|
Also müssen wir <i>explizit</i>
|
|
</p>
|
|
<ul>
|
|
<li>
|
|
eine Destroy-Signal bauen
|
|
</li>
|
|
<li>
|
|
dafür sorgen, daß 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ürde vom ErrorLog-dtor aufgerufen"/>
|
|
<node CREATED="1534721236063" ID="ID_1398832202" MODIFIED="1534721247336" TEXT="das wä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" ID="ID_1935193271" MODIFIED="1534729121908" TEXT="jeder Zugriff prüft WLink">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1534721417590" ID="ID_1471234946" MODIFIED="1534721567118" STYLE="fork" TEXT="das erü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="1535556768694" TEXT="Code durchgesehen: alle Zugriffe sauber">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
entweder sie laufen über den Getter,
|
|
</p>
|
|
<p>
|
|
oder sie prüfen den Zustand und machen nichts, wenn das Widget nicht da ist
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node CREATED="1534721435740" ID="ID_1066281960" MODIFIED="1534721509684" TEXT="Konvention: Fehlerlog-Widget zerstören">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...und nicht bloß inaktiv schalten.
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1534721528967" ID="ID_1984401497" MODIFIED="1534721870151" TEXT="verifizieren">
|
|
<arrowlink DESTINATION="ID_1360416196" ENDARROW="Default" ENDINCLINATION="417;34;" ID="Arrow_ID_1337668046" STARTARROW="None" STARTINCLINATION="-454;-9;"/>
|
|
<icon BUILTIN="flag-yellow"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1534721523435" ID="ID_679085788" MODIFIED="1534729998070" TEXT="dokumentieren">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1534721512505" ID="ID_1260021418" MODIFIED="1534721539161" TEXT="sofern es im Panel lebt, passiert das automatisch">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1533689146501" ID="ID_1371087868" MODIFIED="1533689151053" TEXT="bei Bedarf anzeigen">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1534636343111" ID="ID_1922277957" MODIFIED="1534636350863" TEXT="ebenfalls explizit zu bauen">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
<node CREATED="1534636352398" ID="ID_435790811" MODIFIED="1534636448600" TEXT="ä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="1534722142986" TEXT="reveal / revealYourself">
|
|
<arrowlink COLOR="#af6a8f" DESTINATION="ID_232472679" ENDARROW="Default" ENDINCLINATION="94;307;" ID="Arrow_ID_634173548" STARTARROW="None" STARTINCLINATION="859;27;"/>
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
<node CREATED="1534636377938" ID="ID_64685935" MODIFIED="1534636392354" TEXT="könnte Lumiera-Framework werden">
|
|
<icon BUILTIN="yes"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1534721937152" ID="ID_1396835945" MODIFIED="1534721944841" TEXT="macht aber nicht der Controller">
|
|
<icon BUILTIN="yes"/>
|
|
<node CREATED="1534721946351" ID="ID_1570295012" MODIFIED="1534721954170" TEXT="typisches OO-Design"/>
|
|
<node CREATED="1534721955070" ID="ID_1390682663" MODIFIED="1534722916337" TEXT="der Controller sagt nur "revealYourself"">
|
|
<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 BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1533689138950" ID="ID_580572298" MODIFIED="1534451630033" TEXT="status-Flag">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
<node CREATED="1534722574441" ID="ID_558411855" MODIFIED="1534722916336" 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 BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1534722791268" ID="ID_1074988560" MODIFIED="1534722909109" TEXT="Error-State">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1534722566362" HGAP="29" ID="ID_202753412" MODIFIED="1534722910293" TEXT="sichtbar" VSHIFT="-18">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1534119979555" ID="ID_1159164748" MODIFIED="1534725765116" TEXT="Controller-Interface">
|
|
<icon BUILTIN="pencil"/>
|
|
<node COLOR="#338800" CREATED="1534120150458" ID="ID_1083026482" MODIFIED="1535752367109" TEXT="Expander">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1534120150459" ID="ID_1182032725" MODIFIED="1534120202934" TEXT=""Allocate Widget if necessary, expand widget"">
|
|
<icon BUILTIN="info"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1535752333217" ID="ID_332486075" MODIFIED="1535752360062" TEXT="geeignet verdrahten für Delegation">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1535752347574" ID="ID_883461261" MODIFIED="1535752358566" TEXT="Expander im ErrorLog widget verwenden">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1534120150459" ID="ID_1466610963" MODIFIED="1535752377006" TEXT="doRevealYourself()">
|
|
<icon BUILTIN="pencil"/>
|
|
<node CREATED="1534120150460" ID="ID_1726008784" MODIFIED="1534120253931">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
<b><font color="#ae1414">TODO</font></b>: how can the Log-Widget be 'revealed'??
|
|
</p>
|
|
<p>
|
|
Possibly allocate Widget, expand it. But how to make it visible?
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1534120150457" ID="ID_1499287865" MODIFIED="1534725759893" TEXT="doReset()">
|
|
<icon BUILTIN="pencil"/>
|
|
<node CREATED="1534120150458" ID="ID_1390376483" MODIFIED="1534120202934" TEXT=""Clear log contents, collapse widget, clear error state""">
|
|
<icon BUILTIN="info"/>
|
|
</node>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1534120150462" ID="ID_1528884346" MODIFIED="1534725759894" TEXT="doMsg(text)">
|
|
<icon BUILTIN="pencil"/>
|
|
<node CREATED="1534120150462" ID="ID_1226643824" MODIFIED="1534120202934" TEXT=""Possibly allocate Widget, place text into its buffer. No need to expand"">
|
|
<icon BUILTIN="info"/>
|
|
</node>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1534120150463" ID="ID_183847307" MODIFIED="1534725759894" TEXT="doClearMsg()">
|
|
<icon BUILTIN="pencil"/>
|
|
<node CREATED="1534120150463" ID="ID_1378278687" MODIFIED="1534120202934" TEXT=""remove all mere information messages"">
|
|
<icon BUILTIN="info"/>
|
|
</node>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1534120150463" ID="ID_1967851591" MODIFIED="1534725759893" TEXT="doErr(text)">
|
|
<icon BUILTIN="pencil"/>
|
|
<node CREATED="1534120150463" ID="ID_764543121" MODIFIED="1534120282524">
|
|
<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"
|
|
</li>
|
|
</ul>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="info"/>
|
|
</node>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1534120150464" ID="ID_1675673289" MODIFIED="1534725759893" TEXT="doClearErr()">
|
|
<icon BUILTIN="pencil"/>
|
|
<node CREATED="1534120150465" ID="ID_1858186015" MODIFIED="1534120202932" TEXT=""clear error state. If widget exists, turn all error entries into mere information entries"">
|
|
<icon BUILTIN="info"/>
|
|
</node>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1534120150465" ID="ID_1862649971" MODIFIED="1534725759893" TEXT="doFlash()">
|
|
<icon BUILTIN="pencil"/>
|
|
<node CREATED="1534120150465" ID="ID_222097969" MODIFIED="1534120315751">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
"If widget exists: expand it, trigger its flash function (paint with timeout).
|
|
</p>
|
|
<p>
|
|
<b><font color="#951c1c">TODO</font></b> also doRevealYourself."
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="info"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1534334029619" ID="ID_1981930639" MODIFIED="1534527104730" TEXT="ErrorLogView vorläufig...">
|
|
<arrowlink COLOR="#628195" DESTINATION="ID_1745777873" ENDARROW="Default" ENDINCLINATION="245;349;" ID="Arrow_ID_1743659141" STARTARROW="None" STARTINCLINATION="397;197;"/>
|
|
<icon BUILTIN="flag-yellow"/>
|
|
</node>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1533689164394" ID="ID_405297881" MODIFIED="1533689307645" TEXT="in NotificationService integrieren">
|
|
<icon BUILTIN="full-4"/>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1533689225658" ID="ID_662017160" MODIFIED="1533689310654" TEXT="Pling! -Button">
|
|
<icon BUILTIN="full-5"/>
|
|
<node CREATED="1533689235200" ID="ID_1760873318" MODIFIED="1533689242460" TEXT="in der Test-Timeline"/>
|
|
<node CREATED="1533689243871" ID="ID_1745090225" MODIFIED="1533689254514" TEXT="triggert Dummy-Command"/>
|
|
<node CREATED="1533689255174" ID="ID_821013695" MODIFIED="1533689263657" TEXT="dieses ruft die Notification_Facade auf"/>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1534721737507" ID="ID_1467431829" MODIFIED="1534721762112" TEXT="verifizieren">
|
|
<icon BUILTIN="full-6"/>
|
|
<node CREATED="1534721764680" ID="ID_237796687" MODIFIED="1534721771410" TEXT="Belegen der View"/>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1534721772238" ID="ID_130695962" MODIFIED="1534721838886" TEXT="Verbinden mit bestehendem InfoboxPanel">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1534721811969" ID="ID_1320259895" MODIFIED="1534721838431" TEXT="auch in einerm anderen Fenster">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1534721785596" ID="ID_1517054985" MODIFIED="1534721837983" TEXT="Erzeugen eines neuen InfoboxPanels">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1534721819264" ID="ID_1360416196" MODIFIED="1534721870151" TEXT="Panel durch Ersetzung zerstö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="flag-yellow"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1484797684438" HGAP="21" ID="ID_932852399" MODIFIED="1518487921054" TEXT="GUI-Shutdown implementieren" VSHIFT="13">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
bisher können wir das GUI nur <i>aktiv intern</i> schließen,
|
|
</p>
|
|
<p>
|
|
indem wir ein GTK-Signal erzeugen, das das Hauptfenster schließt
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<node CREATED="1485116867963" ID="ID_1146024699" MODIFIED="1518487921054" TEXT="bisher kann man nur das Fenster schließ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ß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="1518487921055" 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ß 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ür eine Nachricht?">
|
|
<icon BUILTIN="help"/>
|
|
<node CREATED="1501784324670" ID="ID_202531654" MODIFIED="1518487921055" TEXT="muß in das Protokoll passen"/>
|
|
<node CREATED="1501784333946" ID="ID_238263434" MODIFIED="1518487921055" TEXT="sollte nicht willkü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 "wir"?">
|
|
<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="1518487921055" TEXT="wir wollen keine globale Ebene">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...das war genau der Kern der "Plugin-Debatte".
|
|
</p>
|
|
<p>
|
|
Eine solche globale, flache, dynamisch gebundene Ebene
|
|
</p>
|
|
<p>
|
|
klingt nach <i>wahnsinnigen Möglichkeiten</i>, aber nur solange, bis man sich
|
|
</p>
|
|
<p>
|
|
eine einzige Funktion konkret durchdenkt: es lä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="33" ID="ID_1925973923" MODIFIED="1518487921055" TEXT="Mechanismus zum Schließ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="1518487921055" TEXT="dies mö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 BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1488419591265" HGAP="75" ID="ID_471609909" MODIFIED="1518487921055" VSHIFT="14">
|
|
<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" HGAP="23" ID="ID_392996871" MODIFIED="1533608413545" 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 -> 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->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="1518487921055" TEXT="man sollte aber keine Methoden überschreiben">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...nur eine <i>heuristische </i>Vermutung von mir
|
|
</p>
|
|
<p>
|
|
stützt sich auf folgenden Quellcode
|
|
</p>
|
|
<p>
|
|
|
|
</p>
|
|
<p>
|
|
Application::Application(const Glib::ustring& application_id, Gio::ApplicationFlags flags)
|
|
</p>
|
|
<p>
|
|
:
|
|
</p>
|
|
<p>
|
|
  // Mark this class as non-derived to allow C++ vfuncs to be skipped.
|
|
</p>
|
|
<p>
|
|
  //Note that GApplication complains about "" but allows NULL (0), so we avoid passing "".
|
|
</p>
|
|
<p>
|
|
  Glib::ObjectBase(0),
|
|
</p>
|
|
<p>
|
|
  Gio::Application(Glib::ConstructParams(custom_class_init(), "application_id", (application_id.empty() ? 0 : application_id.c_str()), "flags", GApplicationFlags(flags), static_cast<char*>(0))),
|
|
</p>
|
|
<p>
|
|
  m_argc(0),
|
|
</p>
|
|
<p>
|
|
  m_argv(0)
|
|
</p>
|
|
<p>
|
|
{
|
|
</p>
|
|
<p>
|
|
  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ß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" ID="ID_1903744710" MODIFIED="1518487921055" TEXT="kommt mir komisch vor">
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
<node CREATED="1493754799439" ID="ID_288205807" MODIFIED="1518487921055" TEXT="das "riecht" nach Framework"/>
|
|
<node CREATED="1493754808373" ID="ID_998804989" MODIFIED="1533608413546" TEXT=""wir machen bequem alles für Sie"">
|
|
<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="1533608416118" 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 übereinander"/>
|
|
<node CREATED="1493759581123" ID="ID_1296466414" MODIFIED="1518487921055" TEXT="ich traue den Gnome-Leuten nicht über den Weg"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1493754820476" ID="ID_608560419" MODIFIED="1533608413548" TEXT="brauche ich überhaupt eine Gtk::Application">
|
|
<icon BUILTIN="help"/>
|
|
<node CREATED="1493756483852" ID="ID_1428028027" MODIFIED="1518487921055" TEXT="naja, man kann GTK zu Fuß verwenden"/>
|
|
<node CREATED="1493756499745" ID="ID_633405815" MODIFIED="1518487921055" TEXT="aber gtk::Application zeigt, wie"/>
|
|
<node CREATED="1493759629357" FOLDED="true" ID="ID_1297670007" MODIFIED="1533608416120" 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ß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ß auch machen">
|
|
<icon BUILTIN="yes"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1495215099003" ID="ID_1971256545" MODIFIED="1533608413550" TEXT="brauche ich ü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="1533608416122" TEXT="ist eine gio::ActionGroup">
|
|
<node CREATED="1495215149281" ID="ID_1774523135" MODIFIED="1518487921056" TEXT="man kann Aktionen hinzufü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="1533608416124" 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ür uns relevant, manches davon stört">
|
|
<icon BUILTIN="yes"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1495218672747" HGAP="-13" ID="ID_1786316132" MODIFIED="1518487921056" TEXT="Beschluß" 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ündlich überprüft und dokumentiert">
|
|
<arrowlink COLOR="#70dcb9" DESTINATION="ID_889790361" ENDARROW="Default" ENDINCLINATION="1308;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 ü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ö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" HGAP="28" ID="ID_506541774" MODIFIED="1518487921056" TEXT="neuer UiManager" VSHIFT="14">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1485452508180" ID="ID_549617075" MODIFIED="1518487921056" TEXT="ist front-end dafü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ür NotificationFacade ermöglichen"/>
|
|
</node>
|
|
<node CREATED="1485452536138" ID="ID_599315721" MODIFIED="1518487921056" TEXT="wird dafür zustä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 BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1493762490205" ID="ID_869056268" MODIFIED="1534511296643" 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 CREATED="1493762951293" HGAP="69" ID="ID_1772990353" MODIFIED="1518487921056" TEXT="Entscheidung">
|
|
<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="1826;-6782;" 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="1534511297619" TEXT="von einem Gio::Application ableiten">
|
|
<arrowlink COLOR="#6d7495" DESTINATION="ID_1476863246" ENDARROW="Default" ENDINCLINATION="1126;-247;" ID="Arrow_ID_1941890495" STARTARROW="None" STARTINCLINATION="-231;14;"/>
|
|
<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 übernemen">
|
|
<icon BUILTIN="full-2"/>
|
|
</node>
|
|
<node CREATED="1493770431607" ID="ID_117937910" MODIFIED="1518487921056" TEXT="(bei Bedarf) später dann durch Gio::Application ersetzen">
|
|
<icon BUILTIN="full-3"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1481320772830" HGAP="21" ID="ID_1607125695" MODIFIED="1518487921056" 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="1518487921056">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
setzt <i>aktivierten</i> Dispatcher <font color="#6e080d">zwingend</font> voraus
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
es genügt definitiv nicht, nur die Dispatcher-Komponente(Schnittstelle) erreichen zu können.
|
|
</p>
|
|
<p>
|
|
Jede Operation, die über dieses externe Interface bereitsteht, benö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="1518487921056" TEXT="implizite Bindung an eine Session-Instanz">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...und zwar wirklich sehr implizit,
|
|
</p>
|
|
<p>
|
|
nämlich über die Identität (IDs) der Command-Parameter.
|
|
</p>
|
|
<p>
|
|
Das heißt, ein eingehendes Command paß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="1518487921056" 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ßt im Klartext, alle Clients müssen darauf vorbereitet sein, daß diese Schnittstelle
|
|
</p>
|
|
<p>
|
|
<i>jederzeit</i> wegbrechen kann, was dann heißt, daß irgend ein Aufruf eine Exception wirft
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1481320847724" HGAP="42" ID="ID_545146501" MODIFIED="1518487921056" 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="1518487921057" 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ß 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ß alle Operationen durchschleifen
|
|
</p>
|
|
<p>
|
|
oder muß PImpl als Interface exponieren
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1481767831105" ID="ID_1351930491" MODIFIED="1518487921057" 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" HGAP="45" ID="ID_1632600003" MODIFIED="1518487921057" TEXT="hochfahren" VSHIFT="-3">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1481509921211" ID="ID_1515469097" MODIFIED="1525124214734">
|
|
<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="1512926191669" 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ängt wohl zu viel darunter, um es gleich ganz abschließen zu können.
|
|
</p>
|
|
<p>
|
|
Aber ich <i>akzeptiere</i> 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ä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> "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ührt Commands aus"/>
|
|
<node CREATED="1482464442438" ID="ID_1339868449" MODIFIED="1482464449049" TEXT="startet den Builder"/>
|
|
</node>
|
|
<node CREATED="1481599421021" ID="ID_461768132" MODIFIED="1512926191671" TEXT="Locking klären">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1481684383530" ID="ID_236117" MODIFIED="1512926191672" TEXT="zwei unabhängige Locks">
|
|
<icon BUILTIN="yes"/>
|
|
<node CREATED="1481684391921" ID="ID_138369898" MODIFIED="1481684442846" TEXT="Front-End">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
das Lock sorgt hier für konsistenten Zustand und Sichtbarkeit (memory barrier)
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1481684394544" ID="ID_1314197501" MODIFIED="1481684422640" 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ö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 ==> Deadlock">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node CREATED="1483581573147" ID="ID_989149672" MODIFIED="1512926191673" TEXT="durch Umbau gelö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ß das äuß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 überflüssig"/>
|
|
<node CREATED="1483581640739" ID="ID_560356092" MODIFIED="1483581652445" TEXT="das Objekt wird in einem tail-call gelö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 "sich selber löschen"">
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1482464502542" ID="ID_284397306" MODIFIED="1531584182082" TEXT="Vorsicht beim Schließ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 öffnet">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1481686982097" ID="ID_1925999031" MODIFIED="1481687002238" 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 öffnet, wird der Dispatcher aktiviert">
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
<node CREATED="1481687005813" ID="ID_1108477992" MODIFIED="1481687081246" TEXT="Entscheidung: Sesion-lifecycle und Dispatcher sind unabhä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ü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="1518487921057" 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ß 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ß SessionCommandService schließen
|
|
</p>
|
|
<p>
|
|
<i>bevor</i> 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 -> noexcept"/>
|
|
<node CREATED="1481777210447" ID="ID_1392452935" MODIFIED="1518487921057" TEXT="sicherstellen daß shutdown nicht blockt">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
1/2017 Review durchgeführt und Logik überarbeitet.
|
|
</p>
|
|
<p>
|
|
Einziger Risikofaktor ist nun, wenn beim Schließ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ückmeldung kommt u.U niemals an, und damit bleiben wir
|
|
</p>
|
|
<p>
|
|
am Ende von main() einfach hängen.
|
|
</p>
|
|
<p>
|
|
|
|
</p>
|
|
<p>
|
|
<i>Ich halte diese Fälle aber für in der Praxis nicht relevant,</i>  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 ü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ß ein einfacher Aufruf wirklich klappt">
|
|
<icon BUILTIN="yes"/>
|
|
</node>
|
|
<node CREATED="1483748323014" ID="ID_1031176077" MODIFIED="1518487921057" TEXT="Nachrichten vom UI-Bus entnehmen">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node COLOR="#520262" CREATED="1483908814960" HGAP="34" ID="ID_430949603" MODIFIED="1518487921057" 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ö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ändlich, mehrstufig"/>
|
|
<node CREATED="1483909263620" ID="ID_1628441605" MODIFIED="1518487921057" TEXT="erzwingt mehrfache Indirektion"/>
|
|
<node CREATED="1483909333227" ID="ID_473681935" MODIFIED="1518487921057" TEXT="Umpacken -> Record -> Tuple -> 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 BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1483909585362" HGAP="1" ID="ID_1047452263" MODIFIED="1518487921058" TEXT="muß sich noch rechtfertigen" VSHIFT="11">
|
|
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
|
|
<icon BUILTIN="flag-yellow"/>
|
|
<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önnte Verallgemeinerungen im UI generieren"/>
|
|
<node CREATED="1483909714201" ID="ID_1677179961" MODIFIED="1518487921058" TEXT="könnte UI-Ablä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="1518487921058" 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> 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<GenNode>"/>
|
|
<node CREATED="1483910056243" ID="ID_967619584" MODIFIED="1518487921058" TEXT="da Record eine Payload ist"/>
|
|
<node CREATED="1483910117819" ID="ID_117939525" MODIFIED="1518487921058" TEXT="man könnte....">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
....über einen GenNode-Visitor nachdenken
|
|
</p>
|
|
<p>
|
|
<b>aber</b>
|
|
</p>
|
|
<ul>
|
|
<li>
|
|
nicht jetzt
|
|
</li>
|
|
<li>
|
|
das Problem müßte mehrfach auftreten
|
|
</li>
|
|
<li>
|
|
könnte zu Switch-On-Type-programming fü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-Ü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" HGAP="88" ID="ID_267402281" MODIFIED="1518487921058" TEXT="Command-Instanz-Management" VSHIFT="-8">
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
<node CREATED="1483910266799" ID="ID_86909318" MODIFIED="1518487921058" TEXT="wie funktioniert'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ß 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ß 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=""natürlich" nah am Command-Framework"/>
|
|
<node CREATED="1483911208546" ID="ID_380202969" MODIFIED="1518487921058" TEXT="weiß 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> 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="1533303593408">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...das wäre eine <b>Protokoll-Erweiterung</b>
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<linktarget COLOR="#e9ba2d" DESTINATION="ID_242219866" ENDARROW="Default" ENDINCLINATION="-944;1604;" ID="Arrow_ID_1617518648" SOURCE="ID_1479669922" STARTARROW="None" STARTINCLINATION="3617;-1097;"/>
|
|
</node>
|
|
<node CREATED="1483927472385" HGAP="30" ID="ID_774425061" MODIFIED="1518487921058" VSHIFT="13">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
vertagt; Ticket <font color="#c52a05">#1058</font>
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="bell"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1483755390640" ID="ID_1882657994" MODIFIED="1518487921058" TEXT="Vorlage">
|
|
<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="1518487921058" TEXT="wenn man das Design akzeptiert">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...das heiß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="-105" ID="ID_458362835" MODIFIED="1518487921058" TEXT="Unit-Test" VSHIFT="12">
|
|
<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 ü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 Übung...">
|
|
<icon BUILTIN="ksmiletris"/>
|
|
</node>
|
|
<node CREATED="1484377336983" ID="ID_823071776" MODIFIED="1518487921058" TEXT="Hilfsmittel fü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 überholen sich"/>
|
|
<node CREATED="1484377389056" ID="ID_930164551" MODIFIED="1518487921059" TEXT="Command instanzen dü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" HGAP="-14" ID="ID_726798260" MODIFIED="1518487921059" TEXT="Ausgestaltung" VSHIFT="29">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1482465840843" ID="ID_818984499" MODIFIED="1518487921059" 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="1518487921059" TEXT="Zukunft: partiell schließen">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
es wäre denkbar, an dieser Stelle
|
|
</p>
|
|
<p>
|
|
unvollständige Argument-Tupel zu akzeptieren
|
|
</p>
|
|
<p>
|
|
und die Argumente von links her zu schließen (currying)
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1482464696668" ID="ID_1191503480" MODIFIED="1518487921059" TEXT="müssen in Command-Objekte ü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" HGAP="35" ID="ID_62981197" MODIFIED="1518487921059" TEXT="Weiterungen" VSHIFT="11">
|
|
<icon BUILTIN="hourglass"/>
|
|
<node CREATED="1484377485339" ID="ID_414407137" MODIFIED="1518487921059" TEXT="Commands mit verschiedener Prioritä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 BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1482465854513" HGAP="26" ID="ID_1477532018" MODIFIED="1518487921059" 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="1518487921059" TEXT="...dient der Sicherheit">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
denn es erzwingt,
|
|
</p>
|
|
<p>
|
|
daß die betreffenden Commands schon erzeugt und registriert sein mü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ßfolgerung: direkter Aufruf mit Cmd-ID genü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ä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 ü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äre mö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ängen">
|
|
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
|
|
</node>
|
|
<node CREATED="1482466347767" ID="ID_755953852" MODIFIED="1518487921059" TEXT="C++ ist das maß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 CREATED="1481320870369" HGAP="17" ID="ID_454465129" MODIFIED="1518487921059" TEXT="Rolle des "Model" klären" VSHIFT="20">
|
|
<node CREATED="1484882430390" HGAP="56" ID="ID_836665320" MODIFIED="1518487921059" TEXT="Diff-Nachrichten" VSHIFT="-23">
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1484882437421" ID="ID_1948154354" MODIFIED="1518487921059" TEXT="#1066 concept to pass diff messages">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
</node>
|
|
<node CREATED="1484882477368" ID="ID_224140586" MODIFIED="1518487921059" TEXT="Probleme">
|
|
<node CREATED="1484882480568" ID="ID_1399902588" MODIFIED="1518487921059" TEXT="unbekannter Quelltyp"/>
|
|
<node CREATED="1484882487911" ID="ID_651657111" MODIFIED="1518487921059" TEXT="Storage-Management"/>
|
|
<node CREATED="1484882493501" ID="ID_935689465" MODIFIED="1518487921059" TEXT="Ü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="1518487921059" TEXT="Callback aus dem Event-Thread"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1477784829157" ID="ID_1998357180" MODIFIED="1518487921059" TEXT="Icon-Laden modernisieren"/>
|
|
<node CREATED="1477784821925" ID="ID_1871474250" MODIFIED="1518487921059" TEXT="Styling aufräumen">
|
|
<node CREATED="1477784846162" ID="ID_1164942946" MODIFIED="1534336601077" TEXT="siehe Info zum CssProvider">
|
|
<arrowlink COLOR="#a9b4c1" DESTINATION="ID_1810760662" ENDARROW="Default" ENDINCLINATION="1600;-25;" ID="Arrow_ID_1610122569" STARTARROW="None" STARTINCLINATION="-756;164;"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1534336252375" HGAP="27" ID="ID_1755017021" MODIFIED="1534336284856" TEXT="Hilfsmittel">
|
|
<node CREATED="1534336320373" ID="ID_708892482" MODIFIED="1534336324377" TEXT="Grundbausteine"/>
|
|
<node CREATED="1534336325916" ID="ID_762624766" MODIFIED="1534336335351" TEXT="Bindeglieder"/>
|
|
<node CREATED="1534336335963" ID="ID_1176525116" MODIFIED="1534336338575" TEXT="Werkzeug">
|
|
<node COLOR="#338800" CREATED="1534334810537" FOLDED="true" ID="ID_1326202399" MODIFIED="1534436661859" 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ß 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üft">
|
|
<icon BUILTIN="yes"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1485126385235" HGAP="38" ID="ID_548720270" MODIFIED="1518487921059" 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;"/>
|
|
<icon BUILTIN="bell"/>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1485126400233" ID="ID_885004423" MODIFIED="1518487921059" TEXT="unsauberes Design">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
<node CREATED="1485126410424" ID="ID_1158773288" MODIFIED="1518487921059" TEXT="wir haben mehrere Fenster">
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
<node CREATED="1485126418431" ID="ID_1145950660" MODIFIED="1518487921059" 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="1518487921059" TEXT="Aktionen für jedes top-level Window repliziert">
|
|
<icon BUILTIN="pencil"/>
|
|
<node CREATED="1485549646739" ID="ID_1714638860" MODIFIED="1518487921059" TEXT="Abhängigkeit vom Fenster identifizieren"/>
|
|
<node CREATED="1485549666424" ID="ID_1909892697" MODIFIED="1518487921059" TEXT="generisch machen"/>
|
|
<node CREATED="1485549672943" ID="ID_1716269299" MODIFIED="1518487921059" TEXT="Aktionen in UiManager verschieben"/>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1485126429445" ID="ID_832156304" MODIFIED="1518487921059" TEXT="aufräumen">
|
|
<icon BUILTIN="flag-pink"/>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1485126506699" ID="ID_1776936645" MODIFIED="1518487921059" TEXT="#1067 rearrange GUI Application top-level">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1485126573818" ID="ID_206480879" MODIFIED="1518487921059" 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="1518487921059" TEXT="#1064 investigate WindowManager lifecycle">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1493752896125" ID="ID_1471478347" MODIFIED="1518487921059" TEXT="erledigt"/>
|
|
<node CREATED="1493752899224" ID="ID_83018735" MODIFIED="1518487921059" TEXT="WindowManager war gar nicht so wichtig"/>
|
|
<node CREATED="1493752906736" ID="ID_1191055389" MODIFIED="1518487921059" TEXT="er ist jetzt nur noch eine Fenster-Liste"/>
|
|
<node CREATED="1504368788471" ID="ID_1811705494" MODIFIED="1518487921059" TEXT="und die heißt jetzt WindowLocator"/>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1485550950793" ID="ID_50100583" MODIFIED="1518487921059" TEXT="#1048 rectify UI Lifecycle">
|
|
<icon BUILTIN="hourglass"/>
|
|
<node COLOR="#338800" CREATED="1485550968230" ID="ID_164246989" MODIFIED="1518487921059" 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="1518487921059" TEXT="Blocker entfernen">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node CREATED="1485562029644" ID="ID_1022779645" MODIFIED="1518487921059" 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="1518487921059" TEXT="durch fortgesetztes Refactoring gelöst">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1485550992299" ID="ID_1685125156" MODIFIED="1518487921059" TEXT="es blocken">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1485550999762" ID="ID_249139218" MODIFIED="1518487921059" TEXT="WindowManager">
|
|
<icon BUILTIN="button_cancel"/>
|
|
</node>
|
|
<node CREATED="1485551007297" ID="ID_1398242341" MODIFIED="1518487921059" TEXT="Project & Controller">
|
|
<icon BUILTIN="button_cancel"/>
|
|
</node>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1493853541747" ID="ID_689819683" MODIFIED="1518487921059" TEXT="TODO">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
<node CREATED="1493853548739" ID="ID_949985796" MODIFIED="1518487921059" TEXT="Project & Controller restlos entfernen">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...wartet noch darauf,
|
|
</p>
|
|
<p>
|
|
daß die alte, obsolete Timeline zurückgebaut ist
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="hourglass"/>
|
|
</node>
|
|
<node CREATED="1493853590149" ID="ID_1075149702" MODIFIED="1518487921059" 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öffnet werden konnte
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1504191345606" ID="ID_1249897876" MODIFIED="1534511409141" 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="1518487921060" 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="1534511335350">
|
|
<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="1518487921060" TEXT="obsoletes Project & Controller">
|
|
<node CREATED="1485551030086" ID="ID_1052165402" MODIFIED="1518487921060" TEXT="in GtkLumiera definiert"/>
|
|
<node CREATED="1485551035413" ID="ID_1861899005" MODIFIED="1518487921060" TEXT="tatsächlich im Panel (Basisklasse) gespeichert"/>
|
|
<node CREATED="1485551056834" ID="ID_538186909" MODIFIED="1518487921060" TEXT="tatsächlich nur im alten TimelinePannel gebraucht"/>
|
|
<node COLOR="#338800" CREATED="1485551067353" ID="ID_1684200224" MODIFIED="1518487921060" TEXT="Übergangslösung">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1485551080687" ID="ID_405147511" MODIFIED="1518487921060" TEXT="als Felder dort">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node CREATED="1485551085454" ID="ID_472031977" MODIFIED="1518487921060" TEXT="ist ohnehin defunkt">
|
|
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
<node CREATED="1485551096445" ID="ID_258972556" MODIFIED="1518487921060" TEXT="dann Parameter entfernen"/>
|
|
</node>
|
|
</node>
|
|
<node COLOR="#ae1856" CREATED="1485126686643" ID="ID_405470138" MODIFIED="1518487921060" 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="1518487921060" TEXT="komplett?" VSHIFT="39">
|
|
<icon BUILTIN="help"/>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1493762490205" ID="ID_159568066" MODIFIED="1534511296643" 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="flag-yellow"/>
|
|
<node CREATED="1495234856782" ID="ID_1605922951" MODIFIED="1518487921060" TEXT="machen wir bisher nicht"/>
|
|
<node CREATED="1495234865717" ID="ID_1261122199" MODIFIED="1518487921060" TEXT="ist das notwendig?"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1485463620403" ID="ID_40172420" MODIFIED="1518487921060" TEXT="zentralen UiManager einfü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="1518487921060" TEXT="GtkLumiera" VSHIFT="-26">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1485454326827" ID="ID_1493501410" MODIFIED="1518487921060" TEXT="Applikation == Lebenszyklus">
|
|
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
|
|
<icon BUILTIN="info"/>
|
|
</node>
|
|
<node CREATED="1485463515929" ID="ID_785456397" MODIFIED="1518487921060" TEXT="für die Verdrahtung zuständig"/>
|
|
<node CREATED="1485463525736" ID="ID_1608786246" MODIFIED="1518487921060" TEXT="hält alle zentralen Komponenten"/>
|
|
<node CREATED="1493846135327" ID="ID_832439809" MODIFIED="1518487921060" TEXT="initialisiert und startet Backbone"/>
|
|
<node CREATED="1485463537111" ID="ID_929585985" MODIFIED="1518487921060" TEXT="wird nie selber direkt angesprochen"/>
|
|
</node>
|
|
<node CREATED="1485126457025" ID="ID_1698853761" MODIFIED="1518487921060" 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;"/>
|
|
<icon BUILTIN="idea"/>
|
|
<node CREATED="1485454242368" ID="ID_482639947" MODIFIED="1518487921060" TEXT="Hub für Framework">
|
|
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
|
|
<icon BUILTIN="info"/>
|
|
</node>
|
|
<node CREATED="1485454284961" ID="ID_940728768" MODIFIED="1518487921060" TEXT="es gibt nur einen">
|
|
<icon BUILTIN="yes"/>
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
<node CREATED="1485454375917" ID="ID_1935695209" MODIFIED="1518487921060" TEXT="erbt von Gtk::UiManager">
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
</node>
|
|
<node COLOR="#435e98" CREATED="1533303793015" ID="ID_433225506" MODIFIED="1533306068667" 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="1534511297619" 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="-231;14;"/>
|
|
<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="1518487921060" TEXT="fällt anscheinend ersatzlos weg"/>
|
|
<node CREATED="1493768625564" ID="ID_1620270152" MODIFIED="1518487921060" TEXT="Verdacht: stattdessen Gtk::Application"/>
|
|
<node CREATED="1495218227391" ID="ID_1156276489" MODIFIED="1518487921060" TEXT="Beschluß: vorerst Gtk::Action / ActionGroup weiter verwenden">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
<u>Begrü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ß.
|
|
</p>
|
|
<p>
|
|
Ich werde den Verdacht nicht los, daß hier das Ziel verfolgt wird, eine "Action" von den
|
|
</p>
|
|
<p>
|
|
Grenzen der Applikation zu befreien und direkt in den Desktop zu integrieren.
|
|
</p>
|
|
<p>
|
|
Mit Desktop ist natürlich der Gnome-Desktop gemeint. Was diesen Verdacht bestärkt,
|
|
</p>
|
|
<p>
|
|
ist, daß Gio::Application sofort auch gleich eine dBus-Verbindung hochfährt.
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="yes"/>
|
|
</node>
|
|
<node CREATED="1485457105010" HGAP="49" ID="ID_202831328" MODIFIED="1518487921060" TEXT="neuer Weg" VSHIFT="21">
|
|
<icon BUILTIN="info"/>
|
|
<node CREATED="1485457108425" ID="ID_152284167" MODIFIED="1518487921060" TEXT="man erzeugt Gio::SimpleActionGroup"/>
|
|
<node CREATED="1485457141853" ID="ID_1841602685" MODIFIED="1518487921060" TEXT="man fügt diese dem Fenster hinzu"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1485454243767" HGAP="43" ID="ID_3699127" MODIFIED="1518487921060" TEXT="Aufgabe: konsistentes UI" VSHIFT="-4">
|
|
<node CREATED="1485454248335" ID="ID_623536019" MODIFIED="1518487921060" TEXT="globales Menü"/>
|
|
<node CREATED="1485454259637" ID="ID_432211008" MODIFIED="1518487921060" TEXT="globale Toolbar"/>
|
|
<node CREATED="1485454252789" ID="ID_310049457" MODIFIED="1518487921060" TEXT="globale Aktionen"/>
|
|
<node CREATED="1485454263876" ID="ID_543704434" MODIFIED="1518487921060" TEXT="globale Keybindings"/>
|
|
</node>
|
|
<node CREATED="1493768943479" ID="ID_374108201" MODIFIED="1518487921060" TEXT="Plan">
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1493768946415" ID="ID_880915214" MODIFIED="1518487921060" 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="1518487921060" TEXT="sollte dann...">
|
|
<node CREATED="1493768965036" ID="ID_1457175098" MODIFIED="1518487921060" TEXT="das erste Fenster öffnen"/>
|
|
<node CREATED="1493768972691" ID="ID_1810145809" MODIFIED="1518487921060" 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="1518487921060" 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>
|
|
</node>
|
|
<node CREATED="1489460861250" HGAP="91" ID="ID_771159819" MODIFIED="1518487921060" TEXT="globaler Kontext" VSHIFT="-26">
|
|
<font NAME="SansSerif" SIZE="15"/>
|
|
<icon BUILTIN="idea"/>
|
|
<icon BUILTIN="pencil"/>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1485549049388" ID="ID_530209145" MODIFIED="1518487921060" TEXT="Problem: Aktionen binden">
|
|
<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>"das aktuelle"</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="1518487921060" VSHIFT="-13">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
Lö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ä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="1518487921060" TEXT="Lösungs-Detail: dynamisch koppeln" VSHIFT="19">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...meint:
|
|
</p>
|
|
<p>
|
|
wir müssen zur Aufrufzeit einer Aktion
|
|
</p>
|
|
<p>
|
|
an den aktuellen Kontext ankoppeln können.
|
|
</p>
|
|
<p>
|
|
|
|
</p>
|
|
<p>
|
|
Das heißt, der UiManager muß im Stande sein,
|
|
</p>
|
|
<p>
|
|
diesen "aktuellen Kontext" 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ä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ß, daß 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ß bloß am Leben bleiben"/>
|
|
<node CREATED="1486063841293" ID="ID_1675242982" MODIFIED="1518487921061" TEXT="hat nach Init nichts mehr zu tun"/>
|
|
</node>
|
|
<node CREATED="1486063858283" HGAP="42" ID="ID_130675776" MODIFIED="1518487921061" TEXT="ist Impl-Detail" VSHIFT="5">
|
|
<node CREATED="1486063886407" ID="ID_1294385692" MODIFIED="1518487921061" TEXT="sollte aus den weitverbreiteten Header-Includes raus"/>
|
|
<node CREATED="1486063911188" ID="ID_1391435276" MODIFIED="1518487921061" TEXT="gegenwä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 CREATED="1486063950103" ID="ID_57649689" MODIFIED="1518487921061" TEXT="zwei Modelle">
|
|
<node CREATED="1486063954062" ID="ID_1174765379" MODIFIED="1518487921061" 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ü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üs"/>
|
|
<node CREATED="1486064337363" ID="ID_551504727" MODIFIED="1518487921061" TEXT="Closure fü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="1518487921061" 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äre schön aber nicht ratsam">
|
|
<icon BUILTIN="button_cancel"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1486064478968" ID="ID_1610028838" MODIFIED="1518487921061" 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="1518487921061" TEXT="Zuständigkeit">
|
|
<icon BUILTIN="yes"/>
|
|
<node CREATED="1487039071039" ID="ID_1884426258" MODIFIED="1518487921061" TEXT="Herstellen des Hauptmenüs"/>
|
|
<node CREATED="1487039079759" ID="ID_471335369" MODIFIED="1518487921061" TEXT="Binden der Aktionen"/>
|
|
<node CREATED="1487039084285" ID="ID_555104373" MODIFIED="1518487921061" TEXT="Closure fü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="1518487921061" 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ß, welche Aktion wohin zu delegieren ist"/>
|
|
</node>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1488422770096" HGAP="56" ID="ID_53463593" MODIFIED="1518487921061" TEXT="#1085 solve setup of top-level menu actions" VSHIFT="-17">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1488423688763" ID="ID_1950800234" MODIFIED="1518487921061" TEXT="UI-Komponenten">
|
|
<node CREATED="1488423702977" ID="ID_292894978" MODIFIED="1518487921061" TEXT="TimelinePane">
|
|
<arrowlink COLOR="#a1543e" DESTINATION="ID_1753722831" ENDARROW="Default" ENDINCLINATION="1150;-267;" ID="Arrow_ID_912757548" STARTARROW="None" STARTINCLINATION="496;-77;"/>
|
|
</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="1518487921061" TEXT="Lifecycle-Aktionen">
|
|
<node CREATED="1488423747187" ID="ID_1351717245" MODIFIED="1518487921061" TEXT="UI schließ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="1518487921061" TEXT="Session-Aktionen">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1488423760105" ID="ID_1527724040" MODIFIED="1518487921061" TEXT="Speichern">
|
|
<node CREATED="1488492373919" ID="ID_1898515568" MODIFIED="1518487921061" TEXT="snapshot-Kommando an Session senden"/>
|
|
<node CREATED="1488494870418" ID="ID_1929432332" MODIFIED="1518487921061" 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ß doch die Architktur klären">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1488423763585" ID="ID_968726788" MODIFIED="1518487921061" TEXT="Schließen"/>
|
|
<node CREATED="1488494907118" ID="ID_1932633471" MODIFIED="1518487921061" 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="1518487921061" 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>Öffnen</i>
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1488423720319" ID="ID_1455353650" MODIFIED="1518487921061" TEXT="Sequence-Aktionen">
|
|
<node CREATED="1489461756655" ID="ID_1625364312" MODIFIED="1518487921061" TEXT="neue Sequenz">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1489461773213" ID="ID_344390825" MODIFIED="1518487921061" 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="1518487921061" 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="1518487921061" TEXT="Triggern">
|
|
<icon BUILTIN="forward"/>
|
|
<node CREATED="1489544261547" ID="ID_1624183619" MODIFIED="1518487921062" TEXT="wer">
|
|
<icon BUILTIN="help"/>
|
|
<node CREATED="1489544403984" ID="ID_1230750297" MODIFIED="1518487921062" TEXT=""ein UI-Element"">
|
|
<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ü-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="1518487921062" 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="1518487921062" TEXT="falls">
|
|
<icon BUILTIN="help"/>
|
|
<node CREATED="1489544722261" ID="ID_1263012116" MODIFIED="1518487921062" TEXT="ausführbar"/>
|
|
<node CREATED="1489544725860" ID="ID_1167910092" MODIFIED="1518487921062" TEXT="d.h. aktiviert"/>
|
|
<node CREATED="1489544826383" ID="ID_166753518" MODIFIED="1518487921062" TEXT="zwei verschiedene Effekte">
|
|
<icon BUILTIN="idea"/>
|
|
<node CREATED="1489544836757" ID="ID_1543872004" MODIFIED="1518487921062" TEXT="Ausführung abweisen">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...stattdessen einen Fehler-Indikator auslösen
|
|
</p>
|
|
<p>
|
|
(Beispiel "in-point fehlt")
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1489544910395" ID="ID_82086808" MODIFIED="1518487921062" TEXT="enable Action">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...das ist eine Reaktion,
|
|
</p>
|
|
<p>
|
|
die von einem managing Ui-Element ausgefü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="#eee5c3" COLOR="#990000" CREATED="1492461170141" ID="ID_740147771" MODIFIED="1518487921062" TEXT="der Anker">
|
|
<icon BUILTIN="hourglass"/>
|
|
<node CREATED="1492965703927" ID="ID_1023878270" MODIFIED="1518487921062" TEXT="auf später vertagt">
|
|
<icon BUILTIN="ksmiletris"/>
|
|
</node>
|
|
<node CREATED="1492965711791" ID="ID_965013716" MODIFIED="1518487921062" TEXT="InteractionControl">
|
|
<icon BUILTIN="forward"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1492461179404" ID="ID_1843144262" MODIFIED="1518487921062" TEXT="die neue Sequenz">
|
|
<node CREATED="1492461186562" ID="ID_357158955" MODIFIED="1518487921062" TEXT="ID muß gesendet werden">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
damit UNDO funktionieren kann,
|
|
</p>
|
|
<p>
|
|
müssen wir schon beim capture wissen,
|
|
</p>
|
|
<p>
|
|
welches Objekt (ID) hinzugefügt werden wird.
|
|
</p>
|
|
<p>
|
|
Denn sonst müßten wir uns den gegenwärtigen Inhalt speichern
|
|
</p>
|
|
<p>
|
|
und das wä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="1518487921062" TEXT="direkt von den Lambdas aus delegieren" VSHIFT="7">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
wir können den größ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="1518487921062" 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ätzlich gelöst">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node CREATED="1492965830381" ID="ID_1556963629" MODIFIED="1518487921062" TEXT="globalCtx -> 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ß ü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ößeres Thema">
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
</node>
|
|
<node CREATED="1489191732869" ID="ID_1031180144" MODIFIED="1518487921062" TEXT="nicht sofort zu lösen"/>
|
|
<node CREATED="1489191744764" ID="ID_898481930" MODIFIED="1518487921062" TEXT="aber Grundlagen legen">
|
|
<arrowlink COLOR="#606d94" DESTINATION="ID_346158251" ENDARROW="Default" ENDINCLINATION="842;21;" 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="#eee5c3" COLOR="#990000" CREATED="1485549081728" ID="ID_1122969153" MODIFIED="1518487921062" TEXT="globale Aktionen">
|
|
<arrowlink COLOR="#824f68" DESTINATION="ID_826011549" ENDARROW="Default" ENDINCLINATION="-906;-1187;" ID="Arrow_ID_1373278707" STARTARROW="Default" STARTINCLINATION="877;262;"/>
|
|
<icon BUILTIN="flag-yellow"/>
|
|
<node CREATED="1488419973349" ID="ID_1855791702" MODIFIED="1518487921062" TEXT="brauche ein Konzept">
|
|
<icon BUILTIN="yes"/>
|
|
</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ö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 CREATED="1485909456513" HGAP="55" ID="ID_576215675" MODIFIED="1518487921062" 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;"/>
|
|
<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 CREATED="1486942467620" HGAP="151" ID="ID_1761000392" MODIFIED="1518487921062" TEXT="Alternativen" VSHIFT="14">
|
|
<icon BUILTIN="help"/>
|
|
<node CREATED="1486942493208" ID="ID_805305597" MODIFIED="1518487921062" 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ülle">
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
<node CREATED="1486944064506" ID="ID_712470482" MODIFIED="1518487921062" TEXT="baut das Menü"/>
|
|
<node CREATED="1486944068985" ID="ID_1074291755" MODIFIED="1518487921062" TEXT="stellt die Closures bereit"/>
|
|
<node CREATED="1486944075456" ID="ID_1851635277" MODIFIED="1518487921062" TEXT="kö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> 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="1518487921062" TEXT="globalen Kontext einführen">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1486942614400" ID="ID_872912875" MODIFIED="1518487921062" TEXT="Action-Definition "weiß" 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ßen"/>
|
|
<node CREATED="1486943765530" ID="ID_1741627821" MODIFIED="1518487921062" TEXT="show Panel xyz"/>
|
|
<node CREATED="1486943555279" ID="ID_1864984187" MODIFIED="1518487921062" TEXT="mö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ßen/ö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ä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ängt aber mit InteractionDirector zusammen"/>
|
|
<node CREATED="1486944966679" ID="ID_185137660" MODIFIED="1518487921063" TEXT="kö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äuft auf ein Delegate hinaus"/>
|
|
<node CREATED="1486942583053" ID="ID_1367249768" MODIFIED="1518487921063" TEXT="...und das wä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ß, was die andern können"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1504393149140" HGAP="16" ID="ID_48107354" MODIFIED="1523022936584" TEXT="Addressierung" VSHIFT="27">
|
|
<arrowlink COLOR="#4f5d91" DESTINATION="ID_974158229" ENDARROW="Default" ENDINCLINATION="383;-2505;" ID="Arrow_ID_1832380552" STARTARROW="None" STARTINCLINATION="-597;127;"/>
|
|
<node CREATED="1504393160466" ID="ID_450547493" MODIFIED="1518487921063" TEXT="globales ID-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ü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="1518487921063" 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="39" ID="ID_1415516084" MODIFIED="1519356884205" TEXT="Komponenten-Zugriff" VSHIFT="16">
|
|
<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ältnis ID / Ort">
|
|
<node CREATED="1519356920083" ID="ID_723456910" MODIFIED="1519356926342" TEXT="sind orthogonale Schemata">
|
|
<node CREATED="1519357047993" ID="ID_1706134856" MODIFIED="1519357059979" TEXT="ID = globale Identität"/>
|
|
<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ückauflösung ID -> Ort">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1506175115772" HGAP="318" ID="ID_1448696607" MODIFIED="1525124214741" 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öglich / unmö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="1511572071588" 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="1511572071594" 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="1511572071600" 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="1511572071636" 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="1511572071652" 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="1511572071670" TEXT="create suitable children">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...halten wir besser raus aus diesem Design.
|
|
</p>
|
|
<p>
|
|
Denn es würde stärkere Annahmen über die "Zielelemente" erforderlich machen,
|
|
</p>
|
|
<p>
|
|
und diese dann doch wieder in ein Korsett zwängen. Im Moment (10/17) habe ich
|
|
</p>
|
|
<p>
|
|
stark den Verdacht, daß wir das nur in wenigen Spezialfä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="1518487921063" 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="ü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" ID="ID_486407658" MODIFIED="1518487921063" TEXT="Lö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" HGAP="41" ID="ID_246632028" MODIFIED="1518487921063" TEXT="Fälle" VSHIFT="9">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...was für verschiedene Arten von Zugriff
|
|
</p>
|
|
<p>
|
|
sind denkbar und mü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ö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="1523746854594" TEXT="abgeleitet aus Fokus-Koordinaten" VSHIFT="15">
|
|
<arrowlink COLOR="#a9a5cd" DESTINATION="ID_150523428" ENDARROW="Default" ENDINCLINATION="1440;-3055;" ID="Arrow_ID_1485937133" STARTARROW="None" STARTINCLINATION="1109;-37;"/>
|
|
<icon BUILTIN="info"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1506175078553" HGAP="97" ID="ID_1154523344" MODIFIED="1518487921063" TEXT="Implementierung" VSHIFT="29">
|
|
<icon BUILTIN="pencil"/>
|
|
<node CREATED="1506262853956" HGAP="-86" ID="ID_652224508" MODIFIED="1518487921063" TEXT="Design-Fragen" VSHIFT="-3">
|
|
<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 "schwergewichtig"?"/>
|
|
<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 Ä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="»path navigator«"/>
|
|
<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ß fü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 CREATED="1507939232775" 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 -> konkrete Widgets"/>
|
|
<node CREATED="1507939279761" ID="ID_250590373" MODIFIED="1518487921063" TEXT="keine natürliche Introspektion gegeben"/>
|
|
<node CREATED="1507939312860" HGAP="78" ID="ID_444535530" MODIFIED="1525124214749" TEXT="Analyse" VSHIFT="7">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
habe diese Analyse 2017/2018 ein Stü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öpft,
|
|
</p>
|
|
<p>
|
|
jedoch genü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 "ich"?">
|
|
<icon BUILTIN="help"/>
|
|
<node CREATED="1507939956606" FOLDED="true" ID="ID_406843936" MODIFIED="1533608416125" 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" FOLDED="true" ID="ID_714349147" MODIFIED="1533608416126" 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 "ich"?">
|
|
<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> Problem
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<font NAME="SansSerif" SIZE="14"/>
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
</node>
|
|
<node CREATED="1508016569551" FOLDED="true" ID="ID_250033067" MODIFIED="1533608416128" TEXT="zwei Lösungsansätze">
|
|
<node CREATED="1508016575359" FOLDED="true" ID="ID_1494737189" MODIFIED="1533608415764" 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ückt wird
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1508016602867" FOLDED="true" ID="ID_1861393889" MODIFIED="1533608415765" 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 "Kind"?">
|
|
<icon BUILTIN="help"/>
|
|
<node CREATED="1507940046234" FOLDED="true" ID="ID_577613088" MODIFIED="1533608416130">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
auf welche Eigenschaften
|
|
</p>
|
|
<p>
|
|
stützen wir uns?
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="help"/>
|
|
<node CREATED="1508017106368" FOLDED="true" ID="ID_896661508" MODIFIED="1533608415767" 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="1533608415769" 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="1533608415770" TEXT="gar keine">
|
|
<node CREATED="1508017203419" ID="ID_1168589916" MODIFIED="1518487921064" TEXT="generische Programmierung!">
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1508017409096" FOLDED="true" ID="ID_1088456751" MODIFIED="1533608416131" TEXT="was ist hier ein "Element"?">
|
|
<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 "Kind" 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ü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ür top-level"/>
|
|
<node CREATED="1508020286443" ID="ID_515525549" MODIFIED="1518487921064" TEXT="Interface fü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> 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 -> WorkSite"/>
|
|
<node CREATED="1508020790888" ID="ID_774784602" MODIFIED="1518487921064" TEXT="»reveal yourself«"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1506181068556" FOLDED="true" ID="ID_749871444" MODIFIED="1533685036994" 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" 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ösungen">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1506301476836" FOLDED="true" ID="ID_1339982909" MODIFIED="1533608416135" 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ö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" FOLDED="true" ID="ID_573792630" MODIFIED="1533608416137" 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="1533608415773" 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" FOLDED="true" ID="ID_515001314" MODIFIED="1533608416138" TEXT="Entscheidung">
|
|
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
|
|
<node CREATED="1506301780644" FOLDED="true" ID="ID_143930610" MODIFIED="1533608415776" 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="1533608415779" 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ä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ä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="1535892564742" 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ältnis von ViewLocator und Navigator klä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" 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" FOLDED="true" ID="ID_1582824657" MODIFIED="1533685052776" TEXT="was heißt "covern"?">
|
|
<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ö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="1533685054986" 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ändig (fä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 ä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ö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="1511572071989" TEXT="covern kann scheitern">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...denn wir verlangen, daß wir nach dem Interpolieren über eine Lücke
|
|
</p>
|
|
<p>
|
|
immer noch <i>mindestens ein explizt gegebenes</i> Element im Pfad haben,
|
|
</p>
|
|
<p>
|
|
welches auch von der UI-Topologie bestätigt wird.
|
|
</p>
|
|
<p>
|
|
Grund: wir wollen vermeiden, abschließende Wildcards <i>bloß irgendwie</i> zu binden
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1509323537479" ID="ID_1638614197" MODIFIED="1511572071995" TEXT="und trotzedm einen Anker finden">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
nämlich wenn der Pfad mit einem explizit gegebenen Präfix anfängt,
|
|
</p>
|
|
<p>
|
|
dann aber Wildcards enthält, die nicht nach den verschärften Bedingungen gecovert werden können.
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1509323760466" ID="ID_446881733" MODIFIED="1511572072002" 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äfix nicht paß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ö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äglich durch Lä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ä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ösungen geben">
|
|
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1508537087378" FOLDED="true" ID="ID_548549576" MODIFIED="1533685056730" TEXT="Wildcards interpolieren">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1514328942052" ID="ID_638910432" MODIFIED="1514328949331" TEXT="»pathResolution«"/>
|
|
<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ö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> ist
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1514329081745" ID="ID_1158924252" MODIFIED="1533608413598" TEXT="'*'">
|
|
<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ß 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" 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="1518487921065" 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ßt, es genügt, den ersten Match zu nehmen.
|
|
</p>
|
|
<p>
|
|
<b>Warnung</b>: diese Konvention ist besonders tü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="1518487921065" 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ß diese gü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="1518487921065" TEXT="UI stabil während der Auswertung">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
die Topologie, aber auch der Fokus-Zustand
|
|
</p>
|
|
<p>
|
|
ändern sich nicht während der <i>aktiven Lebensdauer</i> eines Resolvers
|
|
</p>
|
|
<p>
|
|
Hierbei ist <i>aktive Lebensdauer</i> 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="1518487921065" 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" FOLDED="true" ID="ID_1632791283" MODIFIED="1533685063775" 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="1511572072101" TEXT="informell...">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
Tiefensuche über die reale UI-Topologie
|
|
</p>
|
|
<p>
|
|
Ziel ist, den Pfad <i>bestmöglich</i> zu covern
|
|
</p>
|
|
<p>
|
|
Es gilt die erste maximal abdeckende Lö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="1515120953828" 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ügt diese Info allein
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1508539644775" ID="ID_186144507" MODIFIED="1515120958547" 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ält
|
|
</li>
|
|
<li>
|
|
Lösung wird unter Alternativen ausgewä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ö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ä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" FOLDED="true" ID="ID_1571889765" MODIFIED="1533685065286" 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="1535892564747" TEXT="path-resolution ausfü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ösung "abwerfen""/>
|
|
<node CREATED="1509475609338" ID="ID_142146721" MODIFIED="1518487921065" TEXT="erweitere Variante von drillDown()">
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
<node CREATED="1509475823750" 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änglich"/>
|
|
<node CREATED="1509475856514" ID="ID_759555189" MODIFIED="1518487921065" TEXT="geht dann überhaupt eine rekursive impl?">
|
|
<icon BUILTIN="help"/>
|
|
</node>
|
|
<node CREATED="1509475946414" ID="ID_815740043" MODIFIED="1518487921065" TEXT="muß die Child-Iteratoren nutzen"/>
|
|
<node CREATED="1509475966459" ID="ID_1480938627" MODIFIED="1518487921065" TEXT="ineffizient; steigt jedesmal neu von der Wurzel ab"/>
|
|
<node CREATED="1509476108672" FOLDED="true" ID="ID_609074970" MODIFIED="1533608416140" 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ögliche Lö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 ü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="1533608415784" TEXT="IterExplorer nutzen?">
|
|
<icon BUILTIN="button_cancel"/>
|
|
<node CREATED="1509481841493" FOLDED="true" ID="ID_125946562" MODIFIED="1533608415372" 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="1533608415374" 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="1533608415376" TEXT="RecursiveSelfIntegration">
|
|
<node CREATED="1509481981834" ID="ID_312626846" MODIFIED="1509481990157" TEXT="muß 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="1533608415378" 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="1535892564749" TEXT="Zusammenspiel">
|
|
<icon BUILTIN="info"/>
|
|
<node CREATED="1509491594115" FOLDED="true" ID="ID_214903834" MODIFIED="1533608415788" TEXT="was trä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="1533608415790" TEXT="was trä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="1533608415795" TEXT="wie wird die Lösung gebildet?">
|
|
<icon BUILTIN="help"/>
|
|
<node CREATED="1509500778214" FOLDED="true" ID="ID_205493443" MODIFIED="1533608415382" TEXT="immer wenn ein Zweig ausgeschö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 "abwerfen""/>
|
|
</node>
|
|
<node CREATED="1509500882017" FOLDED="true" ID="ID_1192819328" MODIFIED="1533608415801" TEXT="Problem: Backtracking">
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
<node CREATED="1509500892895" ID="ID_1418393701" MODIFIED="1509500898746" TEXT="ein Problem der Repräsentation"/>
|
|
<node CREATED="1509500905589" ID="ID_583193934" MODIFIED="1509500921375" TEXT="muß zu einem früheren, partiell gebildeten Pfad zurückkehren"/>
|
|
<node CREATED="1509500998401" FOLDED="true" ID="ID_566603059" MODIFIED="1533608415386" TEXT="Pfade sind vorwä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ösung brauche ich den Pfad aufwärts.
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1509501086314" ID="ID_1462237553" MODIFIED="1509501086314">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
Das heißt, wir mü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ö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="1533608415805" TEXT="mö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="1533608415388" STYLE="bubble" TEXT="fü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="1525124215509" TEXT="(node, depth) -> 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="1525124214781" 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="1525124214781" 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" HGAP="45" ID="ID_1054378844" MODIFIED="1535892564749" VSHIFT="18">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
monadische Lösung
|
|
</p>
|
|
<p>
|
|
möglich?
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="help"/>
|
|
<node CREATED="1509583603442" FOLDED="true" ID="ID_1654046432" MODIFIED="1533608415392" TEXT="Aufgabe">
|
|
<node CREATED="1509583606241" ID="ID_1229235682" MODIFIED="1509583612828" TEXT="brauche explore-Funktion"/>
|
|
<node CREATED="1509583629367" ID="ID_911265983" MODIFIED="1509583641832" TEXT="element -> zu betrachtende Kinder"/>
|
|
<node CREATED="1509583710276" FOLDED="true" ID="ID_76982043" MODIFIED="1525124215509" TEXT="Teilaufgaben">
|
|
<node CREATED="1509583754350" ID="ID_304891578" MODIFIED="1509583763832" TEXT="element -> match?"/>
|
|
<node CREATED="1509583855993" ID="ID_1587235171" MODIFIED="1509583889120" TEXT="ja! -> mögliche Kinder"/>
|
|
</node>
|
|
<node CREATED="1509583973681" FOLDED="true" ID="ID_1318889619" MODIFIED="1525124215509" TEXT="Problem: ternä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" ID="ID_1831665335" MODIFIED="1535892564750" TEXT="Ansatz">
|
|
<node CREATED="1510266817500" FOLDED="true" ID="ID_1438980093" MODIFIED="1525124215509" TEXT="3 Layer verwenden">
|
|
<icon BUILTIN="idea"/>
|
|
<node CREATED="1510266845712" FOLDED="true" ID="ID_1058798631" MODIFIED="1525124214788" TEXT="depthFirstExpandable">
|
|
<node CREATED="1510340746785" ID="ID_1049791542" MODIFIED="1510340774700">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
<i>echte</i> 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="1525124214789" TEXT="pathMatcher">
|
|
<node CREATED="1510340991536" ID="ID_551863450" MODIFIED="1510341006225" TEXT="Zustands-Tupel -> 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="1525124214789" 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ösungen"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1510341362957" ID="ID_1499495468" MODIFIED="1535892564752" 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öherer Ordnung,
|
|
</p>
|
|
<p>
|
|
also mehr als bloß 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="1525124214796" TEXT="als Pipeline realisieren?">
|
|
<node CREATED="1510342309372" ID="ID_1423589544" MODIFIED="1510342448222" TEXT="M a >>= (a -> M b) >>= (b -> M c)">
|
|
<icon BUILTIN="info"/>
|
|
</node>
|
|
<node CREATED="1510342375691" FOLDED="true" ID="ID_433622803" MODIFIED="1525124214795" TEXT="hier wä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ö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> 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ägungen, die alle subtile Seiteneffekte ausnutzen....
|
|
</p>
|
|
<p>
|
|
...was nicht grade zur Verständlichkeit des Ganzen beiträ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> dargestellt werden kann
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1510357676862" FOLDED="true" ID="ID_1057287927" MODIFIED="1512926193412" TEXT="das heiß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 -> 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 -> (x, s) "/>
|
|
<node CREATED="1510365961733" FOLDED="true" ID="ID_188006936" MODIFIED="1512926191735">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
m >>= f = \r -> let (x, s) = m r
|
|
</p>
|
|
<p>
|
|
                            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ß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="1525124214797" 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 -> Wert oder Marker"/>
|
|
<node CREATED="1510447097509" ID="ID_1527567894" MODIFIED="1510447108696" TEXT="iterate -> Prozeß-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 "Operation" 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="1525124215509" 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="1525124214797" 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ä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ätzlich</i> 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ösung">
|
|
<icon BUILTIN="button_cancel"/>
|
|
<node CREATED="1510939567867" ID="ID_1799788775" MODIFIED="1512797263192" TEXT="expand: S -> 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ß 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ösung">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1510939598175" ID="ID_1272498716" MODIFIED="1512797263192" TEXT="expand: S -> BaumExplorer<S>"/>
|
|
<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>
|
|
 fü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ß nicht speziell vorbereitet sein (nur konstruierbar)"/>
|
|
<node CREATED="1510940199342" ID="ID_1423687617" MODIFIED="1512797263192" TEXT="man zahlt immer den Overhead für den Stack im Baum-Explorer">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...selbst wenn man ihn für eine triviale Implementierung
|
|
</p>
|
|
<p>
|
|
eigentlich ü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> 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="1525124214798" 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öglicherweise fest vorkonfigurierbarer Builder hierfür">
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1510540399304" FOLDED="true" ID="ID_300971395" MODIFIED="1525124214798" TEXT="Filter">
|
|
<node CREATED="1510541335201" ID="ID_1717169058" MODIFIED="1510541339780" TEXT="fischt nach Lö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="1533608415812" TEXT="generische Lösung">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1510941425200" FOLDED="true" ID="ID_1773303405" MODIFIED="1533608415399" TEXT="Vorgabe">
|
|
<icon BUILTIN="yes"/>
|
|
<node CREATED="1510941397907" ID="ID_993148577" MODIFIED="1512955809672" TEXT="zunächst als abstrakter Baustein">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node CREATED="1510941406978" ID="ID_1048232110" MODIFIED="1512955812834" TEXT="später mit IterExplorer verschmelzen">
|
|
<icon BUILTIN="bell"/>
|
|
</node>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1510941455667" FOLDED="true" ID="ID_1945607867" MODIFIED="1533608415402" TEXT="Builder">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1511054840038" FOLDED="true" ID="ID_18464349" MODIFIED="1525124215509" TEXT="brauch ich am Ende ü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ährlich">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
die Builder-Operationen moven den bisherigen Iterator-compound weg.
|
|
</p>
|
|
<p>
|
|
<i>Ich könnte mir vorstellen, </i>daß das einen naiven User ziemlich schockiert....
|
|
</p>
|
|
<p>
|
|
|
|
</p>
|
|
<p>
|
|
Lösung wä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ätermal">
|
|
<icon BUILTIN="bell"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1512278433500" FOLDED="true" ID="ID_1806674229" MODIFIED="1525124215510" TEXT="TreeExplorer fungiert als Builder">
|
|
<icon BUILTIN="yes"/>
|
|
<node CREATED="1512278445042" ID="ID_205794467" MODIFIED="1512278456012" TEXT="wird jeweils on top darü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="1533608415412" 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="1525124215510" TEXT="expand-Operation">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node COLOR="#338800" CREATED="1511227813712" FOLDED="true" ID="ID_1961708112" MODIFIED="1525124214805" 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 -> Iter(Val)"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1511227861867" FOLDED="true" ID="ID_1021264891" MODIFIED="1525124214806" 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älle">
|
|
<node CREATED="1511227902005" ID="ID_867168618" MODIFIED="1511228200056" TEXT="Core -> Iter(Val)"/>
|
|
<node CREATED="1511227917971" ID="ID_1274261467" MODIFIED="1511228200056" TEXT="Core -> Core"/>
|
|
<node CREATED="1511227925202" ID="ID_211547168" MODIFIED="1511228200056" TEXT="Iter(Val) -> Iter(Val)"/>
|
|
<node CREATED="1511227944392" ID="ID_1244265850" MODIFIED="1511228200056" TEXT="Iter(Val) -> 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=""Zugriff auf Core" kann nicht abstrahiert werden">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
weil...
|
|
</p>
|
|
<ul>
|
|
<li>
|
|
sich zwar die Logik syntaktisch anschreiben läß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ö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="1525124214806" TEXT="Vereinigung" VSHIFT="23">
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
<node CREATED="1511228210268" ID="ID_268486334" MODIFIED="1511228224230" TEXT="im Fall-1 müssen wir operator* anwenden"/>
|
|
<node CREATED="1511228226946" FOLDED="true" ID="ID_1853550246" MODIFIED="1525124214806" TEXT="im Fall-2 mü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ö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ö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ß wir den Typ des Expand-Funktors analysieren">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
_fun<FUN>::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ü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ä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ällt auf <i>eine</i> mögliche Substitution zurü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äre dann: den Iterator zu verwenden">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
denn das ist der sinnvollste Fall für ein generisches Lambda
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1511571955951" FOLDED="true" HGAP="-20" ID="ID_189622415" MODIFIED="1525124214807" 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ützte Varianten dokumentieren">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node CREATED="1511578330448" ID="ID_1808038526" MODIFIED="1512955467937" TEXT="alle unterstü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="1525124215510" 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="1525124214811" TEXT="bestehendern TransformIter verwenden?">
|
|
<node CREATED="1511827584523" ID="ID_1921395634" MODIFIED="1511827600541" TEXT="nein: wir mü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="1525124214811" TEXT="Frage: kann man mit ADL überlagern?">
|
|
<icon BUILTIN="help"/>
|
|
<node CREATED="1511827732399" ID="ID_1358685038" MODIFIED="1511827746408" TEXT="wenn ja: dann müß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="1525124214812" 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 -> 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<Core>">
|
|
<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ötig verkompliziertem Design aus">
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1512262200009" FOLDED="true" ID="ID_1921211925" MODIFIED="1512926193413" TEXT="führt zu unnötig komplexem Design">
|
|
<icon BUILTIN="button_cancel"/>
|
|
<node CREATED="1512262213016" ID="ID_1547313420" MODIFIED="1512262221626" TEXT="wir haben jetzt "zwei Schienen""/>
|
|
<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ü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> entfernen
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1512262331008" ID="ID_287760536" MODIFIED="1512262346625" TEXT="enthaltenen SrcIter dekorieren -> Core"/>
|
|
<node CREATED="1512262347637" ID="ID_1683477051" MODIFIED="1512262371854" TEXT="erneut einen TreeExplorer darü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önnen beliebig verschachteln"/>
|
|
<node CREATED="1512262505760" ID="ID_534073442" MODIFIED="1512262514890" TEXT="der Trait könnte eine tiefere Schicht greifen"/>
|
|
<node CREATED="1512262516143" FOLDED="true" ID="ID_1514197178" MODIFIED="1512926193408" TEXT="Lö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üssen neue Core produzieren">
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1511918986936" FOLDED="true" ID="ID_667088953" MODIFIED="1525124214812" 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ätzliches Problem jedes Iterator-Dekorators">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
wir haben bisher viel zu naiv angenommen,
|
|
</p>
|
|
<p>
|
|
daß 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ünftig zwei Fälle unterstü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öst durch stets regelmäß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ß 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<FUN, SRC>::Res lib::{anonymous}::_ExpansionTraits<FUN, SRC>::Functor::operator()(ARG&) [with ARG = long int; FUN = lib::test::IterTreeExplorer_test::verify_transformOperation()::<lambda(auto:2)>&; SRC = lib::iter_explorer::IterableDecorator<long int, lib::iter_explorer::WrappedIteratorCore<lib::TreeExplorer<lib::iter_explorer::StlRange<std::vector<long int>&> > > >; lib::{anonymous}::_ExpansionTraits<FUN, SRC>::Res = std::basic_string<char>]':
|
|
</p>
|
|
<p>
|
|
|
|
</p>
|
|
<p>
|
|
src/lib/iter-tree-explorer.hpp:426:50: error: no match for call to '(std::function<std::basic_string<char>(lib::iter_explorer::IterableDecorator<long int, lib::iter_explorer::WrappedIteratorCore<lib::TreeExplorer<lib::iter_explorer::StlRange<std::vector<long int>&> > > >&)>) (long int&)'
|
|
</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ß von yield stammen"/>
|
|
<node CREATED="1512183058625" ID="ID_1212399223" MODIFIED="1512183084458" TEXT="wir stehen in Transformer<COR..."/>
|
|
<node CREATED="1512183107627" ID="ID_1096980589" MODIFIED="1512183113342" TEXT="with COR = lib::iter_explorer::WrappedIteratorCore<lib::TreeExplorer..."/>
|
|
<node CREATED="1512183054810" ID="ID_1399207561" MODIFIED="1512183133267" TEXT="typename IT::reference yield(WrappedIteratorCore const&)"/>
|
|
<node CREATED="1512183140886" ID="ID_549090759" MODIFIED="1512183150825" TEXT="IT = TreeExplorer"/>
|
|
<node CREATED="1512183151693" ID="ID_621724350" MODIFIED="1512183166319" TEXT="IT::reference == long&"/>
|
|
</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<long, WrappedIteratorCore<...."/>
|
|
<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> 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ä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ürde das ganze System aufdoppeln">
|
|
<icon BUILTIN="yes"/>
|
|
</node>
|
|
<node CREATED="1512250754085" FOLDED="true" ID="ID_1665621288" MODIFIED="1512926191762" TEXT="warum überhaupt zwei Systeme?">
|
|
<icon BUILTIN="help"/>
|
|
<node CREATED="1512250771874" ID="ID_59094155" MODIFIED="1512250776853" TEXT="theoretisch kö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ä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ß 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ä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ügen">
|
|
<icon BUILTIN="button_cancel"/>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1512259544994" ID="ID_702123443" MODIFIED="1512259564650" TEXT="Problem: muß 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älle adaptieren kö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üssen StateCore sein">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...denn wenn mal ein Layer "nur" Iterator wäre,
|
|
</p>
|
|
<p>
|
|
dann könnte es eine Kombination geben, die einen solchen Layer übersrpingt
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1512251276054" ID="ID_236669144" MODIFIED="1512251283329" TEXT="Kurzschluß Core -> 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ö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ß 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 "basically" bis auf den Pointer?"/>
|
|
<node CREATED="1512183562621" ID="ID_57742709" MODIFIED="1512183571160" TEXT="logisch wä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="1525124215510" TEXT="filter-Operation">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1511837285306" FOLDED="true" ID="ID_928417859" MODIFIED="1525124214814" TEXT="der Vollstä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önnte Itertools ablösen">
|
|
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1511837329140" FOLDED="true" ID="ID_1963360740" MODIFIED="1525124214814" 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="1525124214814" 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 "ausgewertet" 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="1525124215510" 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="1525124214815" TEXT="auf API herausfü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="1525124215510" TEXT="auto-expand">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1512844658352" ID="ID_1411659026" MODIFIED="1512844688077" TEXT="einfache Ausprägung">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...nur was billig ist,
|
|
</p>
|
|
<p>
|
|
denn im Moment brauchen wir das überhaupt nicht
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="yes"/>
|
|
</node>
|
|
<node CREATED="1512844696922" FOLDED="true" ID="ID_396632754" MODIFIED="1525124214817" TEXT="zusä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="1525124214817" TEXT="expandAll">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1512844742788" ID="ID_1270260953" MODIFIED="1512844748479" TEXT="expandChildren verzögert"/>
|
|
<node CREATED="1512844749235" ID="ID_1344028360" MODIFIED="1512844759661" TEXT="ausgelö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="1512952033494" 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üß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ätzliche Komplexitä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ß für diesen Fall selbständig terminieren"/>
|
|
<node CREATED="1512951841703" ID="ID_815720383" MODIFIED="1512951903322" TEXT=""komplett entfaltet" 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ä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ä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ür gutes Design">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
der Natur der Dinge folgen,
|
|
</p>
|
|
<p>
|
|
nicht den technischen Möglichkeiten
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="forward"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1512363286920" FOLDED="true" ID="ID_1420123769" MODIFIED="1525124215510" TEXT="Zusammenspiel">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1512844805995" FOLDED="true" ID="ID_927486947" MODIFIED="1525124214820" TEXT="single-val">
|
|
<icon BUILTIN="help"/>
|
|
<node CREATED="1512844821609" ID="ID_478047650" MODIFIED="1512844824644" TEXT="man könnte...."/>
|
|
<node CREATED="1512844825280" ID="ID_1599364674" MODIFIED="1512844833243" TEXT="einzelne Werte in einen Iterator "heben""/>
|
|
<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="1513473550578" 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-Änderung">
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
<node CREATED="1512363380411" ID="ID_1008917631" MODIFIED="1512363473668" TEXT="expandChildren ä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 ü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ö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ö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önnen wir niemals von Parent -> Subklasse aufrufen">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...das heißt, es ist nicht möglich,
|
|
</p>
|
|
<p>
|
|
daß 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ätzlichen Ü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ß wir beim <b>Lumiera Forward Iterator</b> - Konzept bleiben
|
|
</p>
|
|
<p>
|
|
|
|
</p>
|
|
<p>
|
|
-- das heißt, beliebig oft yield, und Iterations-Ende per bool()-Test
|
|
</p>
|
|
<p>
|
|
|
|
</p>
|
|
<p>
|
|
Unter dieser Annahme kommt yield stets vor iterNext (wenn überhaupt).
|
|
</p>
|
|
<p>
|
|
Und yield muß (a) einen Status liefern, (b) einen Wert liefern.
|
|
</p>
|
|
<p>
|
|
Einziger Ausweg wäre, wie das IterAdapter macht, einen Pointer rauszugeben.
|
|
</p>
|
|
<p>
|
|
Das ist eigentlich keine gute Lösung, weil die Implementierung dann sehr tricky wird.
|
|
</p>
|
|
<p>
|
|
Siehe IterAdapter als abstoßendes Beispiel.
|
|
</p>
|
|
<p>
|
|
Und als weitere Alternative bleibt nur die Einführung von State, und das bedeutet,
|
|
</p>
|
|
<p>
|
|
sich im Iterator oder in der Implementierung irgendwo noch eine zusätzliche bool-Flag zu speichern.
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1512440148015" FOLDED="true" ID="ID_1475512070" MODIFIED="1512926193409" TEXT="Einzige Lö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 überhaupt ADL-Funktionen??">
|
|
<icon BUILTIN="yes"/>
|
|
</node>
|
|
<node CREATED="1512440238859" ID="ID_1975957673" MODIFIED="1512440262159" TEXT="wir brauchen hier gar keinen "Extension Point"">
|
|
<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önnte die "state core" 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ü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ß die Funktionen auch virtuell sind,
|
|
</p>
|
|
<p>
|
|
können wir nicht sicherstellen
|
|
</p>
|
|
<ul>
|
|
<li>
|
|
daß die hereingereichte Implementierung die Funktionen überschreibt
|
|
</li>
|
|
</ul>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1512440341573" ID="ID_1804763032" MODIFIED="1512440348845" TEXT="wir können bis 2020 warten...">
|
|
<icon BUILTIN="ksmiletris"/>
|
|
</node>
|
|
<node CREATED="1512440360194" ID="ID_1554793680" MODIFIED="1512440375486" TEXT="es ist nä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ü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ö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ß daraufhin seinen Cache wegwerfen"/>
|
|
<node CREATED="1512516567076" ID="ID_647647031" MODIFIED="1512516587342" TEXT="filter muß daraufhin erneut filter-pull ausfü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> einem Layer expanded
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1512516708649" ID="ID_474656011" MODIFIED="1512516797884" TEXT="dann muß 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ück,
|
|
</p>
|
|
<p>
|
|
was <i>vor</i> 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ückgabewert eingebaut
|
|
</li>
|
|
<li>
|
|
damit kann ich das IterSource-Front-End refreshen
|
|
</li>
|
|
<li>
|
|
trotzdem hässlich...
|
|
</li>
|
|
</ul>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1513293471929" FOLDED="true" ID="ID_1115016372" MODIFIED="1513473546013" 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über gesetzte Expander bekommen das Schließ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ßen notwendig"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1513395781003" ID="ID_1245121355" MODIFIED="1513395835329" TEXT="Problem: wie anschließ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ß nun "downstream" 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ö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ön gelöst zu haben.
|
|
</p>
|
|
<p>
|
|
Das Problem ist, daß eben auch der <i>Konsument</i> 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ä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önnte tatsächlich eine echte pragmatische Alternative sein!">
|
|
<icon BUILTIN="ksmiletris"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1513447925593" FOLDED="true" ID="ID_1239682661" MODIFIED="1525124214821" TEXT="expansion depth">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node COLOR="#338800" CREATED="1513447947870" ID="ID_328146397" MODIFIED="1513448183232" TEXT="nach außen zugänglich machen">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1513447956069" FOLDED="true" ID="ID_1345517957" MODIFIED="1525124214821" TEXT="Problem: muß dafür korrekt sein">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1513447967084" ID="ID_476332936" MODIFIED="1513447978718" TEXT="d.h. muß die logische Tiefe widerspiegeln"/>
|
|
<node CREATED="1513447979450" ID="ID_224439756" MODIFIED="1513448250249" TEXT="...auch wenn der Vater bereits erschöpft ist">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
wir hatten bisher eine auto-Aufräum-Routine in iterNext(),
|
|
</p>
|
|
<p>
|
|
welche dazu führt, daß ein erschöpfter Vater sofort weggerä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ö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="1525124214821" 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="1525124215510" TEXT="asIterSource">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1512621242778" FOLDED="true" ID="ID_695969017" MODIFIED="1525124214825" TEXT="Eigenschaften">
|
|
<icon BUILTIN="info"/>
|
|
<node CREATED="1511837396075" ID="ID_1916743569" MODIFIED="1511837401078" TEXT="abschließ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="1513473535917" 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ß virtuelle methode sein"/>
|
|
<node CREATED="1512711396279" ID="ID_633403108" MODIFIED="1512769358637" TEXT="also: muß 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ß 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ß direkt unter der Basis erfolgen"/>
|
|
<node CREATED="1512769116952" ID="ID_1359676759" MODIFIED="1512769124770" TEXT="virtual muß 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ätzlicher VTable-Pointer?">
|
|
<node CREATED="1512711638574" ID="ID_1769096857" MODIFIED="1512769458120" TEXT="kö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> Zugriff auf ein Sub-Objekt muß 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ücken"/>
|
|
<node CREATED="1512769398050" ID="ID_1821068883" MODIFIED="1512769409404" TEXT="zusatz-Feature "extendChildren" 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äre machbar">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1512782259136" FOLDED="true" ID="ID_1896672181" MODIFIED="1512926193409" TEXT="einigermaßen technisch...">
|
|
<node CREATED="1512782296798" ID="ID_347250455" MODIFIED="1512782320932" TEXT="es müßte sich PackagedTreeExplorerSource selbst bauen können"/>
|
|
<node CREATED="1512782329311" ID="ID_1917918946" MODIFIED="1512782351304" TEXT="außerdem müß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ü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ö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="1525124214826" 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ß die default-Initialisierung der Member-Felder noch nicht hinrechend geklä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ür die Felder im abgeleiteten Objekt gemacht.
|
|
</p>
|
|
<p>
|
|
Es gibt dann eine neue, explizite Regel, die verhindert, daß zufällig ein aus der Basis geerbter Ctor
|
|
</p>
|
|
<p>
|
|
die Signatur eines Copy-ctors ü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ügt es, dies an <i>einer</i> Stelle in der Kette zu ergä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 über dem zu initialisierenden Basis-Objekt.
|
|
</p>
|
|
<p>
|
|
Alle anderen Layer darü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>
|
|
übrigens ist es im IterSource<T>::iterator <i>nicht</i>  notwendig
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...das war nur ein unnötiger Fix nach dem Gieß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ß 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ß">
|
|
<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 "state core"-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="1525124215511" TEXT="piggyback?">
|
|
<icon BUILTIN="stop-sign"/>
|
|
<node CREATED="1512358616584" ID="ID_1041373923" MODIFIED="1512358662699" TEXT=""könnte mal praktisch sein"">
|
|
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
|
|
</node>
|
|
<node CREATED="1512358626607" FOLDED="true" ID="ID_853537387" MODIFIED="1525124214828" TEXT="hab die Idee schon lange">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...daß 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ä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="1525124214828" TEXT="wä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="1533608415426" TEXT="TreeExplorer_test">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node COLOR="#338800" CREATED="1510969031378" FOLDED="true" ID="ID_1678287752" MODIFIED="1525124215511" TEXT="verify_wrappedIterator();">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1511054727547" ID="ID_328168347" MODIFIED="1511054858441" TEXT="Problem: muß Iterator-Arten unterscheiden">
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1511054740579" FOLDED="true" ID="ID_776471136" MODIFIED="1525124214839" TEXT="StateCore direkt verwenden">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1511054762608" ID="ID_1129026084" MODIFIED="1511054793514" TEXT="muß IterStateWrapper unterstü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="1525124215511" 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="1525124214840" 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 -> Core">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1511227824495" ID="ID_1299746114" MODIFIED="1511731959295" TEXT="Val -> Iter<Val>">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1511571834032" ID="ID_1315469399" MODIFIED="1511754060610" TEXT="Val -> collection<Val>">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1511227861867" FOLDED="true" ID="ID_1821706302" MODIFIED="1525124214840" 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älle">
|
|
<node COLOR="#338800" CREATED="1511227917971" ID="ID_200983707" MODIFIED="1511571722416" TEXT="Core& -> Core">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1511227902005" ID="ID_1992381343" MODIFIED="1511754553025" TEXT="Core -> Iter<Val>">
|
|
<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<Val>& -> Core">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1511227925202" ID="ID_290152631" MODIFIED="1511755056399" TEXT="Iter<Val> -> Iter<Val>">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1510969031379" FOLDED="true" ID="ID_358406634" MODIFIED="1525124215511" TEXT="verify_transformOperation();">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node COLOR="#338800" CREATED="1511835550655" ID="ID_1305788204" MODIFIED="1512276390701" TEXT="Transformer(Iter<Core>)">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1511835603751" ID="ID_6147833" MODIFIED="1512276267722" TEXT="Transformer(Iter<Val>)">
|
|
<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="1512955657412" 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 ü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 Ü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ä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> 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ährlich">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
weil der Aufruf von join(&&) selber wasserdicht ist
|
|
</p>
|
|
<p>
|
|
D.h. er frisst keine Werte.
|
|
</p>
|
|
<p>
|
|
Deshalb fä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ützt kein move">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1511835901999" FOLDED="true" ID="ID_1717235881" MODIFIED="1525124214840" TEXT="Transform: Core& -> irgendwas">
|
|
<icon BUILTIN="help"/>
|
|
<node CREATED="1512276512313" ID="ID_725756500" MODIFIED="1512276517860" TEXT="sollte theoretisch mö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ß
|
|
</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="1525124215511" TEXT="verify_combinedExpandTransform();">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node COLOR="#338800" CREATED="1512363192308" FOLDED="true" ID="ID_1913090689" MODIFIED="1512955646485" TEXT="expand ü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="1512955648908" 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="1525124215511" TEXT="verify_FilterIterator();">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node COLOR="#338800" CREATED="1512523719350" ID="ID_351021178" MODIFIED="1512606882124" TEXT="einfaches Prä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="1525124214840" TEXT="Prädikat<Core>">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1512609324903" ID="ID_1654303504" MODIFIED="1512609343982" TEXT="kann an den Vorgängern vorbeitunneln">
|
|
<icon BUILTIN="ksmiletris"/>
|
|
</node>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1512523783318" ID="ID_1808219280" MODIFIED="1512611989218" TEXT="Prädikat<Iter> (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äglich hinzugefügtem Layer">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node COLOR="#2b7d95" CREATED="1512612043592" ID="ID_1719204676" MODIFIED="1512612065051" TEXT="...es lebe die Komplexität">
|
|
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
|
|
<icon BUILTIN="ksmiletris"/>
|
|
</node>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1511836589393" FOLDED="true" ID="ID_54165230" MODIFIED="1525124215511" 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ö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="1512955630567" 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 -> 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="1512955625640" 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äre aber bequem für den Test.
|
|
</p>
|
|
<p>
|
|
<u>Frage</u>: ist das ü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="1525124215512" 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="1525124215512" 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="1525124215512" 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="1512955618961" 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äß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<tuple<TYPES...>>">
|
|
<node CREATED="1512952994765" ID="ID_1028880050" MODIFIED="1512953023243" TEXT="wurde automatisch gehoben auf Types<TYPES...>">
|
|
<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-<1>-<3>-<5>-">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node CREATED="1512953639278" ID="ID_894542190" MODIFIED="1512954775187" TEXT="TUPLE-<tuple<Num<1>, Num<3>, Num<5> >>-">
|
|
<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-<1>-<3>-<5>-">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node CREATED="1512953639278" ID="ID_1790615976" MODIFIED="1512954785530" TEXT="TUPLE-<tuple<Num<1>, Num<3>, Num<5> >>-">
|
|
<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="-<1>-<3>-<5>-">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node CREATED="1512953639279" ID="ID_213667790" MODIFIED="1512955034003" TEXT="-<tuple<Num<1>, Num<3>, Num<5> >>-">
|
|
<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-<i>-<1>-<3>-<5>-">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node CREATED="1512953639279" ID="ID_1268362964" MODIFIED="1512954792261" TEXT="TUPLE-<tuple<int, Num<1>, Num<3>, Num<5> >>-">
|
|
<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="1525124215512" TEXT="demonstrate_LayeredEvaluation();">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1513035990902" FOLDED="true" ID="ID_1647713519" MODIFIED="1525124214841" TEXT="Zweck">
|
|
<icon BUILTIN="info"/>
|
|
<node CREATED="1513035997493" ID="ID_1010963261" MODIFIED="1513036010287" TEXT="vorbereitender Fingerübung fü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="1525124214841" TEXT="Vorgaben">
|
|
<icon BUILTIN="yes"/>
|
|
<node CREATED="1513036079426" ID="ID_1465268489" MODIFIED="1513036093852" TEXT="Text-Fixture so einfach wie möglich"/>
|
|
<node CREATED="1513036109158" ID="ID_142686199" MODIFIED="1513036128095" TEXT="es wird tatsä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="1513473349080" TEXT="Idee-1">
|
|
<icon BUILTIN="idea"/>
|
|
<node CREATED="1513036205114" ID="ID_792801416" MODIFIED="1513036214764" TEXT="zufä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ä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="1513473350640" 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ß 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ßen aufzurufen"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1513206569503" FOLDED="true" ID="ID_729219891" MODIFIED="1513473378563" 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ällige Kind-sequenzen"/>
|
|
<node CREATED="1513206709484" ID="ID_1659632018" MODIFIED="1513206720390" TEXT="die nicht sicher zum Erfolg fü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="1525124214842" 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ö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ü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ß 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 ü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öpfter Kind-Iter wird nicht weggeräumt"/>
|
|
<node CREATED="1513283822323" ID="ID_1993626666" MODIFIED="1513283848220" TEXT="Folge: es wird auf dem letzten Element weitergezä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ätte den Pointer auf NULL setzen mü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 ü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 "FAVSU"">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
rLet(40878 < 18446744073709551615) → S
|
|
</p>
|
|
<p>
|
|
|↯| S ... 40878
|
|
</p>
|
|
<p>
|
|
rLet(40879 < 18446744073709551615) → F
|
|
</p>
|
|
<p>
|
|
|!| expand 40879
|
|
</p>
|
|
<p>
|
|
rLet(0 < 4) → A
|
|
</p>
|
|
<p>
|
|
rLet(40880 < 18446744073709551615) → Q
|
|
</p>
|
|
<p>
|
|
|.| A -->> 40879
|
|
</p>
|
|
<p>
|
|
|!| expand 40879
|
|
</p>
|
|
<p>
|
|
rLet(0 < 4) → F
|
|
</p>
|
|
<p>
|
|
rLet(1 < 4) → N
|
|
</p>
|
|
<p>
|
|
|.| F -->> 40879
|
|
</p>
|
|
<p>
|
|
|↯| F ... 40879
|
|
</p>
|
|
<p>
|
|
rLet(1 < 4) → W
|
|
</p>
|
|
<p>
|
|
|↯| W ... 40879-0-1
|
|
</p>
|
|
<p>
|
|
rLet(2 < 4) → N
|
|
</p>
|
|
<p>
|
|
|↯| N ... 40879-0-2
|
|
</p>
|
|
<p>
|
|
rLet(3 < 4) → T
|
|
</p>
|
|
<p>
|
|
|↯| T ... 40879-0-3
|
|
</p>
|
|
<p>
|
|
rLet(4 < 4) → F
|
|
</p>
|
|
<p>
|
|
|↯| N ... 40879-1
|
|
</p>
|
|
<p>
|
|
rLet(2 < 4) → F
|
|
</p>
|
|
<p>
|
|
|↯| F ... 40879-2
|
|
</p>
|
|
<p>
|
|
rLet(3 < 4) → A
|
|
</p>
|
|
<p>
|
|
|!| expand 40879-3
|
|
</p>
|
|
<p>
|
|
rLet(0 < 4) → J
|
|
</p>
|
|
<p>
|
|
rLet(4 < 4) → Y
|
|
</p>
|
|
<p>
|
|
|.| J -->> 40879-3
|
|
</p>
|
|
<p>
|
|
|↯| J ... 40879-3
|
|
</p>
|
|
<p>
|
|
rLet(1 < 4) → H
|
|
</p>
|
|
<p>
|
|
|↯| H ... 40879-4
|
|
</p>
|
|
<p>
|
|
rLet(2 < 4) → H
|
|
</p>
|
|
<p>
|
|
|↯| H ... 40879-5
|
|
</p>
|
|
<p>
|
|
rLet(3 < 4) → F
|
|
</p>
|
|
<p>
|
|
|↯| F ... 40879-6
|
|
</p>
|
|
<p>
|
|
rLet(4 < 4) → V
|
|
</p>
|
|
<p>
|
|
|↯| Q ... 40880
|
|
</p>
|
|
<p>
|
|
rLet(40881 < 18446744073709551615) → A
|
|
</p>
|
|
<p>
|
|
|↯| A ... 40881
|
|
</p>
|
|
<p>
|
|
rLet(40882 < 18446744073709551615) → X
|
|
</p>
|
|
<p>
|
|
|↯| X ... 40882
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1513401185198" ID="ID_933999759" MODIFIED="1513473212036" TEXT="Zähler läuft weiter">
|
|
<icon BUILTIN="info"/>
|
|
</node>
|
|
<node CREATED="1513473196754" ID="ID_570569140" MODIFIED="1513473207824" TEXT="Lösung: depth()-Infromation nutzen">
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1513447822247" ID="ID_1725576262" MODIFIED="1513448159466" TEXT="jetzt scheint's zu funktionieren...">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
rLet(77943 < 18446744073709551615) → R
|
|
</p>
|
|
<p>
|
|
|↯| R ... 77943
|
|
</p>
|
|
<p>
|
|
rLet(77944 < 18446744073709551615) → X
|
|
</p>
|
|
<p>
|
|
|!| expand 77944
|
|
</p>
|
|
<p>
|
|
rLet(0 < 4) → U
|
|
</p>
|
|
<p>
|
|
rLet(77945 < 18446744073709551615) → I
|
|
</p>
|
|
<p>
|
|
|.| U -->> 77944-0
|
|
</p>
|
|
<p>
|
|
|↯| U ... 77944-0
|
|
</p>
|
|
<p>
|
|
rLet(1 < 4) → X
|
|
</p>
|
|
<p>
|
|
|!| expand 77944-1
|
|
</p>
|
|
<p>
|
|
rLet(0 < 4) → K
|
|
</p>
|
|
<p>
|
|
rLet(2 < 4) → Z
|
|
</p>
|
|
<p>
|
|
|.| K -->> 77944-1-0
|
|
</p>
|
|
<p>
|
|
|!| expand 77944-1-0
|
|
</p>
|
|
<p>
|
|
rLet(0 < 4) → V
|
|
</p>
|
|
<p>
|
|
rLet(1 < 4) → Y
|
|
</p>
|
|
<p>
|
|
|.| V -->> 77944-1-0-0
|
|
</p>
|
|
<p>
|
|
|↯| V ... 77944-1-0-0
|
|
</p>
|
|
<p>
|
|
rLet(1 < 4) → I
|
|
</p>
|
|
<p>
|
|
|↯| I ... 77944-1-0-1
|
|
</p>
|
|
<p>
|
|
rLet(2 < 4) → I
|
|
</p>
|
|
<p>
|
|
|↯| I ... 77944-1-0-2
|
|
</p>
|
|
<p>
|
|
rLet(3 < 4) → Z
|
|
</p>
|
|
<p>
|
|
|!| expand 77944-1-0-3
|
|
</p>
|
|
<p>
|
|
rLet(0 < 4) → Q
|
|
</p>
|
|
<p>
|
|
rLet(4 < 4) → X
|
|
</p>
|
|
<p>
|
|
|.| Q -->> 77944-1-0-3-0
|
|
</p>
|
|
<p>
|
|
|↯| Q ... 77944-1-0-3-0
|
|
</p>
|
|
<p>
|
|
rLet(1 < 4) → 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" HGAP="180" ID="ID_760843174" MODIFIED="1535891853006" TEXT="Design" VSHIFT="29">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1513560607636" FOLDED="true" ID="ID_774099115" MODIFIED="1533608415430" 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ß dort Kind-iterieren können"/>
|
|
</node>
|
|
<node CREATED="1513561422541" FOLDED="true" ID="ID_1500554436" MODIFIED="1535891901910" 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="1525124215512" 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über möglich"/>
|
|
</node>
|
|
<node CREATED="1513561492668" FOLDED="true" ID="ID_600604579" MODIFIED="1525124215512" 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ür normalen ChildIterator"/>
|
|
<node CREATED="1513561531383" ID="ID_442154302" MODIFIED="1513561547728" TEXT="Match-Algo muß start-Offset verwalten und draufschlagen"/>
|
|
</node>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1513561577840" FOLDED="true" HGAP="63" ID="ID_260039139" MODIFIED="1535891938689" TEXT="Struktur Navigations-Zustand" VSHIFT="22">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1513561744004" ID="ID_937539446" MODIFIED="1513961543467" TEXT="hä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="1525124215512" TEXT="relativ => Node-Ref genü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ätzlich kann es Sonderfälle geben">
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1513561916554" ID="ID_1130596381" MODIFIED="1513561945359" TEXT="(node&, depth)">
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
<node CREATED="1513562001015" FOLDED="true" ID="ID_1952968226" MODIFIED="1535891935962" TEXT="zuzüglich konkretem Kind-Iterator">
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1513564476303" FOLDED="true" ID="ID_718816032" MODIFIED="1535891933050" 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ßlich
|
|
</p>
|
|
<p>
|
|
im realen UI in ä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ältnis von Original zu Expanded"/>
|
|
<node CREATED="1513859408489" ID="ID_1040511060" MODIFIED="1513859645105" TEXT="Expanded::yield muß 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> Rückgabe-Typ
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="forward"/>
|
|
<node CREATED="1513859590489" ID="ID_1305886859" MODIFIED="1513859654062" TEXT="das ist die stä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="1513978344340" 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&, 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ätzliche Allokation">
|
|
<icon BUILTIN="yes"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1513889026175" FOLDED="true" ID="ID_1644294386" MODIFIED="1525124214850" TEXT="Lösungs-Mö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="1535891925091" TEXT="Diskussion" VSHIFT="10">
|
|
<icon BUILTIN="forward"/>
|
|
<node CREATED="1513891660578" FOLDED="true" ID="ID_1557026848" MODIFIED="1525124214857" 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ür "Position""/>
|
|
</node>
|
|
<node CREATED="1513891739920" FOLDED="true" ID="ID_1279255374" MODIFIED="1525124214857" TEXT="Meta-Datenstruktur == Reflection">
|
|
<node CREATED="1513891751766" ID="ID_1061575112" MODIFIED="1513891760585" TEXT="muß nicht per se schlecht sein"/>
|
|
<node CREATED="1513891771979" ID="ID_1279317536" MODIFIED="1513891793738">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
<i>wenn</i> es sie gäbe <i>könnte</i> 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ß schon da sein">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...das heißt:
|
|
</p>
|
|
<p>
|
|
diese Struktur muß bereits beim Aufbauen des GUI
|
|
</p>
|
|
<p>
|
|
nebenbei mit aufgebaut werden, und ü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="1525124214858" 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önnte sowas unterstützen..."/>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1513893637863" FOLDED="true" ID="ID_1710637822" MODIFIED="1525124214857" TEXT="schön aber fragwü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öglicherwese</i> 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önnte es darauf hinauslaufen, daß 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> eine "Up"-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="1535891923427">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
<i>vorläufige</i> MInimal-Lösung
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="yes"/>
|
|
<node CREATED="1513893858089" ID="ID_1090821912" MODIFIED="1513893873067" TEXT="nur Expander nach außen ziehen"/>
|
|
<node CREATED="1513893873983" ID="ID_926734576" MODIFIED="1513893886449" TEXT="und fest als "Iterator"-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> 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ö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ächsten Schritte wä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ür IterSource"/>
|
|
<node CREATED="1513894173999" ID="ID_1818551612" MODIFIED="1513894187080" TEXT="...damit das breiter API aus Funktoren zugä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="1533608415448" TEXT="Beschluß" 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ü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ß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="1525124215513" TEXT="unschön aber zukunftsweisend...">
|
|
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
|
|
<node CREATED="1513961791716" FOLDED="true" ID="ID_996099359" MODIFIED="1513978359858" TEXT="zusätzliche Heap-Alloc für jedes Expand">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
gemeint ist,
|
|
</p>
|
|
<p>
|
|
<i>zusätzlich</i> 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ä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äter untersuchen">
|
|
<icon BUILTIN="yes"/>
|
|
<node CREATED="1513962043170" ID="ID_156284138" MODIFIED="1513962051989" TEXT="dazu muß 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 überprüfen"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1513961838174" ID="ID_579783999" MODIFIED="1513962463112" TEXT="Verhältnis der VTable-APIs noch unklar">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
Was ist <b>Nav</b> 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ür?
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1513961620603" FOLDED="true" ID="ID_1014293898" MODIFIED="1535891875282" TEXT="Implementierung">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node COLOR="#338800" CREATED="1513962702097" FOLDED="true" ID="ID_1829231358" MODIFIED="1533608415452" 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="1525124215513" TEXT="Anforderungen">
|
|
<node CREATED="1513962999465" ID="ID_677650141" MODIFIED="1513963008827" TEXT="ist nicht mehr IterSource<String>::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ür Konstruktion"/>
|
|
<node CREATED="1513963055921" ID="ID_598702105" MODIFIED="1513963075090" TEXT="exponiert das expandChildren()"/>
|
|
</node>
|
|
<node CREATED="1513966658753" FOLDED="true" ID="ID_1038653404" MODIFIED="1525124215513" TEXT="Konstrukt">
|
|
<node CREATED="1513966673608" FOLDED="true" ID="ID_343053579" MODIFIED="1514086565906" 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ä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="1514086567369" TEXT="direkt IterSource::iterator reimplementieren">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1513966814204" ID="ID_1477637829" MODIFIED="1513966818232" TEXT="ist halt lästig"/>
|
|
<node CREATED="1513966819268" ID="ID_725108588" MODIFIED="1513966823134" TEXT="hier aber wohl einfacher"/>
|
|
<node CREATED="1513966826779" ID="ID_806221726" MODIFIED="1513966853280" TEXT="könnte blueprint sein??">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
IterSource muß insgesamt besser erweiterbar werden....
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1513980929860" FOLDED="true" ID="ID_1710959906" MODIFIED="1513985103849" 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> 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="1525124215513" 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="1533608415454" 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="1533608415457" TEXT="Integration mit TreeExplorer">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1513986032290" FOLDED="true" ID="ID_1427647343" MODIFIED="1525124215513" 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=""riecht" nach einem generellen Problem">
|
|
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
|
|
<icon BUILTIN="clanbomber"/>
|
|
</node>
|
|
<node CREATED="1513986064509" FOLDED="true" ID="ID_1794003959" MODIFIED="1525124214863" TEXT="nun müßte man...">
|
|
<node CREATED="1513986085162" ID="ID_1791331544" MODIFIED="1513986090214" TEXT="von auß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="1525124214863" TEXT="Pragmatismus-Trip">
|
|
<icon BUILTIN="idea"/>
|
|
<node CREATED="1513988687617" ID="ID_1652718385" MODIFIED="1513988692411" TEXT="nicht jetzt lösen">
|
|
<icon BUILTIN="yes"/>
|
|
</node>
|
|
<node CREATED="1513988694704" ID="ID_1570679085" MODIFIED="1513988710933" TEXT="das wä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ü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="1525124215513" TEXT="vorlä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ä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önnen dieses Sub-Interface akzeptieren und liefern">
|
|
<icon BUILTIN="yes"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1513989030587" ID="ID_1529167083" MODIFIED="1514082163308" TEXT="TreeExplorer ü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="1533608415461" 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="1525124215513" 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="1525124214866" 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 "aktuelles Element""/>
|
|
<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="1525124214866" 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ä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ßt, depth ist <i>aktuelle</i> Tiefe!
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1510941577099" 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ür GenNode umsetzen">
|
|
<icon BUILTIN="yes"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1510941740069" FOLDED="true" ID="ID_1408571420" MODIFIED="1535891884712" 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ücke">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1513560690440" ID="ID_122153660" MODIFIED="1514154026278" TEXT="Spezial-Behandlung für Perspektive">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1514154062952" FOLDED="true" ID="ID_1352163554" MODIFIED="1533608415822" 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="1533608415466" 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ählt">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1514291864080" ID="ID_1213636271" MODIFIED="1514291872824" TEXT=""child exploration"">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node CREATED="1514261117856" FOLDED="true" ID="ID_732935391" MODIFIED="1525124215513" 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" FOLDED="true" HGAP="38" ID="ID_209463158" MODIFIED="1533608416157" TEXT="Zustands-Layer" VSHIFT="1">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node COLOR="#338800" CREATED="1514333524247" FOLDED="true" ID="ID_1136271037" MODIFIED="1533608415826" TEXT="Zustand umfaßt...">
|
|
<icon BUILTIN="info"/>
|
|
<node CREATED="1514333554411" ID="ID_1337747593" MODIFIED="1514333618358" TEXT="target (Pattern) const&"/>
|
|
<node CREATED="1514333705095" ID="ID_709075863" MODIFIED="1514898052783" TEXT="coverage (Builder)"/>
|
|
<node CREATED="1514333719613" FOLDED="true" ID="ID_256774095" MODIFIED="1533608415469" 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="1533608415828" TEXT="für jedes Element...">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1514338471073" FOLDED="true" ID="ID_1000829527" MODIFIED="1533608415472" STYLE="bubble" TEXT="target[depth] ==?">
|
|
<edge COLOR="#5b5ea6"/>
|
|
<node CREATED="1514338493135" FOLDED="true" ID="ID_1691944473" MODIFIED="1525124215513" 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ösung
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1514338508292" FOLDED="true" ID="ID_1940839257" MODIFIED="1525124215514" TEXT="sonst">
|
|
<node CREATED="1514338551790" ID="ID_76414417" MODIFIED="1514908827232" TEXT="wildcard -> setzen"/>
|
|
<node CREATED="1514338597880" ID="ID_413282334" MODIFIED="1514908827232" TEXT="match -> 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ösung
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1514908723845" ID="ID_1051709102" MODIFIED="1514908732301" TEXT="filtern auf Lösung">
|
|
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
|
|
</node>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1514828322209" FOLDED="true" HGAP="447" ID="ID_868482472" MODIFIED="1533608415833" 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ögliche Coverage
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1514847720759" FOLDED="true" ID="ID_831358447" MODIFIED="1533608415476" TEXT="Struktur">
|
|
<node CREATED="1514847726158" FOLDED="true" ID="ID_460639525" MODIFIED="1525124215514" TEXT="wo brauche ich Builder?">
|
|
<node CREATED="1514847747979" ID="ID_710804937" MODIFIED="1514847782198" TEXT="target ist ein Builder, wird aber nicht geändert">
|
|
<icon BUILTIN="smily_bad"/>
|
|
</node>
|
|
<node CREATED="1514847769184" ID="ID_567857702" MODIFIED="1514847778011" TEXT="neue Coverage muß geändert werden">
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1514847804652" FOLDED="true" ID="ID_1778000574" MODIFIED="1525124215514" TEXT="sind Builder sinnvoll?">
|
|
<node CREATED="1514847810723" ID="ID_468954134" MODIFIED="1514847816622" TEXT="gegenwä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="1525124214878" TEXT="Problem Normalisierung">
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
<node CREATED="1514847847398" ID="ID_1538721674" MODIFIED="1514847856905" TEXT="Builder-Funktionen können denormalisieren"/>
|
|
<node CREATED="1514847857748" ID="ID_1388054576" MODIFIED="1514847876837" TEXT="der Matching-Algo verläß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="1525124215514" 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="1533608415481" TEXT="Ankern unvollständiger Pfade">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node COLOR="#338800" CREATED="1514942350940" ID="ID_1658536334" MODIFIED="1515034261027" TEXT="erweitertes Verständnis von "Wildcard"">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1515031418282" ID="ID_1390320369" MODIFIED="1515034265977" TEXT="Anker im Match berü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öglich">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...insofern wir nur eine (partielle) Lösung signalisieren,
|
|
</p>
|
|
<p>
|
|
wenn wir einen <i>direkten</i> Match erziehlen.
|
|
</p>
|
|
<p>
|
|
Ein wildcard-Match führt nur dazu, daß wir zu den Kindern absteigen,
|
|
</p>
|
|
<p>
|
|
aber zählt erst mal für sich nicht als Lö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ür <i>elided</i> 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="1533608415483" 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ür vorstellen">
|
|
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1514339655585" FOLDED="true" ID="ID_20763657" MODIFIED="1533608415837" 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ü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="1533608415486" 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="überschreibt Position"/>
|
|
<node CREATED="1514339700955" ID="ID_503690023" MODIFIED="1514339717876" TEXT="kürzt/ändert sonst nix"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1514746187370" FOLDED="true" ID="ID_989083906" MODIFIED="1533608415491" TEXT="Problem der partiellen Covfefe">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1514746268280" FOLDED="true" ID="ID_1650861625" MODIFIED="1525124215514" TEXT="totale Coverage ist einfach">
|
|
<node CREATED="1514746278542" ID="ID_638094416" MODIFIED="1514746296223">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
Lösungen mü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="überall partielle Lösungen möglich"/>
|
|
<node CREATED="1514746345078" ID="ID_1469851869" MODIFIED="1514746354935" TEXT="wir wissen nicht, ob expand überhaupt geht"/>
|
|
<node CREATED="1514746367418" ID="ID_1714254434" MODIFIED="1514827781975" TEXT="Lösungsidee: partielle Lö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="1525124215514" TEXT="Rekursion fä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="1533608415494" 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ä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" FOLDED="true" HGAP="36" ID="ID_996085388" MODIFIED="1533608416159" TEXT="Filter-Layer" VSHIFT="-1">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1514747460122" ID="ID_1735380227" MODIFIED="1514908757875" TEXT="fischt nach tatsächlichen Lösungen">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node CREATED="1514747470624" ID="ID_43243557" MODIFIED="1514827781975" TEXT="ermöglicht partielle und maximale Lö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="1533608415841" TEXT="Fä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ösung">
|
|
<icon BUILTIN="hourglass"/>
|
|
</node>
|
|
<node CREATED="1514747506516" ID="ID_1823650567" MODIFIED="1515031497729" TEXT="alle totalen Lösungen">
|
|
<icon BUILTIN="hourglass"/>
|
|
</node>
|
|
<node CREATED="1514747511683" ID="ID_1711746734" MODIFIED="1515031538639" TEXT="erste maximale partielle Lösung">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node CREATED="1514747534880" ID="ID_668507058" MODIFIED="1515031542774" TEXT="alle maximalen partiellen Lösungen">
|
|
<icon BUILTIN="hourglass"/>
|
|
</node>
|
|
<node CREATED="1514747542535" FOLDED="true" ID="ID_1475644253" MODIFIED="1533608415498" TEXT="alle lokal maximalen partiellen Lösungen">
|
|
<icon BUILTIN="hourglass"/>
|
|
<node CREATED="1514747562436" ID="ID_1216946339" MODIFIED="1514747569143" TEXT="am Ende einer Glückssträne"/>
|
|
<node CREATED="1514747652752" ID="ID_694825695" MODIFIED="1514747659603" TEXT="etwas kniffelig zu implementieren"/>
|
|
<node CREATED="1514747694763" ID="ID_1088990348" MODIFIED="1514747707037" TEXT="letztlich ähnlich wie globale Maximums-Suche"/>
|
|
<node CREATED="1514747709400" ID="ID_556979975" MODIFIED="1514747724946" TEXT="lediglich das Maximum wird zurückgesetzt"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1514829169777" FOLDED="true" HGAP="32" ID="ID_331008637" MODIFIED="1533608416162" TEXT="Integration" VSHIFT="10">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node COLOR="#338800" CREATED="1514829220907" FOLDED="true" ID="ID_1488508113" MODIFIED="1533608415845" TEXT="zunächst Algo fü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="1533608415500" 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="1533608415848" 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="1533608415851" 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ösung ist totale Coverage, wenn möglich">
|
|
<icon BUILTIN="yes"/>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1514942171091" ID="ID_1193370362" MODIFIED="1515034463169" TEXT="später/bei Bedarf: alle Lö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="1533608415854" TEXT="std::swap fü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="1533608415503" 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ß 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ü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="1533608415856" 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ädikate spiegeln stets den Zustand der UI-Coord">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...und nicht den <i>möglichen</i> Zustand.
|
|
</p>
|
|
<p>
|
|
Denn für letzteren gibt es die "canXX"-Prädikate
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1514943888969" ID="ID_1634332467" MODIFIED="1515034463169" TEXT="möglichen Anker nebenbei ermitteln">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1510941766817" FOLDED="true" HGAP="13" ID="ID_1117346518" MODIFIED="1535891833392" TEXT="Testfä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ä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="1533608415859" TEXT="Frage: expliziter Test für path resolution?">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
macht es Sinn, dafü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üssen wir die BlackBox öffnen">
|
|
<icon BUILTIN="smily_bad"/>
|
|
</node>
|
|
<node CREATED="1514329261217" ID="ID_1909490994" MODIFIED="1518487921065" TEXT="die Testfälle für Coverage-Mutation genügen">
|
|
<icon BUILTIN="yes"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1514329328840" FOLDED="true" HGAP="35" ID="ID_1362494392" MODIFIED="1533608415865" 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="1533608415506" TEXT="Trivial-Fall: bestehenden Pfad finden">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node COLOR="#338800" CREATED="1514329441136" ID="ID_359779455" MODIFIED="1518487921065" TEXT="mit unvollständiger Coverage">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1514329450807" ID="ID_211306404" MODIFIED="1518487921065" TEXT="mit Überhang">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1515114713029" FOLDED="true" ID="ID_424458820" MODIFIED="1533608415508" 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="1533608415516" TEXT="interpolieren">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node COLOR="#338800" CREATED="1514329498169" ID="ID_259096801" MODIFIED="1518487921065" TEXT="einfache Lücke schließen">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1514329504776" ID="ID_1411396073" MODIFIED="1518487921065" TEXT="doppelte Lücke schließ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ücke">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1514329555505" ID="ID_1508437078" MODIFIED="1518487921065" TEXT="fehlender Anker plus zweite Lücke">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1517509311733" ID="ID_796216711" MODIFIED="1518750402160" TEXT="Anker+elided plus Lücke schließ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="1525124215514">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
realer Pfad endet mit elided <i>nach</i> Wildcard
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1518752249648" ID="ID_221401224" MODIFIED="1518752257211" TEXT="erst wollte ich das ausschließ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="1533608415523" TEXT="Scheitern">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1514329465117" FOLDED="true" ID="ID_1304144230" MODIFIED="1525124215514" 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ß der Algorithmus solche Lö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ü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ü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="1533608415528" TEXT="Lösungs-Auswahl">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node COLOR="#338800" CREATED="1514329649868" ID="ID_1490593624" MODIFIED="1518487921066" TEXT="erste von zwei äquivalenten Lösungen">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1514329715859" ID="ID_734262382" MODIFIED="1518487921066" TEXT="größere Coverage durch längeres, festes Postifix">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1514329773739" ID="ID_1790993462" MODIFIED="1518487921066" TEXT="größere Lösung wird später gefunden">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1514329784090" ID="ID_976931684" MODIFIED="1518487921066" TEXT="größere Lösung als mittlere von dreien">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1514329806999" ID="ID_787741094" MODIFIED="1518487921066" TEXT="größte Lösung zuerst">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1518051827562" FOLDED="true" ID="ID_126260279" MODIFIED="1533608415532" 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ücke schließen, Rest erhalten">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1518051909942" ID="ID_1891019118" MODIFIED="1518487921066" TEXT="Scheitern: kann Lücke nicht schließen">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1518051925316" ID="ID_766944591" MODIFIED="1518487921066" TEXT="Scheitern: Rest enthält noch Wildcards">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1508540835505" FOLDED="true" ID="ID_191493714" MODIFIED="1533685070973" TEXT="Zustand">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1514748438984" ID="ID_84241950" MODIFIED="1518487921066" TEXT="reflektiert letzte Lö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: ändern">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1514748505488" ID="ID_947047856" MODIFIED="1518487921066" 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> auf dem API der default sein
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1518052051947" FOLDED="true" ID="ID_1272905286" MODIFIED="1533685073389" 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="übernimmt überschüssigen Rest">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1518052149982" ID="ID_1099521506" MODIFIED="1518143007944" TEXT="sicherstellen, daß keine Wildcards verbleiben">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1515451105808" FOLDED="true" ID="ID_1323377531" MODIFIED="1533685074917" 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: Überlapp finden">
|
|
<icon BUILTIN="yes"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1508538883715" ID="ID_506584428" MODIFIED="1531584013560" TEXT="Basis: LocationQuery">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1508538979935" ID="ID_1139910958" MODIFIED="1511572072944" TEXT="immer explizit">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...das heiß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="1511572072959" TEXT="out: Anker-Literal">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
Zweck ist vor allem, meta-Specs wie firstWindow, currentWindow aufzulö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<Literal>"/>
|
|
<node CREATED="1514330179052" ID="ID_1033437899" MODIFIED="1514330186823" TEXT="mit expandChildren()-Operation"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1509319992204" HGAP="60" ID="ID_258976142" MODIFIED="1511572072982" TEXT="prototypische Implementierung...." VSHIFT="21">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...verwendet einen GenNode-Tree
|
|
</p>
|
|
<p>
|
|
als Reprä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ängigkeit">
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
<node CREATED="1515884093053" ID="ID_578386223" MODIFIED="1518487921066" TEXT="kö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ü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ür WindowLocator"/>
|
|
<node CREATED="1515885847767" ID="ID_1781347382" MODIFIED="1518487921066" TEXT="für PanelManager"/>
|
|
<node CREATED="1515885855014" ID="ID_1634512088" MODIFIED="1518487921066" TEXT="fü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="1518487921066" TEXT="ist OK">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
die Regel ist:
|
|
</p>
|
|
<p>
|
|
Bei zyklischen Abhängigkeiten erfolgt der Ringschluß
|
|
</p>
|
|
<p>
|
|
an einer Stelle ü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 über abstrakte Interfaces geführt"/>
|
|
<node CREATED="1515891349731" ID="ID_1663035567" MODIFIED="1518487921066" TEXT="ViewLocator "generiert nebenbei" die DSL-Token">
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1506175097367" ID="ID_1442345755" MODIFIED="1523022775958" 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="-971;84;" ID="Arrow_ID_1191206769" SOURCE="ID_1844877136" STARTARROW="None" STARTINCLINATION="502;0;"/>
|
|
<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="1518487921066" 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="1529076688969" TEXT="Effizienz mäß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 über die ganze UI-Topologie
|
|
</li>
|
|
<li>
|
|
im zweiten Schritt wiederholen wir noch mal den Abstiegspfad zur Lösung des ersten Schrittes
|
|
</li>
|
|
</ul>
|
|
<p>
|
|
Grundsätzlich gilt hier die Einschä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" 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> die DSL auf
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1522809068294" ID="ID_1952538901" MODIFIED="1522809098365" TEXT="LocatorSpec in der DSL hat ein Depend<UILocationSolver>"/>
|
|
<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="1533685125752" TEXT="Funktionsweise der "Resolution" klären" VSHIFT="1">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node COLOR="#435e98" CREATED="1515980158112" ID="ID_1744041635" MODIFIED="1522939070606" TEXT="der Reihe nach prüfen">
|
|
<icon BUILTIN="info"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1515979664353" ID="ID_1353761382" MODIFIED="1533608413665" TEXT="was heißt "existing"?">
|
|
<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" FOLDED="true" ID="ID_397957162" MODIFIED="1533608416169" TEXT="Schlußfolgerung">
|
|
<icon BUILTIN="forward"/>
|
|
<node CREATED="1516909893778" ID="ID_659065678" MODIFIED="1518487921067" TEXT=""existing" ⟺ total coverage"/>
|
|
<node CREATED="1516909908686" ID="ID_1886532442" MODIFIED="1518487921067" TEXT=""create" ⟺ can cover"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1515980170359" ID="ID_1820091983" MODIFIED="1518487921067" TEXT="Lösung erfordert wenigstens partielle coverage"/>
|
|
<node CREATED="1515982274106" ID="ID_1283888757" MODIFIED="1533608413666" TEXT="Problem: Match ermö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" ID="ID_773035469" MODIFIED="1533608413667" STYLE="fork" TEXT="Fallback "wenn alles scheitert"?">
|
|
<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" FOLDED="true" ID="ID_436584221" MODIFIED="1533608416170" TEXT="Regel muß 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="1518487921067" TEXT="sonst default fü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" HGAP="24" ID="ID_4925227" MODIFIED="1533608413668" TEXT="wie wird das Zielobjekt selber bestimmt?" VSHIFT="-1">
|
|
<icon BUILTIN="help"/>
|
|
<node CREATED="1516148029148" FOLDED="true" ID="ID_1974346974" MODIFIED="1533608416172" TEXT="Mö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änzen"/>
|
|
</node>
|
|
<node CREATED="1516148091716" FOLDED="true" ID="ID_1815243780" MODIFIED="1533608416174" 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="1533608415867" TEXT="Coverage feststellbar">
|
|
<node CREATED="1516148128790" FOLDED="true" ID="ID_739368723" MODIFIED="1533608415534" TEXT="partiell">
|
|
<node CREATED="1516148133085" ID="ID_325513379" MODIFIED="1518487921067" TEXT="ein nicht-Wildcard darunter muß schon existieren"/>
|
|
<node CREATED="1516148144267" ID="ID_1074912934" MODIFIED="1518487921067" TEXT="Problem: Perspektive"/>
|
|
</node>
|
|
<node CREATED="1516148152938" FOLDED="true" ID="ID_1439081992" MODIFIED="1533608415536" TEXT="total">
|
|
<node CREATED="1516148156514" ID="ID_323573839" MODIFIED="1518487921067" TEXT="Komponente selber muß spezifiziert sein"/>
|
|
<node CREATED="1516148172864" ID="ID_1611427093" MODIFIED="1518487921067" TEXT="erst dann kann man Match überhaupt prüfen"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1516148185461" FOLDED="true" ID="ID_1903672954" MODIFIED="1533608415872" TEXT="Konsequenz">
|
|
<icon BUILTIN="forward"/>
|
|
<node CREATED="1516148190821" ID="ID_1390287231" MODIFIED="1518487921067" TEXT="Koordinaten-Ergänzung muß im Locator erfolgen"/>
|
|
<node CREATED="1516909726125" ID="ID_1451248007" MODIFIED="1518487921067">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
<b>existing()</b> sollte <i>default</i> sein und <b>create()</b> explizit anzufordern
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
weil der größte Teil aller real anzugebenden Regel-Klauseln
|
|
</p>
|
|
<p>
|
|
von der Bedeutung her "existing" 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ö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="1533608415539" TEXT="abschließ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" FOLDED="true" ID="ID_1054137561" MODIFIED="1533608416176" 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> 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öchstes ein abschließendes</i> Element hinzugefü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> und <i>partially covered</i>
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node COLOR="#48639d" CREATED="1516916096887" HGAP="32" ID="ID_319974456" MODIFIED="1533608413676" TEXT="zu klären...." VSHIFT="8">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node COLOR="#338800" CREATED="1516916105462" FOLDED="true" ID="ID_1576570507" MODIFIED="1533608416177" 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" FOLDED="true" ID="ID_1667593991" MODIFIED="1533608416179" TEXT="wie umschiffen wir konkret das Problem mit der Perspektive?">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1517011709672" FOLDED="true" ID="ID_755188751" MODIFIED="1533608415875" TEXT="Problem ist...">
|
|
<icon BUILTIN="info"/>
|
|
<node CREATED="1517011717447" ID="ID_1098719627" MODIFIED="1518487921067" TEXT="daß es typischerweise nur eine Perspektive gibt">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
zwar könnte es (später mal) sein,
|
|
</p>
|
|
<p>
|
|
daß 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öchte">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...weil die Perspektive eigentlich als <i>etwas Orthogonales</i> empfunden wird,
|
|
</p>
|
|
<p>
|
|
das nicht dirket zur "harten" Topologie gehört, sondern vielmehr bestehende Elemente umgruppiert.
|
|
</p>
|
|
<p>
|
|
Andererseits möchte man eben doch manchmal eine View-Spec eigens auf eine bestimmte Perspektive beschrä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ösung verhindern kann">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...und zwar genau dann, wenn bereits die nächste Komponente unterhalb der Perspektive,
|
|
</p>
|
|
<p>
|
|
also das Pannel, nicht oder nicht in dieser Form existiert, also erzeugt werden müßte.
|
|
</p>
|
|
<p>
|
|
Unser Kriterium für Lö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="1533608415878" TEXT="mehre Möglichkeiten">
|
|
<icon BUILTIN="idea"/>
|
|
<node CREATED="1517012160083" FOLDED="true" ID="ID_485906589" MODIFIED="1533608415544" TEXT="currentPerspective()">
|
|
<icon BUILTIN="button_cancel"/>
|
|
<node CREATED="1517012171313" ID="ID_736089446" MODIFIED="1518487921067" TEXT="weiteres Prädikat"/>
|
|
<node CREATED="1517012228857" ID="ID_308230619" MODIFIED="1518487921067" TEXT="muß explizit in der Spec stehen"/>
|
|
<node CREATED="1517012184768" ID="ID_165605510" MODIFIED="1518487921067" TEXT="wird durch das gewä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="1533608415549" 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ählt das nicht mehr als Wildcard"/>
|
|
<node CREATED="1517012358240" ID="ID_813053802" MODIFIED="1518487921068" TEXT="und wird folglich gebunden und als Lösung geliefert"/>
|
|
<node CREATED="1517012382901" FOLDED="true" ID="ID_273084853" MODIFIED="1525124215514" TEXT="Pro">
|
|
<node CREATED="1517012386556" ID="ID_391025327" MODIFIED="1518487921068" TEXT="funktioniert zuverlässig">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...sofern es stets eine Perspektive geben muß
|
|
</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="1525124215515" 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="1533608415556" 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ö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="1525124215515" 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ützen. In solchen Fällen brauchen wir
|
|
</p>
|
|
<p>
|
|
ein Konstrukt, mit dem sich eine Ebene im Baum überspringen läßt
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1517012879513" ID="ID_391823235" MODIFIED="1518487921068" TEXT="muß sowiso noch nachimplementiert werden">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
<i>"muß"</i> ist relativ, denn mit den bisherigen Anforderungen
|
|
</p>
|
|
<p>
|
|
hätte es genügt, den "elided"-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ügt sich organisch in die Implementierung ein">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
Die korrekte Semantik fällt uns hier wirklich in den Schoß,
|
|
</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="1525124215515" 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ämlich '*' sehr offensichtlich und bekannt ist,
|
|
</p>
|
|
<p>
|
|
während der andere (eben dieses '.' == elided) eigens erklärt werden muß
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1517013053265" ID="ID_1569479466" MODIFIED="1518487921068" TEXT="gewisses Miß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änkungen unterlaufen
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1517013164050" ID="ID_623452791" MODIFIED="1518487921068" TEXT="mehrfach-Lösungen nicht offensichtlich">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
Korrekter Gebrauch setzt eigentlich voraus,
|
|
</p>
|
|
<p>
|
|
daß es an dieser Stelle auch tatsächlich "gar nichts" oder nur "ein stets festes Element" gibt.
|
|
</p>
|
|
<p>
|
|
Für die Perspektive ist das (nach jetztiger Planung) stets gegeben.
|
|
</p>
|
|
<p>
|
|
|
|
</p>
|
|
<p>
|
|
Wenn man allerdings diese Bedingung verletzt, dann matcht der "elided"-Platzhalter
|
|
</p>
|
|
<p>
|
|
in mehreren alternativen Zweigen wie ein Wildcard, und es hängt dann von
|
|
</p>
|
|
<p>
|
|
zufälligen Umständen ab, ob man die erwartete Lösung bekommt
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1517013731613" ID="ID_1238726037" MODIFIED="1518487921068" TEXT="besste Lö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" FOLDED="true" ID="ID_1339759450" MODIFIED="1533608416181" TEXT="wie ermitteln wir das zu erzeugende Suffix des Pfades?">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1517016683468" ID="ID_174913733" MODIFIED="1518487921068" TEXT=""create()"-Fall ⟹ partiallyCovered()">
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
<node CREATED="1517016762625" ID="ID_320463832" MODIFIED="1518487921068" TEXT="...müßte diese Info an den Allocator weitergeben"/>
|
|
<node CREATED="1517016781198" FOLDED="true" ID="ID_1556601725" MODIFIED="1533608415881" TEXT="Idee: Allocator nimmt UI-Coord-Resolver?">
|
|
<icon BUILTIN="button_cancel"/>
|
|
<node CREATED="1517018164354" ID="ID_308763864" MODIFIED="1518487921068" TEXT="würde theoretisch gehen...">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
bloß würde sich die Signatur der DSL-Bausteine ändern:
|
|
</p>
|
|
<p>
|
|
Allocator = std::function<UICoord(UICoordResolver)>;
|
|
</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ürde das ganze Gefrickel mit Referenzen losgehen,
|
|
</p>
|
|
<p>
|
|
in einem Stück Metaprogramming-Code, das ohnenhin schon ziemlich "dicht" ist....
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1517018198398" ID="ID_986073860" MODIFIED="1518487921068" TEXT="sonst muß man halt noch mal traversieren">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
Der Punkt ist: das ist eine reine Lauzeit/Effzienz-Überlegung.
|
|
</p>
|
|
<p>
|
|
|
|
</p>
|
|
<p>
|
|
Nachdem das Pfad-Matching in der DSL für die Location die passende Lösung gewählt hat,
|
|
</p>
|
|
<p>
|
|
wä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ösung
|
|
</p>
|
|
<p>
|
|
herausbewegt. Und der Allokator muß sich dann erneut einen UICoordResolver bauen,
|
|
</p>
|
|
<p>
|
|
oder zumindest das LocationQuery-Interface bemü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ä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ätzliche Komplexitä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" FOLDED="true" ID="ID_1831478029" MODIFIED="1533608416184" TEXT="wie kö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 "asset Tab"">
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1518658837468" ID="ID_744795602" MODIFIED="1518658861070" TEXT="invertiert die logischen Abhängigkeiten">
|
|
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
|
|
<icon BUILTIN="broken-line"/>
|
|
</node>
|
|
<node CREATED="1518658902747" FOLDED="true" ID="ID_976555378" MODIFIED="1533608415883" 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öchte ich eigentlich nicht einfü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="⟹ 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" FOLDED="true" ID="ID_809925267" MODIFIED="1533608416186" TEXT="wie genau muß die Aufrufschnittstelle aussehen?">
|
|
<icon BUILTIN="help"/>
|
|
<node CREATED="1517084001346" FOLDED="true" ID="ID_101484926" MODIFIED="1533608415885" TEXT="bekannter Ausgangspunkt">
|
|
<node CREATED="1517083926212" FOLDED="true" ID="ID_1898315920" MODIFIED="1533608415558" 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="1525124215515" 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="1533608415560" TEXT="allocation">
|
|
<node CREATED="1517084052451" ID="ID_1249788788" MODIFIED="1518487921068" TEXT="konsumiert Ergebnis von location"/>
|
|
<node CREATED="1517084617710" FOLDED="true" ID="ID_1812571482" MODIFIED="1525124215515" TEXT="braucht">
|
|
<node CREATED="1517084621814" FOLDED="true" ID="ID_1163837563" MODIFIED="1525124214917" TEXT="LocationQuery">
|
|
<node CREATED="1517084626949" FOLDED="true" ID="ID_73780971" MODIFIED="1525124214917" TEXT="um die Multiplicity-Constraints zu prü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ä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="1525124214918" 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ßen"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1517085201199" FOLDED="true" ID="ID_857446188" MODIFIED="1533608415888" TEXT="Problem: Name/Typ">
|
|
<node CREATED="1517085219749" FOLDED="true" ID="ID_1532208378" MODIFIED="1533608415564" TEXT="muß das DSL-API geä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="1525124215515" 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> "Locator"
|
|
</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="1533608415568" 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ö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änzt diesen"/>
|
|
<node CREATED="1517505271712" ID="ID_454259889" MODIFIED="1518487921068" TEXT="Aufruf -> solve -> expliziter Pfad"/>
|
|
</node>
|
|
<node CREATED="1517505121564" ID="ID_880504673" MODIFIED="1518487921068" TEXT="Aufruf ändert sich">
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1517505406390" FOLDED="true" ID="ID_799191936" MODIFIED="1533608415890" TEXT="DSL-Anwendung">
|
|
<icon BUILTIN="info"/>
|
|
<node CREATED="1517505438209" FOLDED="true" ID="ID_1991447613" MODIFIED="1533608415571" 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="1525124215515" 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="1533608415574" 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="1525124215515" TEXT="liefert Pfad">
|
|
<node CREATED="1517505605363" ID="ID_1831975809" MODIFIED="1518487921069" TEXT="zeigt auf gewü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" FOLDED="true" ID="ID_1887578617" MODIFIED="1533608416188" TEXT="welche zusätzlichen Services werden benötigt?">
|
|
<icon BUILTIN="help"/>
|
|
<node CREATED="1517021372159" FOLDED="true" ID="ID_841350723" MODIFIED="1533608415892" 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> 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> bekommt
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1517021389028" FOLDED="true" ID="ID_1240883488" MODIFIED="1533608415894" 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=""elided" 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ä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" 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" FOLDED="true" ID="ID_1257805922" MODIFIED="1533608416189" 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" FOLDED="true" ID="ID_1009975119" MODIFIED="1533608416191" TEXT="Zweck">
|
|
<node COLOR="#338800" CREATED="1517014013207" FOLDED="true" ID="ID_1843964714" MODIFIED="1533608415896" TEXT="automatisches Injizieren von "elided"">
|
|
<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="1533608415900" TEXT="Lösung für "asset Tab"">
|
|
<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öchte, daß für spezielle Sub-Elemente,
|
|
</p>
|
|
<p>
|
|
die aus einem fremden Kontext heraus geöffnet werden,
|
|
</p>
|
|
<p>
|
|
zunächst versucht wird, einen irgendwo im UI schon bestehenden TAB
|
|
</p>
|
|
<p>
|
|
für speziell diesen Element-Typ wiederzuverwenden; das erlaubt dem User,
|
|
</p>
|
|
<p>
|
|
sich einen Platz fü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öchte man auf einen
|
|
</p>
|
|
<p>
|
|
generischen Ort zurückfallen, und erst als letzte default-Lösung
|
|
</p>
|
|
<p>
|
|
im aktuellen Fenster einen vö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ür solche Komplexitä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="1533608415575" TEXT="#1130 allow view location by similar kind">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
<node CREATED="1518762071967" FOLDED="true" ID="ID_1501187790" MODIFIED="1525124215515" TEXT="ggfs partielle Lö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änkt</i> auf die TypID?
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="help"/>
|
|
</node>
|
|
<node CREATED="1518830433876" FOLDED="true" ID="ID_486080918" MODIFIED="1525124214925" 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> 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 ⟹ aktuelle typID wird als Term angehängt"/>
|
|
<node CREATED="1518830626306" ID="ID_1109967783" MODIFIED="1518830635572" TEXT="...und muß somit schon existieren"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1518660243382" FOLDED="true" HGAP="32" ID="ID_1951597669" MODIFIED="1533608416192" TEXT="technischer Ansatz" VSHIFT="-2">
|
|
<node CREATED="1518660484501" FOLDED="true" ID="ID_1142230788" MODIFIED="1533608415902" 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="1533608415577" TEXT="verschwenderisch">
|
|
<node CREATED="1518660724012" ID="ID_471630453" MODIFIED="1518660730367" TEXT="zusätzlicher Pass"/>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1518660732051" ID="ID_595304644" MODIFIED="1518738065908" TEXT="fü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="1533608415906" 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="1533608415580" 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ü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" FOLDED="true" HGAP="79" ID="ID_1989234578" MODIFIED="1533608416194" TEXT="vorerst abgelehnt" VSHIFT="21">
|
|
<icon BUILTIN="stop-sign"/>
|
|
<node CREATED="1518743153214" ID="ID_513041431" MODIFIED="1518743159705" TEXT="keine der Lösungen wirklich attraktiv"/>
|
|
<node CREATED="1518743167708" ID="ID_1748977650" MODIFIED="1518743186813" TEXT="sprengt gewissermaßen den Ansatz eines reinen Matchers"/>
|
|
<node CREATED="1518743192305" ID="ID_1134364758" MODIFIED="1518743222705" TEXT="wenn man wirkliche Unifikation will ⟹ Resolution-Engine nehmen"/>
|
|
<node CREATED="1518743226772" FOLDED="true" ID="ID_1108128377" MODIFIED="1533608415908" 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" ID="ID_406973235" MODIFIED="1533608413702" TEXT="Umbauen Locator in Functor">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node COLOR="#338800" CREATED="1517505339663" FOLDED="true" ID="ID_470503309" MODIFIED="1533608416197" TEXT="DSL-Header restrukturieren">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node COLOR="#338800" CREATED="1517507830918" FOLDED="true" ID="ID_1112334086" MODIFIED="1533608415912" TEXT="Locator analog zu Allocator definieren">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1519355684307" FOLDED="true" ID="ID_336676610" MODIFIED="1533608415582">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
was <i>ist</i> 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="1533608415585" TEXT="Verwendungs-Schema">
|
|
<icon BUILTIN="yes"/>
|
|
<node CREATED="1519357910532" FOLDED="true" ID="ID_1670200821" MODIFIED="1525124215515" TEXT="komplett symmetrisch?">
|
|
<icon BUILTIN="button_cancel"/>
|
|
<node CREATED="1519357919770" ID="ID_1959314257" MODIFIED="1519357951259" TEXT="zusä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="1525124215516" 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="1533608415590" 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ück">
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
</node>
|
|
<node CREATED="1519359156410" FOLDED="true" ID="ID_1786241256" MODIFIED="1525124215516" 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> im UI ist noch offen
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1519359193821" ID="ID_588596170" MODIFIED="1519359234665" STYLE="fork" TEXT="das könnte Argument eines Builders sein"/>
|
|
<node CREATED="1519359239735" FOLDED="true" ID="ID_988890391" MODIFIED="1525124214959" TEXT="konkret......">
|
|
<node CREATED="1519438604809" ID="ID_313142617" MODIFIED="1519438615852" TEXT="Lösevorgang muß den Ziel-Level kennen"/>
|
|
<node CREATED="1519438617271" ID="ID_1310079168" MODIFIED="1519438673926">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
<i>fast immer</i> ist das aber UIC_VIEW
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
im Moment fällt mir ü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äre ja auch dä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ß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ßen,
|
|
</p>
|
|
<p>
|
|
oder ob das View-Element noch angehängt werden soll. Diese Variation ist essentiell,
|
|
</p>
|
|
<p>
|
|
um Regeln auszudrü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ß der Level entweder aus der DSL kommen">
|
|
<icon BUILTIN="button_cancel"/>
|
|
</node>
|
|
<node CREATED="1519440054651" ID="ID_1512334426" MODIFIED="1519442712213" TEXT="oder er muß ü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="1525124215516" 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>
|
|
                          panel("blah")
|
|
</p>
|
|
<p>
|
|
                          or currentWindow().panel("blubb").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<UIC_VIEW> locate = panel("blah")
|
|
</p>
|
|
<p>
|
|
                                                     or currentWindow().panel("blubb").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("blah")
|
|
</p>
|
|
<p>
|
|
                                or currentWindow().panel("blubb").create()
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1519440138712" FOLDED="true" ID="ID_861550710" MODIFIED="1525124215516" TEXT="Entscheidung">
|
|
<icon BUILTIN="yes"/>
|
|
<node CREATED="1519440157310" FOLDED="true" ID="ID_1912054433" MODIFIED="1525124214959" 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="1525124214959" 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ü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="1533608415913">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
Anwendung <i>delegiert</i> 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ü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ü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="1533608415916" TEXT="Service-Zugang regeln">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1520221913300" FOLDED="true" ID="ID_906905" MODIFIED="1533608415593" TEXT="Design?">
|
|
<icon BUILTIN="help"/>
|
|
<node CREATED="1520221927138" FOLDED="true" ID="ID_782466951" MODIFIED="1525124215516" 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öne Lö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="1525124215516" 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="1525124214962" TEXT="gefä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="1533608415595" TEXT="globale Variable zurü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="1533608415599" TEXT="DependencyFactory verwenden">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1520721767005" ID="ID_364557801" MODIFIED="1522806969961" TEXT="dazu muß 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="1525124215516" TEXT="Verdrahtung einrichten" VSHIFT="61">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1522804312832" ID="ID_1841038371" MODIFIED="1522804485667" STYLE="fork" TEXT="InteractionDirector -> Navigator == Service LocationQuery"/>
|
|
<node CREATED="1522804344916" ID="ID_456601994" MODIFIED="1522804392465" TEXT="ViewLocator -> UILocationSolver == Service"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1517507576168" FOLDED="true" ID="ID_700127725" MODIFIED="1533608415918" 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ä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ür <i>create Clauses</i>
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1517505346701" FOLDED="true" ID="ID_1733459677" MODIFIED="1533608416201" TEXT="LocationSolver einfü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="1533608415920" TEXT="Framework für mehrere Klauseln">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node COLOR="#338800" CREATED="1517506971514" ID="ID_1227765715" MODIFIED="1518487921069" TEXT="Iterator(LocationClause const&)">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1517508131749" FOLDED="true" ID="ID_1527522188" MODIFIED="1533608415602" 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ügen">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1517505737977" FOLDED="true" ID="ID_606655578" MODIFIED="1533608415928" TEXT="Lö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ü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="1533608415606" 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ö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ö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="1533608415610">
|
|
<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ür create()-Klauseln"/>
|
|
<node CREATED="1518762532376" ID="ID_720810877" MODIFIED="1518762565908" TEXT="pragmatische Lösung, statt voller Unifikation">
|
|
<icon BUILTIN="yes"/>
|
|
</node>
|
|
<node CREATED="1518838263050" FOLDED="true" ID="ID_443518928" MODIFIED="1525124215516" 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="1525124214993" TEXT="wie Pattern modifizieren?">
|
|
<node CREATED="1518838298468" ID="ID_753244692" MODIFIED="1518838305407" TEXT="muß ü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ß jeder Anwender dieser Funktion sicherstellen, daß 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ß das fü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="1533608415615" TEXT="Fallunterscheidung">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node COLOR="#338800" CREATED="1518055059890" FOLDED="true" ID="ID_1240967474" MODIFIED="1525124215516" TEXT="Standard: totale Coverage!">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1518055394000" ID="ID_1230502265" MODIFIED="1518487921069" TEXT="alles bis auf Komponente selber muß bestätigt sein">
|
|
<icon BUILTIN="info"/>
|
|
</node>
|
|
<node CREATED="1518215016983" ID="ID_643091836" MODIFIED="1518487921069" TEXT="ggfs anzuhängende KOmponente nicht Teil der Lösung"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1518055089510" FOLDED="true" ID="ID_1374209563" MODIFIED="1525124215516" 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="1525124214993" TEXT="Frage: totale Neuerzeugung unterstützen?">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...das würde bedeuten, daß man sogar ein neues Hauptfenster erzeugt.
|
|
</p>
|
|
<p>
|
|
Also in diesem Fall würde ü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ß 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ötig</i> anhängen
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1518215051242" FOLDED="true" ID="ID_1984395087" MODIFIED="1525124215517" TEXT="Ablauf-Logik">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1518213040236" FOLDED="true" ID="ID_1048898871" MODIFIED="1525124214993" STYLE="bubble" TEXT="Lä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ösen"/>
|
|
<node BACKGROUND_COLOR="#efedc4" CREATED="1518213057553" FOLDED="true" ID="ID_1840655064" MODIFIED="1525124214994" 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="1533608415618" TEXT="in jedem Fall korrekte Länge sicherstellen">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1518212471553" FOLDED="true" ID="ID_1821401889" MODIFIED="1525124215517" TEXT="Frage: wann?">
|
|
<node CREATED="1518212565636" ID="ID_1223770753" MODIFIED="1518487921070" TEXT="Lö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ö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="1525124215517" TEXT="Frage: zu lange Klauseln?">
|
|
<icon BUILTIN="stop-sign"/>
|
|
<node CREATED="1518212721599" ID="ID_1131508916" MODIFIED="1518487921070" TEXT="...wären nachträglich unter Ziel-Level zu kürzen">
|
|
<icon BUILTIN="info"/>
|
|
</node>
|
|
<node CREATED="1518212683340" ID="ID_1968312736" MODIFIED="1518487921070">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
<i>könnte</i> 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="1525124215517" 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 >= depth"/>
|
|
<node CREATED="1518212959895" ID="ID_930933486" MODIFIED="1518487921070" TEXT="len <= depth+1"/>
|
|
</node>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1518145778249" FOLDED="true" ID="ID_462394658" MODIFIED="1533608415620" TEXT="Fälle geschickt zusammenfassen (duplikate Aktionen)">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node BACKGROUND_COLOR="#efedc4" CREATED="1518213086862" FOLDED="true" ID="ID_1713281564" MODIFIED="1525124215517" 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="1525124214998" 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="1525124214999" 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ückgabe per Value">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1517505737977" FOLDED="true" ID="ID_1981924615" MODIFIED="1533608415930" 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="1533608415622" TEXT="Schreibweise fü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" FOLDED="true" ID="ID_1058958215" MODIFIED="1533608416202" 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="1533608415931" TEXT="setup fü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" FOLDED="true" ID="ID_1347610352" MODIFIED="1533608416203" 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ä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" FOLDED="true" ID="ID_1375091296" MODIFIED="1533608416204" TEXT="Operatoren haben feste Präzedenz">
|
|
<node CREATED="1517970623613" ID="ID_271068747" MODIFIED="1518487921070" TEXT="OR bindet stärker als Zuweisung"/>
|
|
<node CREATED="1517970650217" ID="ID_1384466296" MODIFIED="1518487921070" TEXT="LocationSpec = ( UICoord::Builder || UICoord)"/>
|
|
</node>
|
|
<node CREATED="1517970828105" FOLDED="true" ID="ID_803913203" MODIFIED="1533608416206" TEXT="mögliche Alternativen">
|
|
<icon BUILTIN="info"/>
|
|
<node CREATED="1517970849142" FOLDED="true" ID="ID_1434826323" MODIFIED="1533608415935" TEXT="Komma-Operator verwenden">
|
|
<icon BUILTIN="button_cancel"/>
|
|
<node CREATED="1517970857389" ID="ID_815195379" MODIFIED="1518487921070" TEXT="bindet schwä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ührend">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
Komma heißt "and then" in der Logikprogrammierung
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="smily_bad"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1517970882714" FOLDED="true" ID="ID_1615423213" MODIFIED="1533608415937" TEXT="Builder muß bereits mit OR umgehen kö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="1533608415938" 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 -> 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" FOLDED="true" ID="ID_1547517953" MODIFIED="1533608416207" 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" FOLDED="true" ID="ID_1270620528" MODIFIED="1533608416208" 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ür create-Klauseln">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1515631675752" ID="ID_1586757410" MODIFIED="1518835393496" TEXT="Repräsentation als Liste von UICoord">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1515631690390" ID="ID_783849930" MODIFIED="1518835396708" TEXT=""committed choice" Lö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="überhaupt nicht auf DSL-Ebene"/>
|
|
<node CREATED="1515803844276" ID="ID_512581752" MODIFIED="1518487921070">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
nur "hinten herum" ü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 übersetzen">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
<node COLOR="#338800" CREATED="1523118005620" ID="ID_1743128010" MODIFIED="1529076770399" TEXT="klä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=""irgendwo" 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="1533685181871" 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ö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ß dann wieder aufgedrö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ö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ösung zur zweiten Traversierung durchreichen"/>
|
|
<node CREATED="1523117477813" ID="ID_5382937" MODIFIED="1533608413745" TEXT="Problem... nicht alles sind Lösungen">
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
<node CREATED="1523117488172" ID="ID_1947043295" MODIFIED="1523117492743" TEXT="es gibt zwei Fälle"/>
|
|
<node CREATED="1523117493427" ID="ID_391352800" MODIFIED="1523117501086" TEXT="nur in einem Fall wird eine Lö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ü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ü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 »<b>premature optimisation</b>«
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1519354320645" ID="ID_431727101" MODIFIED="1519354329172" TEXT="Verhä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" FOLDED="true" ID="ID_321705251" MODIFIED="1533608416209" 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> 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üssel-Schloß-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" FOLDED="true" ID="ID_1983794575" MODIFIED="1533608416213" TEXT="globales Limit">
|
|
<node CREATED="1519354660903" ID="ID_1601244663" MODIFIED="1519354670073" TEXT="Suche mit Zählen"/>
|
|
<node CREATED="1519354670949" ID="ID_803401695" MODIFIED="1519354673249" TEXT="Registry"/>
|
|
</node>
|
|
<node CREATED="1519354677373" FOLDED="true" ID="ID_1968452476" MODIFIED="1533608416213" TEXT="pro Fenster">
|
|
<node CREATED="1519354685828" ID="ID_966759751" MODIFIED="1519354691638" TEXT="genau wie global"/>
|
|
</node>
|
|
<node CREATED="1519354697578" FOLDED="true" ID="ID_1780825164" MODIFIED="1533608416215" 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ögliche Ausprä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="1533685210636" 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<SIG, ARGS>::bindBack"/>
|
|
<node CREATED="1515725202278" ID="ID_1268597725" MODIFIED="1515725220567" TEXT=""restliche Argumente" 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ü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="1515726125268" TEXT="der harte (technische) Teil ist bereits implementiert...">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
nä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" FOLDED="true" ID="ID_1930194336" MODIFIED="1533608416217" 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="1515726741538" 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>
|
|
    return [=](auto&&... ts) // generic lambda, ts is a parameter pack
|
|
</p>
|
|
<p>
|
|
    {
|
|
</p>
|
|
<p>
|
|
        printer(std::forward<decltype(ts)>(ts)...);
|
|
</p>
|
|
<p>
|
|
        return [=] { printer(ts...); }; // nullary lambda (takes no parameters)
|
|
</p>
|
|
<p>
|
|
    };
|
|
</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ß Lambda <b>instantiieren</b>...
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="button_cancel"/>
|
|
</node>
|
|
<node CREATED="1515797030493" FOLDED="true" ID="ID_973074141" MODIFIED="1533608416218" TEXT="Nein: es ist wohl ehr der Rü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ösung: Allocator als reine Typedef">
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1515801302955" FOLDED="true" ID="ID_208115762" MODIFIED="1533608416220" TEXT="Argument-Ü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& --> 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" 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 "Dependencies" zuläß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ö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ö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ä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" FOLDED="true" ID="ID_42079899" MODIFIED="1533608416221" TEXT="Problem: API noch nicht vollständig">
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
<node CREATED="1525567207940" FOLDED="true" HGAP="76" ID="ID_1154047307" MODIFIED="1533608415940" 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="1533608415626" 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ämlich in der Implementierung">
|
|
<icon BUILTIN="smily_bad"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1525567474513" FOLDED="true" HGAP="136" ID="ID_492657286" MODIFIED="1533608415943" TEXT="ElementAccess-API umbauen" VSHIFT="5">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1529016810234" FOLDED="true" ID="ID_190701762" MODIFIED="1533608415631" TEXT="Möglichkeiten">
|
|
<node CREATED="1528988155980" FOLDED="true" ID="ID_425314989" MODIFIED="1531584013575" TEXT="Variante-1">
|
|
<icon BUILTIN="full-1"/>
|
|
<node CREATED="1528988234950" ID="ID_1668042554" MODIFIED="1528988252512" TEXT="UI-Coord zurü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="1531584013575" 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="1531584013575" 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="1531584013575" TEXT="Variante-3b">
|
|
<icon BUILTIN="full-4"/>
|
|
<node CREATED="1529018093267" ID="ID_389715312" MODIFIED="1529018099078" TEXT="Hybrid-Lösung"/>
|
|
<node CREATED="1529018100234" ID="ID_1628139323" MODIFIED="1529018119792">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
als <i>Subklasse</i> von UICoord
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1529018125015" ID="ID_740978949" MODIFIED="1529018137465" TEXT="fügt den Variant-Record und den Konverter hinzu"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1529016854248" FOLDED="true" HGAP="37" ID="ID_1664191705" MODIFIED="1533608415635" TEXT="Abwä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ß 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äsentationen für die gleiche Sache">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
und zwar für die abstrahierte GUI-Location
|
|
</p>
|
|
<ul>
|
|
<li>
|
|
einmal symbolisch als UI-Koordinaten
|
|
</li>
|
|
<li>
|
|
einmal opaque als eingekapselte Lö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äre nur interessant als eigenständige Entität">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...was <i>bis jetzt</i> nicht gegeben ist!
|
|
</p>
|
|
<p>
|
|
Bis jetzt haben wir einen "Durchlauf-Erhitzer": 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ösungs-Suche.
|
|
</p>
|
|
<p>
|
|
|
|
</p>
|
|
<p>
|
|
Wenn allerdings später mal diese <b>UILocation</b> == bereits decodierte UI-Koordinaten
|
|
</p>
|
|
<p>
|
|
ein eigenständiges Token wird, welches über mehrere Schnittstellen hinweg geschoben wird,
|
|
</p>
|
|
<p>
|
|
<i>dann und nur dann</i> würde die zusätzliche API-Komplexität Sinn machen.
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1529019621707" FOLDED="true" ID="ID_537306231" MODIFIED="1531584013575" TEXT="Beschluß">
|
|
<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ür spä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> Performance wird ignoriert
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1529073415777" FOLDED="true" HGAP="19" ID="ID_834523571" MODIFIED="1533608415637" TEXT="Lösung" VSHIFT="12">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1529073429723" FOLDED="true" ID="ID_100395564" MODIFIED="1531584013576" 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ück"/>
|
|
</node>
|
|
<node CREATED="1529073497945" FOLDED="true" ID="ID_1104671546" MODIFIED="1531584013576" 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=""viewID" 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ät)">
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1522940124932" 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'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ält die konkrete ViewSpec-DSL"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1525564232321" 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ühren,
|
|
</p>
|
|
<p>
|
|
daß etwas Bestehendes zurückgeliefert wird
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="broken-line"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1529079727758" ID="ID_288941017" MODIFIED="1529079742349" TEXT="Lösung gefunden: ElementAccess gibt UICoord zurü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="242;22;"/>
|
|
<icon BUILTIN="flag-yellow"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1506181908037" 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" FOLDED="true" ID="ID_380908645" MODIFIED="1533684995953" 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" 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ß die Attribute-Collection nutzen"/>
|
|
<node CREATED="1508809631448" ID="ID_956153388" MODIFIED="1508809644482" TEXT="Builder wohl noch nie fü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 """/>
|
|
<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üll angezeigt"/>
|
|
<node CREATED="1508809719165" ID="ID_1506398379" MODIFIED="1509064569893" TEXT="Segfault beim Initialisieren des Ergebnisses fü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="1509070861495" TEXT="nein! Nur eine Referenz vom Temporary">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...merke
|
|
</p>
|
|
<p>
|
|
die Spezialbehandlung für const& 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="1509143099748" TEXT="absichtlich unorthogonal repräsentiert">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...um zu prü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" FOLDED="true" ID="ID_373632759" MODIFIED="1533608416222" TEXT="speziell...">
|
|
<node CREATED="1509143459519" FOLDED="true" ID="ID_1727095948" MODIFIED="1533608415945" TEXT="existenz-Check lä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="1509143583963" TEXT="Schwein gehabt, rekursiv programmiert">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...und ich hab mir letzte Woche noch solche Vorwürfe gemacht,
|
|
</p>
|
|
<p>
|
|
daß ich mich wieder mal "akademisch" 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ß bloß 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" FOLDED="true" ID="ID_892381116" MODIFIED="1533608416225" 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="1509151411655" TEXT="sollte es als als Basis iter implementieren">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...und die IterSource dann nur über WrapIter definieren.
|
|
</p>
|
|
<p>
|
|
Schichten-Prinzip...
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1509151381113" ID="ID_779657015" MODIFIED="1509151411655" TEXT="brauche ItemWrapper fü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" 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älle...">
|
|
<icon BUILTIN="info"/>
|
|
<node COLOR="#338800" CREATED="1513477957584" ID="ID_862780828" MODIFIED="1515209246199" TEXT="Explizit: window("window-1").persp("perspective-A")">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1513477957585" ID="ID_992417953" MODIFIED="1515209244400" TEXT="Gibtsned: window("windows");">
|
|
<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("perspective-B");">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1513477957586" ID="ID_1636269470" MODIFIED="1533608413765" TEXT="context-relativ-unlösbar: currentWindow().panel("panelY");">
|
|
<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("someView");">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1506984645748" 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" 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: ä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ö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ägt auch zur Lösung bei">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1515287665939" ID="ID_525267705" MODIFIED="1518487921071" TEXT="lö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ß re-normalisieren">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node CREATED="1515291264591" FOLDED="true" ID="ID_250465802" MODIFIED="1533608416226" 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="1533608415946">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
das ist <i>immer</i> 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ö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" FOLDED="true" ID="ID_219986282" MODIFIED="1533608416229" TEXT="neue coverDepth muß 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="1533608415948" TEXT="Denkfehler im Builder-Konzept!">
|
|
<icon BUILTIN="broken-line"/>
|
|
<node CREATED="1515298602326" ID="ID_13919667" MODIFIED="1515298692557" TEXT="Rückgabe ist Value...">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...und das heiß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ächlich zerstört"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1515298710952" ID="ID_167586553" MODIFIED="1515298806412" TEXT="Lösung: && zurückgeben">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node CREATED="1515298722702" FOLDED="true" ID="ID_273407473" MODIFIED="1533608415951" TEXT="könnte gefä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: ä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" 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 Überlapp">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node COLOR="#338800" CREATED="1515455278659" ID="ID_1749331083" MODIFIED="1515555648076" TEXT="präziser Anschluß funktioniert">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1515455289417" ID="ID_228177396" MODIFIED="1515555650682" TEXT="Ü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ö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ösbar -> 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 CREATED="1517506145618" FOLDED="true" ID="ID_718086573" MODIFIED="1533684993432" 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" ID="ID_1285475519" MODIFIED="1531584013587" TEXT="theoretische Grenzfä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üllbar">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1518221482345" ID="ID_867150257" MODIFIED="1518762392404" TEXT="erste unerfü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üllbar">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1518221539089" ID="ID_1046962094" MODIFIED="1518762392404" TEXT="nicht erfü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üllbar">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1518221587275" ID="ID_1141416112" MODIFIED="1518762392404" TEXT="zweite erfüllbar">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1518221593034" ID="ID_1276221189" MODIFIED="1518762392404" TEXT="auch zweite unerfüllbar">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1517506289222" ID="ID_1250541940" MODIFIED="1531584013594" TEXT="praktische Standard-Fä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> Klauseln
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1518575751651" ID="ID_1423547228" MODIFIED="1518575765468" TEXT="stattdessen den Test-"Baum" 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ß die Ergebnisse eindeutig sind"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1518579541832" ID="ID_512680632" MODIFIED="1518579550376" TEXT="flexibles Test-Setup hierfü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ä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" 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ä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 "passenden" Lö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="242;22;"/>
|
|
<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="1523746795582" TEXT="Ausweg">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...denn irgendwann wird's lächerlich mit der Unit-Testerei.
|
|
</p>
|
|
<p>
|
|
Oder zumindest Hexagonal.
|
|
</p>
|
|
<p>
|
|
Bedingt durch die ganzen rausgezogenen Interfaces hat jetzt bereits ViewLocator überhaupt keinen Gehalt mehr.
|
|
</p>
|
|
<p>
|
|
Wenn ich jetzt auch noch die einzige verbleibende Methode rausziehe, um sie testen zu können,
|
|
</p>
|
|
<p>
|
|
drehe ich mich komplett im Kreis. Schließlich kann ich diese Methode ja, genau genommen,
|
|
</p>
|
|
<p>
|
|
im Moment auch noch nicht wirklich testen, aus genau den gleichen Gründen,
|
|
</p>
|
|
<p>
|
|
warum ViewLocator so nebulö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ö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ä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üngliche Ziel für diesen Test
|
|
</p>
|
|
<p>
|
|
ist in unserem Test-Framework <b>nicht realisierbar</b>
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<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ä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="1523746735833" TEXT="...und das ist ausgeschlossen">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
<u>Policy</u>: Unit-Tests dürfen keine GTK-Abhängigkeit haben
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node COLOR="#435e98" CREATED="1523748895111" ID="ID_613307109" MODIFIED="1523748953311" TEXT="später mal....">
|
|
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
|
|
<icon BUILTIN="idea"/>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1523748900655" ID="ID_1768095597" MODIFIED="1523748939872" TEXT="#1140 UI integration tests">
|
|
<icon BUILTIN="hourglass"/>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1523748905725" ID="ID_748849132" MODIFIED="1523748935631" TEXT="#1141 verify UI default view allocation">
|
|
<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ßstab" VSHIFT="-13">
|
|
<icon BUILTIN="yes"/>
|
|
<node CREATED="1504479773327" ID="ID_874044841" MODIFIED="1518487921072" TEXT="muß lesbar sein"/>
|
|
<node CREATED="1504479778086" ID="ID_1867364946" MODIFIED="1518487921072" TEXT="wichtige Fälle abbilden"/>
|
|
<node CREATED="1504479801683" ID="ID_1408830980" MODIFIED="1518487921072" TEXT="Implementierung">
|
|
<node CREATED="1504479807066" ID="ID_1318651039" MODIFIED="1518487921072" TEXT="mäßig komplex"/>
|
|
<node CREATED="1504479813553" ID="ID_141842675" MODIFIED="1518487921072" TEXT="ehr effizient">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<ul>
|
|
<li>
|
|
wird mäßig häufig aufgerufen
|
|
</li>
|
|
<li>
|
|
beim "Öffnen" 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="1533685261979" 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ücke stehen in globalem Header"/>
|
|
<node CREATED="1504480172697" ID="ID_858936833" MODIFIED="1518487921073" TEXT="tatsächlich nur im ViewLocator zu interpretieren"/>
|
|
</node>
|
|
<node CREATED="1504480237649" 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ü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="=> 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" 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ät"/>
|
|
<node CREATED="1504962382427" ID="ID_931743673" MODIFIED="1518487921073" TEXT="Token kö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ö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äre akzeptabel"/>
|
|
<node CREATED="1504831934790" ID="ID_1800843653" MODIFIED="1518487921073" TEXT="aber etwas übertrieben...">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...es ist im Rahmen;
|
|
</p>
|
|
<p>
|
|
denn wir akzeptieren <i>double dispatch</i> sogar in der Diff-Anwendung,
|
|
</p>
|
|
<p>
|
|
welche viel häufiger läuft, als dieser View-Zugriff hier.
|
|
</p>
|
|
<p>
|
|
|
|
</p>
|
|
<p>
|
|
Allerdings, die <i>doppelte</i> Indirektion ist nicht grundsä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="1518487921073" 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ßlich.... Aufruf an den PanelManager"/>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1504884487533" FOLDED="true" ID="ID_1578364370" MODIFIED="1533608416230" 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" FOLDED="true" ID="ID_1868485493" MODIFIED="1533608416233">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
<i>Allokator</i> pro Typ
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="flag-yellow"/>
|
|
<node CREATED="1504885680095" FOLDED="true" ID="ID_1828531407" MODIFIED="1533608415953" 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" FOLDED="true" ID="ID_1013293844" MODIFIED="1533608416241" 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="1518487921073" TEXT="optionale Komponenten">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...wir brauchen eine Repräsentation,
|
|
</p>
|
|
<p>
|
|
um auszudrücken, daß 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="1533608415957" 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="1533608415640" 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="1533608415642" 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="1533608415643" 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 ->">
|
|
<node CREATED="1504886227678" ID="ID_1936525982" MODIFIED="1518487921073" TEXT="existiert | machbar | unmöglich"/>
|
|
<node CREATED="1504959598053" ID="ID_952692651" MODIFIED="1518487921073" TEXT="Zielkoordinaten"/>
|
|
</node>
|
|
<node CREATED="1504959603212" ID="ID_627664382" MODIFIED="1533608413780" TEXT="alloc ->">
|
|
<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="1533685244285" TEXT="TODO">
|
|
<icon BUILTIN="flag-pink"/>
|
|
<node CREATED="1506034518068" ID="ID_1413583873" MODIFIED="1518487921074" TEXT="ViewSpecDSL wird für Location Spec zustä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ß DSL-Elemente unterstü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ürzte Schreibweise für Allocator-Spec"/>
|
|
<node CREATED="1506034548376" ID="ID_36109866" MODIFIED="1522937474269" TEXT="count -> umbenennen in alloc">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node CREATED="1522937492519" ID="ID_996676171" MODIFIED="1522937502079" TEXT="generischen Aufrufmechanismus klären">
|
|
<icon BUILTIN="pencil"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1504833110793" ID="ID_10881417" MODIFIED="1518487921074" TEXT="Ausdrücke">
|
|
<node CREATED="1504833126079" FOLDED="true" ID="ID_286801467" MODIFIED="1533685254493" 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ü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>
|
|
               or perspective(mediaView).panel(viewer)
|
|
</p>
|
|
<p>
|
|
               or existingPanel(viewer)
|
|
</p>
|
|
<p>
|
|
               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>
|
|
               or currentWindow().existingPanel(viewer)
|
|
</p>
|
|
<p>
|
|
               or existingPanel(viewer)
|
|
</p>
|
|
<p>
|
|
               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> Gruppe hinzufü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>
|
|
               or perspective(asset)panel(asset)
|
|
</p>
|
|
<p>
|
|
               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>
|
|
               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ä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" FOLDED="true" ID="ID_1620814124" MODIFIED="1533608416242">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
Voraussetzung: <i>Anwendbarkeit</i> 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" 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ärent getypt"/>
|
|
<node CREATED="1504881124612" ID="ID_41842721" MODIFIED="1518487921075" TEXT="Spezifikation per Zuweisung"/>
|
|
<node CREATED="1504881139794" 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ützt Alternativen"/>
|
|
<node CREATED="1506120367605" ID="ID_1489367458" MODIFIED="1518487921075" TEXT="wä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" FOLDED="true" ID="ID_1205747223" MODIFIED="1533608416245" 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" ID="ID_1759689335" MODIFIED="1533608413816" TEXT="Komma-Operator">
|
|
<icon BUILTIN="button_cancel"/>
|
|
<node CREATED="1504881756073" ID="ID_1341009121" MODIFIED="1518487921075" TEXT="niedrigere Präzedenz als ="/>
|
|
<node CREATED="1504882453091" FOLDED="true" ID="ID_870917199" MODIFIED="1533608416248" 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> der Fall sein könnte
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1504882467714" ID="ID_759428035" MODIFIED="1518487921075" TEXT="bedeutet "and then" 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öhere Präzedenz als ="/>
|
|
<node CREATED="1504882434846" FOLDED="true" ID="ID_1018309959" MODIFIED="1533608416249" 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" FOLDED="true" ID="ID_233096485" MODIFIED="1533608416250" 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ßen">
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
</node>
|
|
</node>
|
|
<node COLOR="#990000" CREATED="1517970380222" FOLDED="true" ID="ID_1663499246" MODIFIED="1533608416252" TEXT="trickreich zu implementieren">
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
<node CREATED="1517970403323" ID="ID_676104700" MODIFIED="1518487921075" TEXT="...wofern überhaupt möglich"/>
|
|
<node CREATED="1517970410690" ID="ID_1716625175" MODIFIED="1518487921075" 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 "UICoord::window()"
|
|
</p>
|
|
<p>
|
|
dann bekommt man einen UICoord::Builder  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ächst sind Layouts eine fest vorgegeben"/>
|
|
<node CREATED="1504831537746" ID="ID_692369391" MODIFIED="1518487921075" TEXT="später kö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" HGAP="-88" ID="ID_1224438713" MODIFIED="1523023211290" 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> dem ViewLocator
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1523023256246" ID="ID_1600604589" MODIFIED="1523023271295" TEXT="UI-Koordinaten ->">
|
|
<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<ElementAccess>"/>
|
|
<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ü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 CREATED="1523059570619" ID="ID_1720611397" MODIFIED="1525124215025" TEXT="Problem: Typisierung">
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
<node CREATED="1523059593831" ID="ID_1175935224" MODIFIED="1523059666434" TEXT="will mich nicht auf eine Basisklasse festlegen">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
model::Tangible ist schön,
|
|
</p>
|
|
<p>
|
|
aber ich weiß nicht, ob das nicht zu eingeschränkt ist.
|
|
</p>
|
|
<p>
|
|
Beispielsweise werden Panel oder WorkspaceWindow ganz sicher keine Tangibles sein,
|
|
</p>
|
|
<p>
|
|
aber es könnte durchaus sein, daß man auf sie generisch zugreifen mö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ßte Design-Entscheidung"/>
|
|
</node>
|
|
<node CREATED="1523228995279" ID="ID_924400738" MODIFIED="1523229065936" TEXT="muß 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 CREATED="1523059717622" ID="ID_598506387" MODIFIED="1525124215028" TEXT="Grundstruktur">
|
|
<node CREATED="1523059685611" ID="ID_1274858318" MODIFIED="1523059711165" TEXT="lib::Result">
|
|
<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ß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" ID="ID_1896914767" MODIFIED="1523225015564" TEXT="geht'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="1523224818692" TEXT="wer braucht Fehler?">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
Zwei Fälle sind hier zu unterscheiden:
|
|
</p>
|
|
<ol>
|
|
<li>
|
|
der gewünschte Wert existiert nicht, und das ist auch das Ergebnis der Anfrage
|
|
</li>
|
|
<li>
|
|
es liegt eine Fehleinschä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="1523225000638" TEXT="zwei nicht-kongruente Fälle">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<ul>
|
|
<li>
|
|
im Fall-1 weiß der Client, daß er prüfen muß
|
|
</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ä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ä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="1523224303183" STYLE="fork" TEXT="Feststellung: keine Status-Rückmeldung">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
das mag überraschend klingen,
|
|
</p>
|
|
<p>
|
|
aber in der (zu erwartenden) Nutzsituation interessiert sich <i>keine Sau</i> dafü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> 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" ID="ID_1101595897" MODIFIED="1523587710088" TEXT="muß prüfen, ob der Cast mö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ö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="Ändert nix am Grundproblem">
|
|
<icon BUILTIN="smily_bad"/>
|
|
</node>
|
|
<node CREATED="1523232798911" ID="ID_351873038" MODIFIED="1523232810481" TEXT="AccessCasted für Zieltyp"/>
|
|
<node CREATED="1523232811805" ID="ID_577095101" MODIFIED="1523232886443" TEXT="läßt sich nur bei kompatiblem Basistyp ü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> 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ückkommt"/>
|
|
<node CREATED="1523233007258" ID="ID_1076174983" MODIFIED="1523233019060" TEXT="aber zur Compilezeit mü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 überhaupt nur den Fall, der geht">
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
<node CREATED="1523587774453" ID="ID_887720572" MODIFIED="1523587792039" TEXT="in allen anderen Fä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änkungen fü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ür die spä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üfbar machen">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1523118660882" ID="ID_1452843558" MODIFIED="1523725214734" TEXT="Testfä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 CREATED="1523055378032" ID="ID_1727349685" MODIFIED="1525124215035" TEXT="Test-Hilfsmittel">
|
|
<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ö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üfen"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1489777673022" HGAP="-43" ID="ID_873069403" MODIFIED="1518487921075" TEXT="Zugang zu Proc-Commands" VSHIFT="34">
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1489777702971" HGAP="125" ID="ID_1780068142" MODIFIED="1518487921075" TEXT="Framework muß geschaffen werden" VSHIFT="-42">
|
|
<icon BUILTIN="yes"/>
|
|
<node COLOR="#338800" CREATED="1489777783120" ID="ID_1439783231" MODIFIED="1518487921075" TEXT="Protokoll für den Zugang">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node CREATED="1489777837120" ID="ID_466927949" MODIFIED="1518487921075" TEXT="Ort für Command-Definitionen"/>
|
|
<node COLOR="#338800" CREATED="1489777846095" ID="ID_1401258681" MODIFIED="1533385633816" TEXT="Design Proc-Command-Framework vorantreiben">
|
|
<arrowlink COLOR="#352c7d" DESTINATION="ID_1622574347" ENDARROW="Default" ENDINCLINATION="-240;-3336;" ID="Arrow_ID_1512127407" STARTARROW="None" STARTINCLINATION="1929;0;"/>
|
|
<font NAME="SansSerif" SIZE="14"/>
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1489777738462" ID="ID_733673713" MODIFIED="1518487921075" TEXT="angebunden an den InteractionDirector"/>
|
|
<node CREATED="1489777748748" ID="ID_1098831130" MODIFIED="1518487921075" TEXT="statisches Front-End: CmdAccessor"/>
|
|
</node>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1486763185746" HGAP="33" ID="ID_362749694" MODIFIED="1518487921075" 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="1518487921075" TEXT="nicht der Meister">
|
|
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
|
|
</node>
|
|
<node CREATED="1486763278189" ID="ID_330558344" MODIFIED="1518487921075" TEXT="aber ein zentrales Bindeglied"/>
|
|
<node CREATED="1486763287244" ID="ID_1712681910" MODIFIED="1518487921075" TEXT="zwei Welten">
|
|
<node CREATED="1486763292028" ID="ID_1224392598" MODIFIED="1518487921075" TEXT="Modell-struktur == Hierarchie"/>
|
|
<node CREATED="1486763303066" ID="ID_1274975607" MODIFIED="1518487921075" TEXT="Interaktion == Fokus und Kontext"/>
|
|
</node>
|
|
<node CREATED="1486763350764" ID="ID_1309124609" MODIFIED="1518487921075" TEXT="Aufgaben">
|
|
<icon BUILTIN="yes"/>
|
|
<node CREATED="1486763355739" ID="ID_745725927" MODIFIED="1518487921075" TEXT="Bindung für Aktionen bereitstellen"/>
|
|
<node CREATED="1488566356774" ID="ID_969011841" MODIFIED="1518487921075" TEXT="Ankerpunkt zum Bilden der Commands">
|
|
<arrowlink COLOR="#706a9a" DESTINATION="ID_1461875887" ENDARROW="Default" ENDINCLINATION="-923;-789;" ID="Arrow_ID_457540370" STARTARROW="None" STARTINCLINATION="806;300;"/>
|
|
<node CREATED="1488566405248" ID="ID_355508260" MODIFIED="1518487921075" TEXT="auffinden der Command-IDs">
|
|
<node CREATED="1489191528425" ID="ID_1331796226" MODIFIED="1533253376724" TEXT="Neuer Service hierfür in Proc">
|
|
<arrowlink COLOR="#584d79" DESTINATION="ID_341428100" ENDARROW="Default" ENDINCLINATION="1995;-1317;" ID="Arrow_ID_879741123" STARTARROW="None" STARTINCLINATION="334;-13;"/>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1488677809297" ID="ID_1520540731" MODIFIED="1534513495560" TEXT="Problem: Zugang / Wiring">
|
|
<arrowlink DESTINATION="ID_850989325" ENDARROW="Default" ENDINCLINATION="183;-575;" ID="Arrow_ID_1002016515" STARTARROW="None" STARTINCLINATION="341;286;"/>
|
|
<icon BUILTIN="flag-yellow"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1488566427445" ID="ID_567418101" MODIFIED="1518487921075" TEXT="InteractionStateManager">
|
|
<node CREATED="1488566447466" ID="ID_1978593319" MODIFIED="1518487921075" TEXT="hängen darunter"/>
|
|
<node CREATED="1488566452538" ID="ID_1569803797" MODIFIED="1518487921075" TEXT="werden transient gebilet"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1486763376960" ID="ID_1618020758" MODIFIED="1518487921075" TEXT="Zugang zu den Timelines"/>
|
|
<node CREATED="1486763385591" ID="ID_6651258" MODIFIED="1518487921076" TEXT="Zugang zum Asset-Management"/>
|
|
<node CREATED="1486763391862" ID="ID_1568245541" MODIFIED="1518487921076" TEXT="Zugang zur Konfiguration"/>
|
|
<node CREATED="1486763408780" ID="ID_520762274" MODIFIED="1518487921076" TEXT="Zugang zum persistenten Interface-State"/>
|
|
<node CREATED="1504371285442" ID="ID_634013434" MODIFIED="1518487921076" 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" HGAP="38" ID="ID_1457876217" MODIFIED="1518487921076" TEXT="konkret" VSHIFT="16">
|
|
<icon BUILTIN="flag-pink"/>
|
|
<node CREATED="1486768080502" ID="ID_1759740464" MODIFIED="1518487921076" TEXT="Binde-Kontext für globale Aktionen"/>
|
|
<node CREATED="1486768086869" ID="ID_173538981" MODIFIED="1518487921076" TEXT="Idee/Konzept für kontextabhä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ü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> 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ür zustä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="-67;-71;" 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ü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ß 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ß umgeschrieben werden">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1504193400426" ID="ID_1575758873" MODIFIED="1518487921076" TEXT="PanelManager muß 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ür Command-handling"/>
|
|
<node CREATED="1487313769425" ID="ID_728232011" MODIFIED="1518487921076">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
Grundlagen für <b>InteractionControl</b>
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<node CREATED="1488419854029" ID="ID_932507511" MODIFIED="1518487921076" TEXT="erst mal: Konzept">
|
|
<arrowlink COLOR="#715f85" DESTINATION="ID_329609486" ENDARROW="Default" ENDINCLINATION="-368;-2533;" ID="Arrow_ID_575977434" STARTARROW="None" STARTINCLINATION="1555;-260;"/>
|
|
<icon BUILTIN="help"/>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1487313191100" ID="ID_1619021408" MODIFIED="1523670995386" 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 CREATED="1487313454220" 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="ü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 -> InteractionDirector -> Ui-State"/>
|
|
<node CREATED="1487472711453" ID="ID_759583421" MODIFIED="1518487921076" TEXT="beim Zerstö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ö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ört"/>
|
|
</node>
|
|
<node CREATED="1487472971330" ID="ID_81364279" MODIFIED="1518487921076" TEXT="grundsä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ß das UI wirklich single-threaded läuft"/>
|
|
<node CREATED="1487473004949" ID="ID_1092623141" MODIFIED="1518487921076" TEXT="wenn wir die Garantie haben, daß die Event-Loop nichts mehr macht"/>
|
|
<node CREATED="1487473038377" ID="ID_393673106" MODIFIED="1518487921076" 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ört CoreService"/>
|
|
<node CREATED="1487475720363" ID="ID_693101732" MODIFIED="1518487921076" TEXT="lä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="1518487921076" TEXT="Struktur">
|
|
<node CREATED="1487461304560" ID="ID_349728972" MODIFIED="1518487921077" TEXT="betreibt">
|
|
<node CREATED="1487273437019" ID="ID_1653934212" MODIFIED="1518487921077" TEXT="Navigator">
|
|
<node CREATED="1515879320297" ID="ID_1194515598" MODIFIED="1518487921077" TEXT="(abstrahierte) Baum-Struktur"/>
|
|
<node CREATED="1506957512565" ID="ID_1256149179" MODIFIED="1518487921077" 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="1518487921077" TEXT="SpotLocator"/>
|
|
<node CREATED="1487275297855" ID="ID_898365328" MODIFIED="1518487921077" TEXT="FocusTracker"/>
|
|
<node CREATED="1504368969990" ID="ID_948587913" MODIFIED="1518487921077" 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="1518487921077" TEXT="Service"/>
|
|
<node CREATED="1504373189956" ID="ID_1625042163" MODIFIED="1518487921077" TEXT="intern direkt verdrahtet mit dem PanelLocator"/>
|
|
<node CREATED="1504370354446" ID="ID_1714266927" MODIFIED="1518487921077" TEXT="findet, ggfs alloziert einen ComponentView"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1487461353681" ID="ID_1117222917" MODIFIED="1518487921077" TEXT="Modell">
|
|
<node CREATED="1487461361688" ID="ID_1787396394" MODIFIED="1518487921077" TEXT="Attrib">
|
|
<node CREATED="1487461413145" ID="ID_816848691" MODIFIED="1518487921077" 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="1518487921077" TEXT="AssetController"/>
|
|
</node>
|
|
<node CREATED="1488492229939" ID="ID_996547800" MODIFIED="1518487921077" TEXT="Children">
|
|
<node CREATED="1488492233826" ID="ID_1743746426" MODIFIED="1518487921077" TEXT="Timelines"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1487461436006" ID="ID_1721976078" MODIFIED="1518487921077" TEXT="Kooperation">
|
|
<node CREATED="1487461440509" ID="ID_1663368282" MODIFIED="1518487921077" TEXT="CoreService">
|
|
<node CREATED="1487461456739" ID="ID_1032977850" MODIFIED="1518487921077" 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="1518487921077" TEXT="Actions">
|
|
<node CREATED="1487461484935" ID="ID_951148221" MODIFIED="1518487921077" TEXT="Kontext für globale Aktionen"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1506956798915" HGAP="-73" ID="ID_1897228503" MODIFIED="1518487921077" TEXT="Services" VSHIFT="32">
|
|
<node CREATED="1506956866802" ID="ID_652269096" MODIFIED="1518487921077" TEXT="Navigator">
|
|
<node CREATED="1507935433543" ID="ID_239254800" MODIFIED="1518487921077">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
in <i>generischer UI-Struktur</i> bewegen
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1507935461787" ID="ID_1244300168" MODIFIED="1518487921077" TEXT="bietet command-and-query-Interface"/>
|
|
<node CREATED="1507935474273" ID="ID_650732591" MODIFIED="1518487921077" TEXT="dient als (Pfad-)Resolver fü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="1518487921077" TEXT="stü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="1518487921077" 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="1518487921077" TEXT="bietet Komponenten-Management">
|
|
<node CREATED="1504387105363" ID="ID_631730744" MODIFIED="1518487921077" TEXT="neue Komponente"/>
|
|
<node CREATED="1504387110866" ID="ID_879632055" MODIFIED="1518487921077" TEXT="Komponente löschen"/>
|
|
<node CREATED="1504387189744" ID="ID_934669703" MODIFIED="1518487921077" TEXT="notwendig für Kind-Mutation">
|
|
<icon BUILTIN="info"/>
|
|
</node>
|
|
<node CREATED="1504368969990" ID="ID_1346454848" MODIFIED="1518487921077" 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="1518487921077" TEXT="SpotLocator"/>
|
|
<node CREATED="1506956892303" ID="ID_238906242" MODIFIED="1518487921077" TEXT="FocusTracker"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1485126466520" ID="ID_717310004" MODIFIED="1518487921077" TEXT="WindowManager" VSHIFT="34">
|
|
<icon BUILTIN="button_cancel"/>
|
|
<node CREATED="1485457325724" ID="ID_1954589768" MODIFIED="1518487921077" TEXT="nur für die Hauptfenster zuständig"/>
|
|
<node CREATED="1485457328043" ID="ID_1787642462" MODIFIED="1518487921077" TEXT="wir haben kein ApplicationWindow">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...denn das ist das vereinfachte Setup für "einfache" Applikationen
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
<node CREATED="1485457370310" ID="ID_1931452525" MODIFIED="1518487921077" TEXT="GtkWindow sind völlig ausreichend"/>
|
|
<node CREATED="1485546285407" ID="ID_1129769291" MODIFIED="1518487921077">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
muß kein <b>Manager</b> sein
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="yes"/>
|
|
</node>
|
|
<node CREATED="1485546319434" ID="ID_1592361314" MODIFIED="1518487921077" TEXT="macht nur eine Sache">
|
|
<icon BUILTIN="idea"/>
|
|
<node CREATED="1485546325993" ID="ID_1335197005" MODIFIED="1518487921077" TEXT="nämlich eine Liste der Fenster verwalten"/>
|
|
<node CREATED="1504368623492" ID="ID_1993615747" MODIFIED="1518487921077" TEXT="und Zugang zu diesen Fenster bieten"/>
|
|
</node>
|
|
<node CREATED="1485546344471" ID="ID_582242471" MODIFIED="1518487921077" 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 CREATED="1485546396952" ID="ID_298060478" MODIFIED="1518487921077" 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;"/>
|
|
<node CREATED="1485546400807" ID="ID_1118405222" MODIFIED="1518487921077" TEXT="macht, was vom großen Manager übrig blieb"/>
|
|
<node CREATED="1485546425452" ID="ID_1088557274" MODIFIED="1518487921077" TEXT="wird von GtkLumiera gehalten und verdrahtet"/>
|
|
<node CREATED="1485548669665" ID="ID_285796853" MODIFIED="1518487921077" TEXT="Problem: wie erreichbar?">
|
|
<icon BUILTIN="pencil"/>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1485548702476" ID="ID_1295550090" MODIFIED="1518487921077" TEXT="Aufgabe: new_window">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
</node>
|
|
<node CREATED="1485548713610" ID="ID_1984416789" MODIFIED="1518487921077" TEXT="wird als Action verdrahtet">
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
<node CREATED="1485548727401" ID="ID_1344937285" MODIFIED="1518487921077" TEXT="was ist die Closure">
|
|
<icon BUILTIN="help"/>
|
|
</node>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1504193329508" ID="ID_629544763" MODIFIED="1534511335350" 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;"/>
|
|
<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ö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ü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ü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ü-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ö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äsentation fest"/>
|
|
<node CREATED="1533609332484" ID="ID_68265965" MODIFIED="1533609346342" TEXT="Panel selber ist "substanzlos"">
|
|
<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äß 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ä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="ü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ä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äufig">
|
|
<icon BUILTIN="bell"/>
|
|
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1534519645420" ID="ID_1509280168" MODIFIED="1534519736382" TEXT="ü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ß er schon einsetzbar ist.
|
|
</p>
|
|
<p>
|
|
Problem ist die ganze abstrahierte Widget-Access-Schicht, die sich erst sinnvoll bauen läß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="1534527036807" 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="1534526944653" 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" ID="ID_385011645" MODIFIED="1518487921077">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
<b>Abstraktion</b> 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ür direkte Aufrufe"/>
|
|
<node CREATED="1504308379891" ID="ID_829774303" MODIFIED="1518487921077" TEXT="ID fü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ö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ß 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ügen?"/>
|
|
<node CREATED="1531413846704" ID="ID_157037460" MODIFIED="1531413852418" TEXT="ineinander einfü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 BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1485555987832" ID="ID_313705636" MODIFIED="1518487921078" TEXT="Wiring">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
<node CREATED="1485555999110" ID="ID_376092703" MODIFIED="1518487921078" TEXT="top-level macht GtkLumiera im ctor"/>
|
|
<node CREATED="1485556011260" ID="ID_1618308499" MODIFIED="1518487921078" TEXT="backlink zum Manager"/>
|
|
<node CREATED="1486943522965" ID="ID_36527267" MODIFIED="1518487921078" 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="2623;0;"/>
|
|
<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 CREATED="1488494592496" ID="ID_1586259377" MODIFIED="1518487921078" TEXT="UI-Bus"/>
|
|
<node CREATED="1488494579346" ID="ID_1182508289" MODIFIED="1518487921078" TEXT="UiManager"/>
|
|
<node CREATED="1486943529763" ID="ID_1188971928" MODIFIED="1518487921078" TEXT="WindowLocator"/>
|
|
<node CREATED="1486943607120" ID="ID_1101577688" MODIFIED="1518487921078" TEXT="InteractionDirector">
|
|
<node CREATED="1486943922541" ID="ID_646168152" MODIFIED="1518487921078" TEXT="Entspricht Model Root"/>
|
|
<node CREATED="1486943614039" ID="ID_1354424043" MODIFIED="1518487921078" TEXT="AssetController"/>
|
|
<node CREATED="1486943634229" ID="ID_1217772313" MODIFIED="1518487921078" TEXT="Kinder: Timelines">
|
|
<node CREATED="1486943640004" ID="ID_1237613626" MODIFIED="1518487921078" TEXT="Preferences"/>
|
|
<node CREATED="1486943643179" ID="ID_463409583" MODIFIED="1518487921078" TEXT="Assets"/>
|
|
<node CREATED="1486943645554" ID="ID_1803125679" MODIFIED="1518487921078" TEXT="Timeline"/>
|
|
</node>
|
|
<node CREATED="1488494646129" HGAP="34" ID="ID_1817005014" MODIFIED="1518487921078" TEXT="InteractionControl" VSHIFT="11">
|
|
<icon BUILTIN="forward"/>
|
|
<node CREATED="1488494665798" ID="ID_1228864928" MODIFIED="1518487921078" TEXT="SpotLocator"/>
|
|
<node CREATED="1488494689843" ID="ID_1519420241" MODIFIED="1518487921078" TEXT="Navigator"/>
|
|
<node CREATED="1488494692802" ID="ID_1706374538" MODIFIED="1518487921078" TEXT="FocusTracker"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1486943969999" ID="ID_1823284637" MODIFIED="1518487921078" TEXT="Wizzard">
|
|
<node CREATED="1533688038820" ID="ID_70134302" MODIFIED="1535891607125" 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="803;-67;"/>
|
|
</node>
|
|
<node CREATED="1486943974590" ID="ID_1603501979" MODIFIED="1518487921078" TEXT="Hilfe (Website?)"/>
|
|
<node CREATED="1486944977005" ID="ID_811162889" MODIFIED="1518487921078" TEXT="kontextsensitive Hilfe"/>
|
|
<node CREATED="1488494783190" ID="ID_1886731977" MODIFIED="1518487921078" TEXT="Assistenten"/>
|
|
<node CREATED="1488494785774" ID="ID_167814846" MODIFIED="1518487921078" TEXT="About"/>
|
|
</node>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1488422770096" ID="ID_286551569" MODIFIED="1518487921078" TEXT="#1085 solve setup of top-level menu actions">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1485556027322" ID="ID_196345177" MODIFIED="1518487921078" TEXT="Problem: Docking panels">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
<node CREATED="1485556037465" ID="ID_1657490812" MODIFIED="1518487921078" TEXT="brauchen typischerweise eine Querverbindung"/>
|
|
<node CREATED="1485556046703" ID="ID_50463095" MODIFIED="1518487921078" TEXT="geht das über den Bus alleine?">
|
|
<icon BUILTIN="help"/>
|
|
<node CREATED="1504386565227" ID="ID_889188219" MODIFIED="1518487921078" TEXT="nein">
|
|
<icon BUILTIN="button_cancel"/>
|
|
</node>
|
|
<node CREATED="1504386568907" ID="ID_792633121" MODIFIED="1518487921078" TEXT="Referenz notwendig"/>
|
|
</node>
|
|
<node CREATED="1485556056206" ID="ID_509456873" MODIFIED="1518487921078" TEXT="...sonst muß der PanelManager helfen">
|
|
<icon BUILTIN="yes"/>
|
|
<node CREATED="1504386527936" ID="ID_307889825" MODIFIED="1518487921078" TEXT="muß ID finden können"/>
|
|
<node CREATED="1504386535447" ID="ID_426578263" MODIFIED="1518487921078" TEXT="brauche Service zum Erzeugen/Löschen"/>
|
|
<node CREATED="1504386595679" ID="ID_1383687482" MODIFIED="1518487921078" 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="1518487921078" TEXT="automatisches Management vonöten">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
wenn das Diff ein Element aus einer Kind-Menge <i>wegfallen läßt,</i>
|
|
</p>
|
|
<p>
|
|
dann muß dieses automatisch deregistriert werden
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1504371342426" ID="ID_869653682" MODIFIED="1518487921078">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
vermittelt über den <b>ViewLocator</b> (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" ID="ID_850989325" MODIFIED="1534513495560" TEXT="Problem: Zugang">
|
|
<linktarget COLOR="#a9b4c1" DESTINATION="ID_850989325" ENDARROW="Default" ENDINCLINATION="183;-575;" ID="Arrow_ID_1002016515" SOURCE="ID_1520540731" STARTARROW="None" STARTINCLINATION="341;286;"/>
|
|
<linktarget COLOR="#9f5680" DESTINATION="ID_850989325" ENDARROW="Default" ENDINCLINATION="211;189;" ID="Arrow_ID_1007188680" SOURCE="ID_827179653" STARTARROW="None" STARTINCLINATION="912;-974;"/>
|
|
<icon BUILTIN="flag-pink"/>
|
|
<node CREATED="1488677729388" ID="ID_764102285" MODIFIED="1518487921078" TEXT="grundsätziches Problem">
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
<node CREATED="1488678069565" ID="ID_346104238" MODIFIED="1518487921078" TEXT="explizite Verdrahtung scheidet aus"/>
|
|
<node CREATED="1488678077236" ID="ID_1536759032" MODIFIED="1518487921078" TEXT="klassisches Inversion-Of-Control">
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
<node CREATED="1488678106024" ID="ID_1242521430" MODIFIED="1518487921078" TEXT="access by name">
|
|
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1488677737419" ID="ID_1621219441" MODIFIED="1518487921078" TEXT="einfach gelöst für top-Level">
|
|
<icon BUILTIN="ksmiletris"/>
|
|
</node>
|
|
<node CREATED="1488677751537" ID="ID_75445042" MODIFIED="1518487921078" TEXT="schwierig für Widgets">
|
|
<icon BUILTIN="smily_bad"/>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1520721624161" ID="ID_1714114896" MODIFIED="1520722071693" TEXT="DependencyFactory">
|
|
<arrowlink COLOR="#5c71a3" DESTINATION="ID_451964727" ENDARROW="Default" ENDINCLINATION="767;-2073;" ID="Arrow_ID_1454095581" STARTARROW="None" STARTINCLINATION="1892;380;"/>
|
|
<icon BUILTIN="flag-yellow"/>
|
|
<node CREATED="1520721630328" ID="ID_1547268458" MODIFIED="1520721637315" TEXT="wir haben schon eine Lösung für Singletons"/>
|
|
<node CREATED="1520721638143" ID="ID_1691402961" MODIFIED="1520721645210" TEXT="diese kann auf Services erweitert werden"/>
|
|
<node CREATED="1520721647670" ID="ID_1649501241" MODIFIED="1520721660608" TEXT="sollte auch Lösung für Tests beinhalten"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1533688118209" ID="ID_143545012" MODIFIED="1533688132123" TEXT="Use cases">
|
|
<node CREATED="1533688144038" ID="ID_745583947" MODIFIED="1533688152544" TEXT="bekannte dedizierte Services">
|
|
<node CREATED="1533688177913" ID="ID_1972484306" MODIFIED="1533688773500" 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äufig: Infobox anzeigen"/>
|
|
<node CREATED="1533688352161" ID="ID_1123594451" MODIFIED="1533688365595" TEXT="spä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="1533688175781" TEXT="ein Kind in einen bekannten Ort pflanzen"/>
|
|
</node>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1486520281897" ID="ID_827558797" MODIFIED="1518487921078" 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="1518487921078" TEXT="CoreService + UI-Bus"/>
|
|
<node CREATED="1486520303173" ID="ID_306583765" MODIFIED="1518487921078" TEXT="UiManager, Actions etc"/>
|
|
<node CREATED="1486521232144" HGAP="44" ID="ID_1816242514" MODIFIED="1518487921078" TEXT="Fragen" VSHIFT="16">
|
|
<icon BUILTIN="help"/>
|
|
<node CREATED="1486521810252" ID="ID_728134375" MODIFIED="1518487921078" TEXT="wer verkörpert den Sesison-Root?">
|
|
<icon BUILTIN="help"/>
|
|
</node>
|
|
<node CREATED="1486521250790" ID="ID_447470270" MODIFIED="1518487921078" TEXT="haben wir einen globalen Controller?">
|
|
<icon BUILTIN="help"/>
|
|
</node>
|
|
<node CREATED="1486521269531" ID="ID_1633937799" MODIFIED="1518487921078" TEXT="was ist das Modell des globalen Controllers?">
|
|
<icon BUILTIN="help"/>
|
|
</node>
|
|
<node CREATED="1486521285069" ID="ID_410780953" MODIFIED="1518487921078" TEXT="wie hängt das mit persistentem UI-State zusammen?">
|
|
<icon BUILTIN="help"/>
|
|
</node>
|
|
<node CREATED="1486521317725" ID="ID_1502356505" MODIFIED="1518487921078" TEXT="welche Aktionen löst der globale Controller aus?">
|
|
<icon BUILTIN="help"/>
|
|
</node>
|
|
<node CREATED="1486521369166" ID="ID_1068454326" MODIFIED="1518487921078" TEXT="wie werden die mit dem Menü verbunden?">
|
|
<icon BUILTIN="help"/>
|
|
</node>
|
|
<node CREATED="1486521449835" ID="ID_236689642" MODIFIED="1518487921078" TEXT="wo hängt der InvocationStateManager?">
|
|
<icon BUILTIN="help"/>
|
|
</node>
|
|
<node CREATED="1486521478792" ID="ID_235720883" MODIFIED="1518487921078" TEXT="wie redet man mit dem InvocationStateManager?">
|
|
<icon BUILTIN="help"/>
|
|
</node>
|
|
<node CREATED="1486521492102" ID="ID_339608490" MODIFIED="1518487921078" TEXT="kann man Fragen via Bus stellen?">
|
|
<icon BUILTIN="help"/>
|
|
</node>
|
|
<node CREATED="1486521526105" ID="ID_1872187260" MODIFIED="1518487921078" TEXT="nutzen wir das Advice-System?">
|
|
<icon BUILTIN="help"/>
|
|
</node>
|
|
<node CREATED="1486521980109" ID="ID_1036025143" MODIFIED="1518487921078" TEXT="wer beendet das UI?">
|
|
<icon BUILTIN="help"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1486751116251" HGAP="140" ID="ID_113005643" MODIFIED="1518487921078" VSHIFT="61">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
Brücke: <i>gemeinsamer</i> 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="1518487921078" TEXT="ist Bindeglied für globale Aktionen"/>
|
|
<node CREATED="1486751233315" ID="ID_1611855815" MODIFIED="1518487921078" TEXT="verkörpert den Model-Root"/>
|
|
<node CREATED="1486751248097" ID="ID_1313868100" MODIFIED="1518487921078" TEXT="ist Vollmitglied am Bus"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1485126481023" ID="ID_943652445" MODIFIED="1518487921078" TEXT="pro Fenster">
|
|
<node CREATED="1485126488981" ID="ID_1346100835" MODIFIED="1518487921078" TEXT="WorkspaceWindow"/>
|
|
<node CREATED="1485126494621" ID="ID_923407468" MODIFIED="1518487921078" TEXT="PanelManager"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1476376882857" HGAP="193" ID="ID_1420903777" MODIFIED="1518487921078" TEXT="Kern-Elemente" VSHIFT="-34">
|
|
<node CREATED="1480639237820" HGAP="-42" ID="ID_138717265" MODIFIED="1518487921078" TEXT="Bausteine" VSHIFT="-11">
|
|
<node CREATED="1480639254498" ID="ID_601165955" MODIFIED="1518487921078" TEXT="Placement"/>
|
|
<node CREATED="1480639279591" ID="ID_887618627" MODIFIED="1518487921078" TEXT="Timecode"/>
|
|
<node CREATED="1480639276064" ID="ID_1418536459" MODIFIED="1518487921078" TEXT="Fader"/>
|
|
<node CREATED="1480639258169" ID="ID_1876553930" MODIFIED="1518487921078" TEXT="Label"/>
|
|
<node CREATED="1480639267600" ID="ID_671046048" MODIFIED="1518487921078" TEXT="Clip"/>
|
|
<node CREATED="1480639365715" ID="ID_743867283" MODIFIED="1518487921078" TEXT="Bin"/>
|
|
</node>
|
|
<node CREATED="1480639327169" HGAP="36" ID="ID_700485676" MODIFIED="1518487921078" 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="1518487921078" TEXT="Assets" VSHIFT="-26">
|
|
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
|
|
</node>
|
|
<node CREATED="1504459300720" ID="ID_1860702149" MODIFIED="1518487921078" TEXT="Einstellungen"/>
|
|
<node CREATED="1504459315798" ID="ID_888900532" MODIFIED="1518487921078" 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="1518487921079" TEXT="Timeline" VSHIFT="-17">
|
|
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
|
|
<node CREATED="1477599995452" HGAP="10" ID="ID_97568136" MODIFIED="1518487921079" TEXT="Bestandteile" VSHIFT="-4">
|
|
<node CREATED="1476377043180" ID="ID_1179709828" MODIFIED="1518487921079" TEXT="Head">
|
|
<node CREATED="1476377067729" ID="ID_896843893" MODIFIED="1518487921079" TEXT="Patchbay"/>
|
|
<node CREATED="1476377071072" ID="ID_745594295" MODIFIED="1518487921079" TEXT="in-sync with body"/>
|
|
</node>
|
|
<node CREATED="1476377048043" ID="ID_994927647" MODIFIED="1518487921079" TEXT="Body">
|
|
<node CREATED="1476377078839" ID="ID_331565543" MODIFIED="1518487921079" TEXT="the Fork">
|
|
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
|
|
</node>
|
|
<node CREATED="1476377087942" ID="ID_26794000" MODIFIED="1518487921079" TEXT="expandable"/>
|
|
</node>
|
|
<node CREATED="1476377059386" ID="ID_363001687" MODIFIED="1518487921079" TEXT="Control">
|
|
<node CREATED="1476377117290" ID="ID_179386424" MODIFIED="1518487921079" TEXT="scolling"/>
|
|
<node CREATED="1480694668090" ID="ID_792729651" MODIFIED="1518487921079" TEXT="TimelineWidget">
|
|
<node CREATED="1480694675624" ID="ID_1512443419" MODIFIED="1518487921079" TEXT="Einstiegspunkt"/>
|
|
<node CREATED="1480694679232" ID="ID_1344733448" MODIFIED="1518487921079">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
sets für <b>eine feste</b> session::Timeline
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="yes"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1480694854057" HGAP="32" ID="ID_577309407" MODIFIED="1518487921079" TEXT="TimelinePane" VSHIFT="7">
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1480694860696" ID="ID_1847844548" MODIFIED="1518487921079" TEXT="hä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="1518487921079" TEXT="InteractionDirector verwaltet Platzhalter"/>
|
|
<node CREATED="1504459419584" ID="ID_1339072222" MODIFIED="1518487921079" TEXT="in der TimelinePane leben die zugehörigen Widgets"/>
|
|
<node CREATED="1504459462330" ID="ID_791513915" MODIFIED="1518487921079">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
Verwaltung <i>autmatisch</i> via ViewLocator -> PanelLocator
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1480694897443" ID="ID_402490324" MODIFIED="1518487921079" TEXT="verwaltet die Timelines"/>
|
|
<node CREATED="1480694918056" ID="ID_789731200" MODIFIED="1518487921079">
|
|
<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="1518487921079" TEXT="interface == Widget"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1480694624879" HGAP="37" ID="ID_1678741068" MODIFIED="1518487921079" TEXT="TimelineController" VSHIFT="21">
|
|
<node CREATED="1480694630302" ID="ID_10965216" MODIFIED="1518487921079" TEXT="hat das Sagen"/>
|
|
<node CREATED="1480694652219" ID="ID_1232910852" MODIFIED="1518487921079" TEXT="Widget wird passiv"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1477600006370" ID="ID_1328755612" MODIFIED="1518487921079" TEXT="Konzept">
|
|
<node CREATED="1504387810549" ID="ID_599967369" MODIFIED="1518487921079" TEXT="Identität">
|
|
<node CREATED="1504387825051" ID="ID_281718898" MODIFIED="1518487921079" TEXT="eine View pro Model-Komponente"/>
|
|
<node CREATED="1504387834601" ID="ID_798058080" MODIFIED="1518487921079" TEXT="Slave-Views kaskadiert">
|
|
<icon BUILTIN="idea"/>
|
|
<node CREATED="1504387844840" ID="ID_1591380172" MODIFIED="1518487921079" TEXT="TimelineView verwaltet eigene Sklaven"/>
|
|
<node CREATED="1504387856919" ID="ID_198003145" MODIFIED="1518487921079" TEXT="nach außen hin transparent"/>
|
|
<node CREATED="1504387865853" ID="ID_519067212" MODIFIED="1518487921079" TEXT="delegiert automatisch"/>
|
|
</node>
|
|
<node CREATED="1504387896417" ID="ID_1112793361" MODIFIED="1518487921079" TEXT="EntryID<Timeline>"/>
|
|
</node>
|
|
<node CREATED="1477600020776" ID="ID_955842824" MODIFIED="1518487921079" TEXT="Einteilung"/>
|
|
<node CREATED="1477600027128" ID="ID_1592196047" MODIFIED="1518487921079" TEXT="Handhabung">
|
|
<node CREATED="1477600041886" ID="ID_1241593972" MODIFIED="1518487921079" TEXT="User"/>
|
|
<node CREATED="1477600044069" ID="ID_217967290" MODIFIED="1518487921079" TEXT="technisch">
|
|
<node CREATED="1477600126514" ID="ID_1433799303" MODIFIED="1518487921079" TEXT="grundsätzlich....">
|
|
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
|
|
<node CREATED="1477600134217" ID="ID_1352260964" MODIFIED="1518487921079" 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 ü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 ü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äumliche Metapher"/>
|
|
<node CREATED="1477600353036" ID="ID_529949426" MODIFIED="1518487921079" TEXT="brauche Orts-Reprä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>
|
|
<node CREATED="1477600431489" ID="ID_741336406" MODIFIED="1518487921079" TEXT="gtk::Layout">
|
|
<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ächtig"/>
|
|
<node CREATED="1477600454470" ID="ID_1255426760" MODIFIED="1518487921079" TEXT="ist ein gtk::Container"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1479678484210" ID="ID_1561971595" MODIFIED="1518487921079" TEXT="Struktur">
|
|
<node CREATED="1479678496272" ID="ID_807567871" LINK="file:///home/hiv/devel/lumi/wiki/renderengine.html#GuiTimelineWidgetStructure" MODIFIED="1518487921079" TEXT="Analyse">
|
|
<node CREATED="1479678503071" ID="ID_806149006" MODIFIED="1518487921079" TEXT="Grid bringt nix">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
Das war zwar schon meine Bauchgefühl,
|
|
</p>
|
|
<p>
|
|
habe aber sicherheitshalber diese Analyse nochmal gemacht.
|
|
</p>
|
|
<p>
|
|
Details im  TiddlyWiki....
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
<node CREATED="1479678634213" ID="ID_432405176" MODIFIED="1518487921079" TEXT="rekursive Struktur schaffen">
|
|
<icon BUILTIN="yes"/>
|
|
</node>
|
|
<node CREATED="1479678509822" ID="ID_915690336" MODIFIED="1518487921079" TEXT="Scrolling ist notwendig speziell"/>
|
|
</node>
|
|
<node CREATED="1479678717961" ID="ID_946163885" MODIFIED="1518487921079" TEXT="globales Widget">
|
|
<node CREATED="1479678723576" ID="ID_666987913" MODIFIED="1518487921079" TEXT="Layout Grundmuster: zweigeteilt"/>
|
|
<node CREATED="1479678736655" ID="ID_1313901406" MODIFIED="1518487921079" TEXT="globaler Layout-Manager"/>
|
|
</node>
|
|
<node CREATED="1480723110777" HGAP="24" ID="ID_1197860604" MODIFIED="1518487921079" TEXT="Kontrollstruktur" VSHIFT="7">
|
|
<icon BUILTIN="pencil"/>
|
|
<node CREATED="1480723136861" ID="ID_839909208" MODIFIED="1518487921079" TEXT="Einstiegspunkt">
|
|
<arrowlink COLOR="#8d8ba5" DESTINATION="ID_1295897045" ENDARROW="Default" ENDINCLINATION="296;-456;" ID="Arrow_ID_150397161" STARTARROW="None" STARTINCLINATION="1056;0;"/>
|
|
<node CREATED="1480723144188" ID="ID_420419439" MODIFIED="1518487921079" TEXT="TimelineWidget"/>
|
|
<node CREATED="1480723148572" ID="ID_1331974915" MODIFIED="1518487921079" TEXT="wirklich">
|
|
<icon BUILTIN="help"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1480723200765" ID="ID_1498754065" MODIFIED="1518487921079" TEXT="aktiv">
|
|
<node CREATED="1480723223938" ID="ID_1057816659" MODIFIED="1518487921079" TEXT="UI-Mechanik">
|
|
<node CREATED="1480723246207" ID="ID_988556037" MODIFIED="1518487921079" TEXT="Scrollen"/>
|
|
<node CREATED="1480723270492" ID="ID_1057899601" MODIFIED="1518487921079" TEXT="Zoomen"/>
|
|
<node CREATED="1480723288521" ID="ID_238022948" MODIFIED="1518487921079" TEXT="Navigieren">
|
|
<node CREATED="1480723291697" ID="ID_486282572" MODIFIED="1518487921080" TEXT="delegiert"/>
|
|
<node CREATED="1480723296128" ID="ID_681787776" MODIFIED="1518487921080" TEXT="timeline::NavigatorWidget"/>
|
|
</node>
|
|
<node CREATED="1480723797453" ID="ID_451406554" MODIFIED="1518487921080" TEXT="Benachrichtigungen"/>
|
|
</node>
|
|
<node CREATED="1480723989315" ID="ID_1314277524" MODIFIED="1518487921080" TEXT="zentral">
|
|
<node CREATED="1480724166868" ID="ID_1338884424" MODIFIED="1518487921080" TEXT="Strukturänderung">
|
|
<node CREATED="1480724385214" ID="ID_1913904871" MODIFIED="1518487921080" TEXT="DiffMutable bieten">
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1480724171371" ID="ID_410013238" MODIFIED="1518487921080" TEXT="Strukturänderung vorbereiten">
|
|
<node CREATED="1480724215437" ID="ID_1953691654" MODIFIED="1518487921080" TEXT="Kontextmenü"/>
|
|
<node CREATED="1480724317120" ID="ID_1898649980" MODIFIED="1518487921080" TEXT="Fokus + Befehl / Taste"/>
|
|
<node CREATED="1480724346548" ID="ID_200646693" MODIFIED="1518487921080" TEXT="markieren + Kommando schicken">
|
|
<icon BUILTIN="forward"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1480724417722" HGAP="55" ID="ID_940232384" MODIFIED="1518487921080" TEXT="drei Möglichkeiten" VSHIFT="5">
|
|
<node CREATED="1480724450958" ID="ID_493402962" MODIFIED="1518487921080" 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ß für alle Strukturä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="1518487921080" 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="1518487921080" TEXT="Controller is Tangible">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1480724851312" ID="ID_1653680733" MODIFIED="1518487921080" TEXT="erzeugt Rückbezug für Notifications">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
..d.h. der Controller muß wieder auf das Widget zugreifen
|
|
</p>
|
|
<p>
|
|
und sei es auch bloß ü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ß 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="1518487921080" TEXT="expose DiffMutable">
|
|
<icon BUILTIN="idea"/>
|
|
<node CREATED="1480724983774" ID="ID_845297603" MODIFIED="1518487921080" TEXT="heißt: Manipulation auß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="1518487921080">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
<i>aber:</i> Binding im Diff-System durchaus möglich
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...denn:
|
|
</p>
|
|
<p>
|
|
das Diff-System verlangt nicht, daß Kinder in der Collection auch Tangible sind.
|
|
</p>
|
|
<p>
|
|
Es verlangt nur
|
|
</p>
|
|
<ul>
|
|
<li>
|
|
daß wir wissen, wie wir Kinder machen
|
|
</li>
|
|
<li>
|
|
daß wir für ein gegebenes Kind ein DiffMutable beschaffen können
|
|
</li>
|
|
</ul>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
<node CREATED="1480725106478" ID="ID_550796340" MODIFIED="1518487921080" TEXT="effektiv auch die Lösung fü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="1479688613990" ID="ID_1537299376" MODIFIED="1518487921080" TEXT="Strukturänderung">
|
|
<node CREATED="1479688621637" ID="ID_71591229" MODIFIED="1518487921080" TEXT="notwendig: strukturelles Modell">
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
</node>
|
|
<node CREATED="1479688633483" ID="ID_1301490505" MODIFIED="1518487921080" TEXT="Elemente in diesem halten einen display-context"/>
|
|
<node CREATED="1479688653913" ID="ID_1435784278" MODIFIED="1518487921080" TEXT="dieser wiederum muß für jede Erweiterung konsultiert werden"/>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1487465759930" HGAP="19" ID="ID_923619509" MODIFIED="1518487921080" 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="1518487921080" TEXT="mehrere Ansichten für die gleiche Timeline"/>
|
|
<node CREATED="1487465882513" ID="ID_347013155" MODIFIED="1518487921080" TEXT="Gründe">
|
|
<icon BUILTIN="info"/>
|
|
<node CREATED="1487465847518" ID="ID_1430621359" MODIFIED="1518487921080" TEXT="bewußt verschiedene Ausschnitte"/>
|
|
<node CREATED="1487465854653" ID="ID_921534930" MODIFIED="1518487921080" TEXT="unbeabsichtigt in verschiedenen Fenstern"/>
|
|
<node CREATED="1487465866499" ID="ID_354960009" MODIFIED="1518487921080" TEXT="Fokussierte Ansicht einer nested sequence"/>
|
|
</node>
|
|
<node CREATED="1487465918884" ID="ID_1775013701" MODIFIED="1518487921080" TEXT="Lösungs-Ansätze">
|
|
<icon BUILTIN="hourglass"/>
|
|
<node CREATED="1487465924572" ID="ID_542870958" MODIFIED="1518487921080" TEXT="auf Widget-Ebene doppeln">
|
|
<icon BUILTIN="button_cancel"/>
|
|
<node CREATED="1487465932554" ID="ID_450673459" MODIFIED="1518487921080" TEXT="greift in die direkte Diff-Mechanik ein"/>
|
|
<node CREATED="1487465947504" ID="ID_284663745" MODIFIED="1518487921080" TEXT="Timeline-Komponenten sind selber beliebig komplex"/>
|
|
<node CREATED="1487465960198" ID="ID_1257024935" MODIFIED="1518487921080" TEXT="Annahme war immer, daß Presenter nahe am Widget arbeitet"/>
|
|
</node>
|
|
<node CREATED="1487465985315" ID="ID_1891341453" MODIFIED="1518487921080" TEXT="Timeline-Controller-Slaves">
|
|
<node CREATED="1487465996906" ID="ID_1882876532" MODIFIED="1518487921080" TEXT="machbar"/>
|
|
<node CREATED="1487465999417" ID="ID_1034026426" MODIFIED="1518487921080" TEXT="typische Clustering-Probleme"/>
|
|
<node CREATED="1487466005952" ID="ID_465457871" MODIFIED="1518487921080" TEXT="Scheitern in-Memory unwahrscheinlich"/>
|
|
<node CREATED="1487466021990" ID="ID_212586057" MODIFIED="1518487921080" TEXT="Controller muß aktiv mitwirken"/>
|
|
</node>
|
|
<node CREATED="1487466040524" ID="ID_646231524" MODIFIED="1518487921080" TEXT="Timeline-Slave in der Session">
|
|
<node CREATED="1487466064520" ID="ID_1607482571" MODIFIED="1518487921080" TEXT="macht Doppelung explizit"/>
|
|
<node CREATED="1487466078743" ID="ID_1134944510" MODIFIED="1518487921080" TEXT="Problem mit den Element-IDs"/>
|
|
<node CREATED="1487466090917" ID="ID_1611961848" MODIFIED="1518487921080" TEXT="UI -> Session ist unproblematisch"/>
|
|
<node CREATED="1487466100372" ID="ID_1630288830" MODIFIED="1518487921080" TEXT="Session/Builder muß aufdoppeln">
|
|
<node CREATED="1487466111930" ID="ID_966355925" MODIFIED="1518487921080" TEXT="Diff-Nachrichten"/>
|
|
<node CREATED="1487466115154" ID="ID_260455064" MODIFIED="1518487921080" TEXT="Fehler-Markierungen"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1487466966478" ID="ID_479759046" MODIFIED="1518487921080" TEXT="#1083 solution for Timeline slave">
|
|
<icon BUILTIN="bell"/>
|
|
<node CREATED="1487466997138" ID="ID_1028434909" MODIFIED="1518487921080" TEXT="auf später vertagt">
|
|
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
|
|
</node>
|
|
<node CREATED="1487466986523" ID="ID_39632539" MODIFIED="1518487921080" TEXT="zunächst unterbinden">
|
|
<icon BUILTIN="yes"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1479774700668" HGAP="47" ID="ID_1407821684" MODIFIED="1518487921080" TEXT="Mutation" VSHIFT="13">
|
|
<node CREATED="1479774705839" ID="ID_301222108" MODIFIED="1518487921080" TEXT="Problem">
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
<node COLOR="#d30f0f" CREATED="1479774731141" ID="ID_1523088286" MODIFIED="1518487921080" TEXT="Element != Widget"/>
|
|
<node COLOR="#640c0c" CREATED="1479774764575" ID="ID_1338013643" MODIFIED="1518487921080" 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="1518487921080" 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="1518487921080" VSHIFT="23">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
grundsä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="1518487921080" TEXT="Diff repräsentiert Änderungen indirekt"/>
|
|
<node CREATED="1480120487509" ID="ID_1693545323" MODIFIED="1518487921080">
|
|
<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="1518487921080" TEXT="Widget-Container hat keine Änderungs-Schnittstelle"/>
|
|
<node COLOR="#338800" CREATED="1480725417748" HGAP="28" ID="ID_1996114890" MODIFIED="1518487921080" 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 CREATED="1480120516442" ID="ID_880374813" MODIFIED="1518487921080" TEXT="Ansätze">
|
|
<node CREATED="1480120531935" ID="ID_1894474191" MODIFIED="1518487921080" TEXT="Dekorator auf TreeMutator">
|
|
<icon BUILTIN="button_cancel"/>
|
|
<node CREATED="1480121069464" ID="ID_1707876611" MODIFIED="1518487921080" TEXT="Operationen mitlesen"/>
|
|
<node CREATED="1480121074703" ID="ID_1346494338" MODIFIED="1518487921080" TEXT="Notifikations-Schnittstelle">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...und der Dekorator würde die beobachteten Operationen
|
|
</p>
|
|
<p>
|
|
an diese Notifikations-Schnittstelle senden.
|
|
</p>
|
|
<p>
|
|
Implementiert würde sie vom jeweiligen Widget
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1480123478013" ID="ID_1281325973" MODIFIED="1518487921080" TEXT="eine Ebene zu tief, aber geht noch">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
korrekt wä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üß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önnte man trotzdem (mit etwas Hängen und Würgen) noch hinkommen.
|
|
</p>
|
|
<p>
|
|
Der Dekorator würde also auf dem TreeMutator sitzen...
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1480121092492" ID="ID_1543810707" MODIFIED="1518487921081" TEXT="Löschungen nur heuristisch zu erkennen">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
Weil wir die "skip"-Operation für zwei Zwecke verwenden,
|
|
</p>
|
|
<p>
|
|
und man im Skip nicht weiß, ob man das Element überhaupt noch anfassen darf,
|
|
</p>
|
|
<p>
|
|
denn es könnte ja auch ein von "find" zurückgelassener Mü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="1518487921081" TEXT="unsauber, hässlich, unglücklich">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<ul>
|
|
<li>
|
|
man sitzt mit dem Detektor unter dem API
|
|
</li>
|
|
<li>
|
|
dadurch entstehen "ungeschriebene Regeln", wie das API auzurufen ist
|
|
</li>
|
|
<li>
|
|
alternativ könnten wir die Operationen komplett 1:1 definieren, also eine explizite delete-Operation einführen
|
|
</li>
|
|
<li>
|
|
dafür würde dann die matchSrc wegfallen, was praktisch alle sinnvollen Unit-Tests stark beschränkt.
|
|
</li>
|
|
</ul>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1480123380843" ID="ID_1717666432" MODIFIED="1518487921081" TEXT="wäre prinzipiell machbar">
|
|
<icon BUILTIN="forward"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1480121177145" ID="ID_1964453367" MODIFIED="1518487921081" 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="1518487921081" TEXT="Hinzufügungen erzeugen neue Widgets">
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
<node CREATED="1480121219579" ID="ID_1906821886" MODIFIED="1518487921081" TEXT="Löschungen entfernen das zugehörige Widget">
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
<node CREATED="1480121271493" ID="ID_1169797519" MODIFIED="1518487921081" TEXT="Reihenfolge ist nebensächlich">
|
|
<icon BUILTIN="idea"/>
|
|
<node CREATED="1480123311260" ID="ID_1288896772" MODIFIED="1518487921081" TEXT="Reihenfolge der Widgets == Z-Ordnung"/>
|
|
<node CREATED="1480123321707" ID="ID_1842225087" MODIFIED="1518487921081" TEXT="das ist ein reiner UI-Belang"/>
|
|
<node CREATED="1480123330521" ID="ID_255024472" MODIFIED="1518487921081" TEXT="Reihenfolge der Tracks wird im UI realisiert"/>
|
|
<node CREATED="1480123353030" ID="ID_871730723" MODIFIED="1518487921081" TEXT="Reihenfolge der Clips wird redundant (durch Position) gegeben"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1480123881912" HGAP="6" ID="ID_1550301342" MODIFIED="1518487921081" TEXT="Schlußfolgerung" VSHIFT="3">
|
|
<icon BUILTIN="yes"/>
|
|
<node CREATED="1480123900845" ID="ID_1099759004" MODIFIED="1518487921081" TEXT="wir mutieren ein Modell-Objekt"/>
|
|
<node CREATED="1480123908524" ID="ID_599072568" MODIFIED="1518487921081" TEXT="das Widget hängt an diesem als kompletter Slave">
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1480123920371" ID="ID_413127533" MODIFIED="1518487921081" TEXT="Registrierung / Deregistrierung muß vollautomatisch sein">
|
|
<icon BUILTIN="yes"/>
|
|
</node>
|
|
<node CREATED="1480124094867" ID="ID_1956638484" MODIFIED="1518487921081">
|
|
<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="1518487921081" TEXT="für einen ganzen Scope"/>
|
|
<node CREATED="1480124153979" ID="ID_887707794" MODIFIED="1518487921081" TEXT="stellt fest, was gezeigt werden muß"/>
|
|
<node CREATED="1480124174144" ID="ID_1145067443" MODIFIED="1518487921081" TEXT="synthetisiert Anzeige-Parameter (z.B: Koordinaten, Z-Ordnung)"/>
|
|
<node CREATED="1480124235128" ID="ID_162610711" MODIFIED="1518487921081" TEXT="muß inkrementell arbeiten und bestehende Widgets anpassen"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1480300573857" HGAP="68" ID="ID_434577605" MODIFIED="1518487921081" TEXT="Anzeige-Steuerung" VSHIFT="39">
|
|
<icon BUILTIN="pencil"/>
|
|
<node CREATED="1480300584454" ID="ID_202830560" MODIFIED="1518487921081" TEXT="globaler Layout-Manager">
|
|
<node CREATED="1480300595820" ID="ID_1004344887" MODIFIED="1518487921081" TEXT="fungiert als Service"/>
|
|
<node CREATED="1480300614873" ID="ID_895306481" MODIFIED="1518487921081" TEXT="Ermitteln konkreter Koordinaten"/>
|
|
</node>
|
|
<node CREATED="1480300627712" ID="ID_1748490788" MODIFIED="1518487921081" TEXT="Display-Manager">
|
|
<node CREATED="1480300640790" ID="ID_1461181527" MODIFIED="1518487921081" TEXT="Abstraktion">
|
|
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
|
|
</node>
|
|
<node CREATED="1480300645837" ID="ID_337010957" MODIFIED="1518487921081" TEXT="Interface"/>
|
|
<node CREATED="1480300649437" ID="ID_704277125" MODIFIED="1518487921081">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
interagiert mit den <b>Presentern</b>
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1480300682256" ID="ID_1828380850" MODIFIED="1518487921081" TEXT="Presenter">
|
|
<node CREATED="1480300690191" ID="ID_1405428387" MODIFIED="1518487921081" TEXT="sind lokales Struktur-Modell">
|
|
<node CREATED="1480300733506" ID="ID_186466790" MODIFIED="1518487921081" TEXT="werden per Diff manipuliert"/>
|
|
<node CREATED="1480300740537" ID="ID_1322437138" MODIFIED="1518487921081" 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="1518487921081" TEXT="aktiver Part der View-Steuerung"/>
|
|
<node CREATED="1480300717747" ID="ID_1736166807" MODIFIED="1518487921081" TEXT="Master-Slave für die Widgets"/>
|
|
<node CREATED="1480300804840" ID="ID_1330942810" MODIFIED="1518487921081" TEXT="Verbindung zum Anzeigekontext">
|
|
<node CREATED="1480300822302" ID="ID_1819260908" MODIFIED="1518487921081" TEXT="zwei Kontexte für die Tracks"/>
|
|
<node CREATED="1480300836092" ID="ID_1069009472" MODIFIED="1518487921081" TEXT="Anzeigekontext = Konkretes Vater-Widget"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1480606888860" HGAP="25" ID="ID_899101975" MODIFIED="1518487921081" TEXT="Implementierung" VSHIFT="14">
|
|
<icon BUILTIN="pencil"/>
|
|
<node CREATED="1480606950372" ID="ID_1502878943" MODIFIED="1518487921081" TEXT="Grundstruktur">
|
|
<node CREATED="1480639404070" ID="ID_506539007" MODIFIED="1518487921081" TEXT="HeaderPane">
|
|
<node CREATED="1480639435010" ID="ID_892799964" MODIFIED="1518487921081" TEXT="Navigator"/>
|
|
<node CREATED="1480639438921" ID="ID_1668884794" MODIFIED="1518487921081" TEXT="Baum">
|
|
<node CREATED="1480639447736" ID="ID_1842963526" MODIFIED="1518487921081" TEXT="Expander"/>
|
|
<node CREATED="1480639450960" ID="ID_1468387103" MODIFIED="1518487921081" TEXT="Patchbay"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1480639411109" ID="ID_520199505" MODIFIED="1518487921081" TEXT="ScrolledPane">
|
|
<node CREATED="1480639423116" ID="ID_1226894709" MODIFIED="1518487921081" TEXT="Ruler"/>
|
|
<node CREATED="1480639429307" ID="ID_1922498247" MODIFIED="1518487921081" TEXT="Canvas"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1480606954115" ID="ID_1178000371" MODIFIED="1518487921081" TEXT="Struktur-Modell">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1480725215087" ID="ID_212845679" MODIFIED="1518487921081" TEXT="erzeugen">
|
|
<node CREATED="1480725218783" ID="ID_192239117" MODIFIED="1518487921081" TEXT="Controller ist Tangible">
|
|
<icon BUILTIN="yes"/>
|
|
</node>
|
|
<node CREATED="1480725247115" ID="ID_1533101483" MODIFIED="1518487921081" TEXT="Konstruktion erfordert...">
|
|
<node CREATED="1480796814716" ID="ID_1742743432" MODIFIED="1518487921081" 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ügt
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1480725273775" ID="ID_1495656573" MODIFIED="1518487921081" TEXT="Bus-Term-Referenz"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1480725377994" ID="ID_172881069" MODIFIED="1518487921081" TEXT="verwalten">
|
|
<node CREATED="1480741524775" ID="ID_661893589" MODIFIED="1518487921081" TEXT="Bindings einrichten">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node CREATED="1480800574418" ID="ID_791426893" MODIFIED="1518487921081" TEXT="Marker">
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
<node CREATED="1480800603331" ID="ID_1846937607" MODIFIED="1518487921081" TEXT="treten in diversen Scopes auf"/>
|
|
<node CREATED="1480800643953" ID="ID_409762087" MODIFIED="1518487921081" TEXT="sogar global, auf dem TimeRuler">
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
<node CREATED="1480800605150" ID="ID_1156238228" MODIFIED="1518487921081" TEXT="sind stets optional"/>
|
|
<node CREATED="1480807594822" ID="ID_333819085" MODIFIED="1518487921081" TEXT="führe mal einen Marker-Typ ein"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1480694550601" ID="ID_391329400" MODIFIED="1518487921081" TEXT="TimelineController">
|
|
<node CREATED="1480694557112" ID="ID_786517324" MODIFIED="1518487921081" TEXT="Widget ist Startpunkt"/>
|
|
<node CREATED="1480694571310" ID="ID_1188786444" MODIFIED="1518487921081" TEXT="aber Controller wird Chef"/>
|
|
<node CREATED="1480725633399" ID="ID_1475661668" MODIFIED="1518487921081" TEXT="muß 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="1518487921081" TEXT="Delegate for Notification">
|
|
<icon BUILTIN="help"/>
|
|
</node>
|
|
<node CREATED="1480725704142" ID="ID_992732373" MODIFIED="1518487921081" TEXT="was bleibt abstrakt">
|
|
<node CREATED="1480725715916" ID="ID_890987188" MODIFIED="1518487921081" TEXT="buildMutator">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
latürnich
|
|
</p>
|
|
<p>
|
|
...den <i>muß</i> jeder individuell implementieren,
|
|
</p>
|
|
<p>
|
|
um die Bindung herzustellen
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="ksmiletris"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1480741498930" ID="ID_1605140473" MODIFIED="1518487921081" TEXT="hat nur einen einziten RootTrack">
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
<node CREATED="1480742405505" ID="ID_1590367176" MODIFIED="1518487921081" TEXT="ACHTUNG: leere Sequenz?">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
<i>theoretisch</i> könnte man eine Timeline ohne Sequenz
|
|
</p>
|
|
<p>
|
|
oder eine Sequenz ohne root-Fork zulassen
|
|
</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 über den Bus kommen"/>
|
|
<node CREATED="1480742445563" ID="ID_1224591813" MODIFIED="1518487921081" TEXT="also müssen wir warten, bis das Attribut zugewiesen wird"/>
|
|
</node>
|
|
<node CREATED="1480776067549" ID="ID_1500222365" MODIFIED="1518487921081" TEXT="Alternativen">
|
|
<node CREATED="1480776081388" ID="ID_783764544" MODIFIED="1518487921081" TEXT="via ctor">
|
|
<node CREATED="1480776096665" ID="ID_1492275941" MODIFIED="1518487921081" TEXT="das heißt....">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
Thema "Darstellung von Objekt-Feldern im Diff"
|
|
</p>
|
|
<p>
|
|
<i>da hab ich mir ausgiebig Gedanken darü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üllt sein soll, muß man das über den Konstruktor erzwingen<br />in diesem Fall müssen alle Daten bereits mit dem vorangehenden INS kommen,<br />welches den Konstruktor-Aufruf auslöst<br /><br />
|
|
</li>
|
|
</ul>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="info"/>
|
|
</node>
|
|
<node CREATED="1480776313813" ID="ID_1507386991" MODIFIED="1518487921082" TEXT="Vorteil: einfache Verhältnisse in der Widget-Impl"/>
|
|
<node CREATED="1480776341393" ID="ID_1985821448" MODIFIED="1518487921082" TEXT="Nachteil: muß Diff genau so schicken"/>
|
|
<node CREATED="1480777922397" ID="ID_514769772" MODIFIED="1518487921082" TEXT="...sonst">
|
|
<icon BUILTIN="smily_bad"/>
|
|
<node CREATED="1480777941187" ID="ID_1804935890" MODIFIED="1518487921082" TEXT="irgendjemand triggert Laden"/>
|
|
<node CREATED="1480777950449" ID="ID_487608965" MODIFIED="1518487921082" TEXT="Core schickt 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ätere Updates scheitern gleichermaß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="1518487921082" TEXT="das heiß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ß so geschrieben werden, daß es mit den Leerwerten umgehen kann,
|
|
</p>
|
|
<p>
|
|
was typischerweise heitß, daß es verschiedene Betriebsmodi bekommt.
|
|
</p>
|
|
<p>
|
|
|
|
</p>
|
|
<p>
|
|
Das Diff kann dann später die konkreten Werte für die Attribute nachliefern;
|
|
</p>
|
|
<p>
|
|
typischerweise wird es das in einem Populationsdiff sofort als Nä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äuft nach Schema-F"/>
|
|
<node CREATED="1480778407052" ID="ID_181642617" MODIFIED="1518487921082">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
zwei mögliche
|
|
</p>
|
|
<p>
|
|
Konsequenzen
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<node CREATED="1480778420418" ID="ID_1430286640" MODIFIED="1518487921082" TEXT="Problem ignorieren">
|
|
<node CREATED="1480778490545" ID="ID_1228109442" MODIFIED="1518487921082" TEXT="darauf hoffen, daß das Diff immer sauber kommt"/>
|
|
<node CREATED="1480778499928" ID="ID_1466170472" MODIFIED="1518487921082" TEXT="Felder im Ctor einfach uninitialisiert lassen"/>
|
|
<node CREATED="1480778511086" ID="ID_1612105579" MODIFIED="1518487921082" TEXT="keine Checks im Code"/>
|
|
<node CREATED="1480778532907" ID="ID_1167492250" MODIFIED="1518487921082">
|
|
<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>"was kann denn schon passieren??"</i>
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="smily_bad"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1480778451502" ID="ID_1135553012" MODIFIED="1518487921082" TEXT="echt optionale Felder">
|
|
<node CREATED="1480778622039" ID="ID_1007915114" MODIFIED="1518487921082">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
Betriebsart <i>"partiell initialisiert"</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="1518487921082" 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önnen muß
|
|
</li>
|
|
<li>
|
|
später sich dynamisch erweitern können muß
|
|
</li>
|
|
<li>
|
|
in der Behandlung der UI-Signale ebenfalls checks einbauen muß
|
|
</li>
|
|
</ul>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1480778768988" ID="ID_1385067618" MODIFIED="1518487921082" TEXT="und das alles nur für....">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
einen Fall, der <i>praktisch nie</i> auftritt
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="smily_bad"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1480780047561" HGAP="88" ID="ID_1993420764" MODIFIED="1518487921082" TEXT="Entscheidung" VSHIFT="16">
|
|
<node CREATED="1480780057079" ID="ID_481017202" MODIFIED="1518487921082" TEXT="Analyse">
|
|
<node CREATED="1480780061327" ID="ID_628488180" MODIFIED="1518487921082" TEXT="zwei Fälle sind sehr ähnlich">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
und zwar interessanterweise über Kreuz gegliedert
|
|
</p>
|
|
<ul>
|
|
<li>
|
|
die Ctor-Lösung (hat aber etwas mehr Umsetzungsaufwand)
|
|
</li>
|
|
<li>
|
|
die "wird schon klappen"-Lö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="üble Konsequenzen wenn nicht"/>
|
|
</node>
|
|
<node CREATED="1480780140741" ID="ID_1754958261" MODIFIED="1518487921082" TEXT="und ein dritter ist wirklich wasserdicht">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
wenn alle Objekte <i>wirklich</i> auf partiell initialisierten Zustand vorbereitet sind,
|
|
</p>
|
|
<p>
|
|
und auch ü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="1518487921082" TEXT="plus einer korrodierenden Wirkung">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...welche darin besteht,
|
|
</p>
|
|
<p>
|
|
daß man überall, in der Fläche, sich um Zustandsabhöngigkeit kümmern muß,
|
|
</p>
|
|
<p>
|
|
und deshalb dazu neigt, das Problem jeweils wegzutricksen.
|
|
</p>
|
|
<p>
|
|
|
|
</p>
|
|
<p>
|
|
Es besteht also die große Gefahr, zu "sündigen" und
|
|
</p>
|
|
<p>
|
|
heimlich in den "wird schon nix passieren" Fall zu geraten.
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1480780269867" ID="ID_1571900658" MODIFIED="1518487921082" TEXT="dafür kann nie was passieren"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1480780494717" ID="ID_432076484" MODIFIED="1518487921082" TEXT="Bewertung">
|
|
<node CREATED="1480780498437" ID="ID_1806301944" MODIFIED="1518487921082" TEXT="nur die Ctor-Lösung ist geradlinig">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
das heißt, nur diese Lösung grü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="1518487921082" TEXT="nur die "paßt schon"-Lösung ist vernünftig">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...nach allen gängigen Prinzipien der instrumentellen Vernunft.
|
|
</p>
|
|
<p>
|
|
KISS
|
|
</p>
|
|
<p>
|
|
YAGNI
|
|
</p>
|
|
<p>
|
|
"fokussiere Dich"
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1480780704849" ID="ID_483861197" MODIFIED="1518487921082" TEXT="Abwägung">
|
|
<node CREATED="1480780715911" ID="ID_1289637688" MODIFIED="1518487921082" TEXT="in der Berufspraxis muß man ständig ein Auge zudrücken"/>
|
|
<node CREATED="1480780731213" ID="ID_773522234" MODIFIED="1518487921082">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
hier hab ich <b>endlich mal</b> die Gelegenheit, sauber zu arbeiten
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1480780746851" ID="ID_1128552915" MODIFIED="1518487921082" TEXT="und etwas zu schaffen, für das ich mich nicht entschuldigen muß"/>
|
|
<node CREATED="1480780768272" ID="ID_1174359339" MODIFIED="1518487921082" TEXT="leider führt genau diese Haltung dazu, daß mir die Helfer davonlaufen"/>
|
|
<node CREATED="1480780835319" ID="ID_1263364267" MODIFIED="1518487921082">
|
|
<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> ich mich überhaupt entscheiden konnte...
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1480780930115" HGAP="5" ID="ID_1156407347" MODIFIED="1518487921082" TEXT="Lösung: per Konstruktor festlegen" VSHIFT="6">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...nochmal zusammengefaßt
|
|
</p>
|
|
<ul>
|
|
<li>
|
|
immer wenn ein Feld <i>seinem Wesen nach</i> zwingend gesetzt sein muß (und aus keinem anderen Grund)
|
|
</li>
|
|
<li>
|
|
dann wird dies per Konstruktor so erzwungen
|
|
</li>
|
|
<li>
|
|
daher muß dann im Diff bereits im INS-Verb die notwendige Information transportiert werden
|
|
</li>
|
|
<li>
|
|
das heißt, bei der Diff-Erzeugung muß man aufpassen und an dieser Stelle bereits einen Record mit den Daten liefern
|
|
</li>
|
|
</ul>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1480606985087" ID="ID_885244508" MODIFIED="1518487921082" TEXT="Layout-Manager">
|
|
<node CREATED="1480639469981" ID="ID_983391388" MODIFIED="1518487921082" TEXT="Abstraktionen"/>
|
|
<node CREATED="1480639473324" ID="ID_191170582" MODIFIED="1518487921082" TEXT="eval pass"/>
|
|
</node>
|
|
<node CREATED="1480606973713" ID="ID_163713350" MODIFIED="1518487921082" TEXT="Track-Presenter">
|
|
<node CREATED="1480741594101" ID="ID_1017414696" MODIFIED="1518487921082" TEXT="mit doppeltem Display-Kontext verbinden"/>
|
|
<node CREATED="1480741545196" ID="ID_1657879480" MODIFIED="1518487921082" TEXT="TrackWidget">
|
|
<node CREATED="1480741552611" ID="ID_1987203186" MODIFIED="1518487921082" TEXT="erzeugen"/>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1480741555930" ID="ID_1869427213" MODIFIED="1518487921082">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
wie in Kopf <i>und</i> Rumpf injizieren
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="help"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1480607029673" ID="ID_619470641" MODIFIED="1518487921082" TEXT="Track-Anzeige">
|
|
<node CREATED="1480607033512" ID="ID_1815699851" MODIFIED="1518487921082" TEXT="Kopf"/>
|
|
<node CREATED="1480607035712" ID="ID_1405339006" MODIFIED="1518487921082" TEXT="Rumpf"/>
|
|
</node>
|
|
<node CREATED="1480621574221" ID="ID_1217785331" MODIFIED="1518487921082" TEXT="ClipPresenter">
|
|
<node CREATED="1480741362389" ID="ID_328415412" MODIFIED="1518487921082" TEXT="ClipWidget">
|
|
<node CREATED="1480741370347" ID="ID_1275685315" MODIFIED="1518487921082" TEXT="erzeugen"/>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1480741374451" ID="ID_1270677756" MODIFIED="1518487921082" TEXT="in Display injizieren">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1480741386769" ID="ID_1808095573" MODIFIED="1518487921082" TEXT="Kinder">
|
|
<node CREATED="1480741389777" ID="ID_1548768233" MODIFIED="1518487921083" TEXT="welche kommen in Frage">
|
|
<icon BUILTIN="help"/>
|
|
</node>
|
|
<node CREATED="1480741397880" ID="ID_299590632" MODIFIED="1518487921083" TEXT="Effekte werden als ClipPresenter implementiert">
|
|
<icon BUILTIN="yes"/>
|
|
</node>
|
|
<node CREATED="1480741425668" ID="ID_826648354" MODIFIED="1518487921083" 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="1518487921083" TEXT="das werden zwei Collections">
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1480607059909" ID="ID_703281238" MODIFIED="1518487921083" TEXT="Control"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1479434763643" HGAP="48" ID="ID_1572413636" MODIFIED="1518487921083" TEXT="Clip" VSHIFT="32">
|
|
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
|
|
<node CREATED="1479434774138" ID="ID_912862507" MODIFIED="1518487921083" TEXT="Grundlagen">
|
|
<node CREATED="1479434780105" ID="ID_239720378" MODIFIED="1518487921083" 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="1518487921083" TEXT="abridged form">
|
|
<node CREATED="1479434845992" ID="ID_609815513" MODIFIED="1518487921083" TEXT="media bin, collapsed fork"/>
|
|
<node CREATED="1479441548335" ID="ID_150470698" MODIFIED="1518487921083" TEXT="icon + ID label"/>
|
|
<node CREATED="1479601640961" ID="ID_191706335" MODIFIED="1518487921083" TEXT="Gtk::Frame"/>
|
|
</node>
|
|
<node CREATED="1479441503085" ID="ID_386209482" MODIFIED="1518487921083" TEXT="compact form">
|
|
<node CREATED="1479441530689" ID="ID_1057853337" MODIFIED="1518487921083" TEXT="timeline default"/>
|
|
<node CREATED="1479441567268" ID="ID_1413366977" MODIFIED="1518487921083" TEXT="rendered content strip + decorations"/>
|
|
<node CREATED="1479601649615" ID="ID_417588278" MODIFIED="1518487921083" TEXT="Gtk::Frame + Gtk::Layout"/>
|
|
</node>
|
|
<node CREATED="1479441519834" ID="ID_1669486876" MODIFIED="1518487921083" TEXT="expanded form">
|
|
<node CREATED="1479441586057" ID="ID_64386373" MODIFIED="1518487921083" TEXT="window with embedded sub-clips"/>
|
|
<node CREATED="1479601667734" ID="ID_1877644742" MODIFIED="1518487921083" TEXT="dto, with recursive embedded sub-clips"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1479442296443" ID="ID_911884433" MODIFIED="1518487921083" TEXT="graceful display degradation">
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
<node CREATED="1479442310537" ID="ID_1849995398" MODIFIED="1518487921083" TEXT="Fall1: wenigstens 1 pixel"/>
|
|
<node CREATED="1479442322359" ID="ID_492785140" MODIFIED="1518487921083" TEXT="Fall2: in diesem Pixel ist content"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1480797025150" ID="ID_852148145" MODIFIED="1518487921083" TEXT="verwendet für">
|
|
<node CREATED="1480797029581" ID="ID_1257172627" MODIFIED="1518487921083" TEXT="Clips">
|
|
<node CREATED="1480797161164" ID="ID_1187665675" MODIFIED="1518487921083" TEXT="abridged"/>
|
|
<node CREATED="1480797166355" ID="ID_1788361951" MODIFIED="1518487921083" TEXT="compact"/>
|
|
<node CREATED="1480797170331" ID="ID_174323572" MODIFIED="1518487921083" TEXT="expanded"/>
|
|
</node>
|
|
<node CREATED="1480797032709" ID="ID_597046922" MODIFIED="1518487921083" TEXT="Spuren im Clip"/>
|
|
<node CREATED="1480797036804" ID="ID_418077851" MODIFIED="1518487921083" TEXT="Effekte">
|
|
<node CREATED="1480797067392" ID="ID_1213128633" MODIFIED="1518487921083" TEXT="compact"/>
|
|
<node CREATED="1480797155052" ID="ID_640502487" MODIFIED="1518487921083" TEXT="abridged"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1479601690675" ID="ID_542607961" MODIFIED="1518487921083" TEXT="Struktur">
|
|
<icon BUILTIN="pencil"/>
|
|
<node CREATED="1479601699057" ID="ID_1130364446" MODIFIED="1518487921083" TEXT="Konflikt mit der UI-Bus-Architektur">
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
<node CREATED="1479601736116" ID="ID_891600328" MODIFIED="1518487921083" TEXT="Bus == Rolle des Controler/Model"/>
|
|
<node CREATED="1479601749946" ID="ID_887287956" MODIFIED="1518487921083" TEXT="Widget == View-Rolle"/>
|
|
</node>
|
|
<node CREATED="1479601765896" ID="ID_1632476975" MODIFIED="1518487921083">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
UI-Bus gilt nur für <b>globale Belange</b>
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<node CREATED="1479601788237" ID="ID_1871715779" MODIFIED="1518487921083" TEXT="wichtige neue Unterscheidung">
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
<node CREATED="1479601796075" ID="ID_1177606400" MODIFIED="1518487921083" TEXT="Global == in der Session aufgezeichnet"/>
|
|
<node CREATED="1479601807666" ID="ID_1374495669" MODIFIED="1518487921083" TEXT="vs. lokale UI-Mechanik"/>
|
|
<node CREATED="1479601828799" ID="ID_1797519191" MODIFIED="1518487921083" TEXT="Ziel: Subsidiarität für lokale Belange"/>
|
|
</node>
|
|
<node CREATED="1479601884288" HGAP="34" ID="ID_1371609613" MODIFIED="1518487921083" TEXT="Lösungs-Idee" VSHIFT="18">
|
|
<icon BUILTIN="idea"/>
|
|
<node CREATED="1479601889567" ID="ID_1123973572" MODIFIED="1518487921083">
|
|
<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="1518487921083" TEXT="es ist ein Design-Pattern">
|
|
<icon BUILTIN="yes"/>
|
|
</node>
|
|
<node CREATED="1479601925938" ID="ID_22286545" MODIFIED="1518487921083">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
das lokale Element muß nur als View <i>fungieren</i>
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1479601945839" ID="ID_254470029" MODIFIED="1518487921083" TEXT="Model-View-Presenter">
|
|
<icon BUILTIN="forward"/>
|
|
</node>
|
|
<node CREATED="1479602306718" ID="ID_359464754" MODIFIED="1518487921083" TEXT="ClipPresenter">
|
|
<node CREATED="1479602311740" ID="ID_963961994" MODIFIED="1518487921083" TEXT="Mittelsmann"/>
|
|
<node CREATED="1479602314676" ID="ID_944757170" MODIFIED="1518487921083" TEXT="steht für den Clip"/>
|
|
<node CREATED="1479602319555" ID="ID_1557047586" MODIFIED="1518487921083" TEXT="steuert ein ClipWidget"/>
|
|
<node CREATED="1479602338609" ID="ID_444253818" MODIFIED="1518487921083" TEXT="ClipWidget">
|
|
<node CREATED="1479602341777" ID="ID_1610807382" MODIFIED="1518487921083" TEXT="empfängt DisplayStrategy"/>
|
|
<node CREATED="1479602382195" ID="ID_1504834509" MODIFIED="1518487921083">
|
|
<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="1518487921083" TEXT="Frame"/>
|
|
<node CREATED="1479602415654" ID="ID_1358720" MODIFIED="1518487921083" TEXT="Frame + Layout"/>
|
|
<node CREATED="1479602419134" ID="ID_1788706818" MODIFIED="1518487921083" TEXT="sub-Clips im Layout"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1476376943985" HGAP="52" ID="ID_1422206856" MODIFIED="1518487921083" TEXT="Viewer" VSHIFT="10">
|
|
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
|
|
</node>
|
|
<node CREATED="1480639186172" HGAP="45" ID="ID_838667304" MODIFIED="1518487921083" TEXT="Mixer" VSHIFT="28">
|
|
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
|
|
</node>
|
|
<node CREATED="1476376927660" HGAP="35" ID="ID_688318446" MODIFIED="1518487921083" TEXT="Docks" VSHIFT="12">
|
|
<node CREATED="1504200504235" ID="ID_125942292" MODIFIED="1518487921083" TEXT="PanelManager muß 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="1518487921083" TEXT="#1104 how to instruct actions through panels">
|
|
<linktarget COLOR="#b37033" DESTINATION="ID_945788817" ENDARROW="None" ENDINCLINATION="-67;-71;" ID="Arrow_ID_61914" SOURCE="ID_1943521361" STARTARROW="Default" STARTINCLINATION="-618;-18;"/>
|
|
<icon BUILTIN="flag-yellow"/>
|
|
</node>
|
|
<node CREATED="1504368481111" ID="ID_1149652836" MODIFIED="1518487921083" TEXT="PanelManager selber verbleibt im top-level window">
|
|
<icon BUILTIN="yes"/>
|
|
</node>
|
|
<node CREATED="1504368500421" ID="ID_184425569" MODIFIED="1518487921083" TEXT="es gibt einen PanelLocator im WindowLocator">
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
<node CREATED="1504368540111" ID="ID_1747666798" MODIFIED="1518487921083" 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="1518487921083" TEXT="Müllhaufen">
|
|
<icon BUILTIN="clanbomber"/>
|
|
</node>
|
|
<node CREATED="1504200743610" ID="ID_1973994759" MODIFIED="1518487921083" TEXT="vorläufig....">
|
|
<node CREATED="1504200750905" ID="ID_1728645080" MODIFIED="1518487921083" TEXT="gibt es noch eine ZombieTimeline"/>
|
|
<node CREATED="1504200758920" ID="ID_19179662" MODIFIED="1534850802878" 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;"/>
|
|
<node CREATED="1504200878312" ID="ID_1934842950" MODIFIED="1518487921083" TEXT="...für #1099 DemoGuiRoundtrip">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...um mal was im UI anzeigen zu können
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="info"/>
|
|
</node>
|
|
<node CREATED="1504200907356" ID="ID_1939871955" MODIFIED="1518487921083" TEXT="neues Dock">
|
|
<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="1518487921083" TEXT="als SVG machen...">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
<node CREATED="1504201038435" ID="ID_1569870904" MODIFIED="1518487921083" TEXT="Anleitung">
|
|
<node CREATED="1504201044122" ID="ID_612955500" MODIFIED="1518487921083" TEXT="SVG in data/icons/svg"/>
|
|
<node CREATED="1504201192870" ID="ID_823572488" MODIFIED="1518487921083" TEXT="Dokument-Gröe anscheinend egal">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...wird zwar vom Skript ausgelesen,
|
|
</p>
|
|
<p>
|
|
aber nicht weiterverwendet.
|
|
</p>
|
|
<p>
|
|
Die Icon-Größen ergeben sich aus den Boxes auf 'plate'
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1504201055449" ID="ID_1652674635" MODIFIED="1518487921083" TEXT="braucht 'artwork:'-Layer"/>
|
|
<node CREATED="1504201074566" ID="ID_1803123712" MODIFIED="1518487921083" TEXT="braucht Sub-Layer 'plate'">
|
|
<node CREATED="1504201085348" ID="ID_971103885" MODIFIED="1518487921083" TEXT="dort bounding-boxes"/>
|
|
<node CREATED="1504201089491" ID="ID_1411697919" MODIFIED="1518487921084" TEXT="deren Größe in PX ist die Icon-Größe"/>
|
|
<node CREATED="1504201101314" ID="ID_813225733" MODIFIED="1518487921084" TEXT="brauche 16, 22, 32"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1534523269133" ID="ID_403796438" MODIFIED="1534523275983" TEXT="interne Struktur">
|
|
<node CREATED="1534523277547" ID="ID_1662503806" MODIFIED="1534523282527" TEXT="FelerLog-Anzeige">
|
|
<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 BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1534523296448" ID="ID_734584528" MODIFIED="1534523306232" TEXT="zuklappbar">
|
|
<icon BUILTIN="hourglass"/>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1534523292305" ID="ID_1595061322" MODIFIED="1534523310503" TEXT="Platzhalter">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
</node>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1534850747192" ID="ID_109802175" MODIFIED="1534850758654" TEXT="vorläufig per Grid implementieren">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1504200915915" ID="ID_335470074" MODIFIED="1534850514830" TEXT="spä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;"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1504833434094" ID="ID_349655067" MODIFIED="1518487921084">
|
|
<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>
|
|
<node CREATED="1477342616175" HGAP="37" ID="ID_954058801" MODIFIED="1518487921084" TEXT="Workspace" VSHIFT="33">
|
|
<node CREATED="1477342624942" ID="ID_56920104" MODIFIED="1518487921084" TEXT="ist-Zustand">
|
|
<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ßen"/>
|
|
<node CREATED="1477342711442" ID="ID_500847959" MODIFIED="1518487921084" TEXT="wenn letztes Fenster zu, dann Main->quit"/>
|
|
<node CREATED="1477342816853" ID="ID_205499879" MODIFIED="1518487921084" TEXT="steuert Zusand von Menu>Window>CloseWindow">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...nur <i>enabled</i> 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="1518487921084" 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ö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=""poor man's reflection""/>
|
|
<node CREATED="1477345939063" ID="ID_984848221" MODIFIED="1518487921084">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
realisiert Vererbung <i>zu fuß</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 "CreatePanelProc" in einen PanelDescriptor eingewickelt.
|
|
</p>
|
|
<p>
|
|
Letzten Endes wird dieser dann per Match auf die Typ-ID ausgewä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="1518487921084" 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 übergebenen Objekte aufräumt.
|
|
</p>
|
|
<p>
|
|
Wie sich nun zeigt, passiert das Aufräumen im dtor desjenigen Widget, dem das zu managende Objekt als Kind gegeben wurde.
|
|
</p>
|
|
<p>
|
|
Im vorliegenden Fall wäre das der dtor des umschließ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="1518487921084" TEXT="PanelManager::createPanels()">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
....erzeugt wird das hier:
|
|
</p>
|
|
<p>
|
|
dock_.add_item(timelinePanel->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="1518487921084" TEXT="Actions">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
Helper to build the menu and for 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ü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="1518487921084" TEXT="Multiplizität unklar">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
es sieht so aus, als wäre es "das" 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="1518487921084" TEXT="Neuerungen" VSHIFT="28">
|
|
<node CREATED="1477522271822" ID="ID_622217667" MODIFIED="1535647887424" 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"/>
|
|
<node CREATED="1477522330886" ID="ID_1920846276" MODIFIED="1518487921084" TEXT="ScrolledWindow"/>
|
|
<node CREATED="1477522340573" ID="ID_168076322" MODIFIED="1518487921084" TEXT="Grid">
|
|
<node CREATED="1477523590806" ID="ID_908611386" MODIFIED="1518487921084" TEXT="attach()"/>
|
|
<node CREATED="1477523593462" ID="ID_1461366621" MODIFIED="1518487921084" TEXT="attach_next_to()"/>
|
|
<node CREATED="1477523578208" ID="ID_738525852" MODIFIED="1518487921084" TEXT="add()"/>
|
|
</node>
|
|
<node CREATED="1477523550484" ID="ID_1492266905" MODIFIED="1518487921084" TEXT="Box">
|
|
<node CREATED="1477523556667" ID="ID_852178687" MODIFIED="1518487921084" TEXT="horizontal / vertikal"/>
|
|
<node CREATED="1477523561930" ID="ID_868197404" MODIFIED="1518487921084" TEXT="pack_start() "/>
|
|
<node CREATED="1477523573184" ID="ID_1063091132" MODIFIED="1518487921084" TEXT="pack_end()"/>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1534849790225" HGAP="46" ID="ID_326815949" MODIFIED="1535647586457" 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="1534850134831" TEXT="mögliche Schachtelungen">
|
|
<icon BUILTIN="full-1"/>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1534850106454" ID="ID_1465835366" MODIFIED="1534850118272" TEXT="nebeneinander (Grid)">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1534850113247" ID="ID_667518060" MODIFIED="1534850117542" TEXT="Tabs">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
</node>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1534850159866" ID="ID_1887039635" MODIFIED="1534850194806" TEXT="Teil-Layout programatisch erzeugen / rekonstruieren">
|
|
<icon BUILTIN="full-2"/>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1534850200900" ID="ID_754628121" MODIFIED="1534850227982" TEXT="programmatische Größenänderung">
|
|
<icon BUILTIN="full-3"/>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1534850230072" ID="ID_333353660" MODIFIED="1534850236690" TEXT="size-request">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1534850238426" ID="ID_1411766694" MODIFIED="1534850245740" TEXT="harte Größenvorgabe">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1534850256212" ID="ID_761478120" MODIFIED="1534850262109" TEXT="bei mehrfacher Schachtelung">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
</node>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1534850278149" ID="ID_348255325" MODIFIED="1534850289615" TEXT="Zusammenspiel mit Persistenz">
|
|
<icon BUILTIN="full-4"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1487464476801" ID="ID_1621360845" MODIFIED="1518487921084" TEXT="Umbau">
|
|
<node CREATED="1487464480872" ID="ID_830603607" MODIFIED="1518487921084" TEXT="bestehende Strukturen stillegen"/>
|
|
<node CREATED="1487464489143" ID="ID_1990719718" MODIFIED="1518487921084" TEXT="noch erhalten als Bezugspunkt"/>
|
|
<node CREATED="1487464495494" ID="ID_1238357229" MODIFIED="1518487921084" TEXT="daneben neue Controller-Backbone hochziehen"/>
|
|
<node CREATED="1487464505469" ID="ID_707273464" MODIFIED="1518487921084" TEXT="Umbau in neuen top-level">
|
|
<arrowlink COLOR="#bc4930" DESTINATION="ID_1868522177" ENDARROW="Default" ENDINCLINATION="221;282;" ID="Arrow_ID_600425644" STARTARROW="None" STARTINCLINATION="1925;196;"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1477522287316" ID="ID_1942021610" MODIFIED="1518487921084" TEXT="TimelinePanel"/>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1502390603674" ID="ID_1926586811" MODIFIED="1518487921084" TEXT="#1102 : build a message display box in the UI">
|
|
<linktarget COLOR="#8c8bae" DESTINATION="ID_1926586811" ENDARROW="Default" ENDINCLINATION="1456;47;" ID="Arrow_ID_1593124756" SOURCE="ID_125356908" STARTARROW="None" STARTINCLINATION="-839;779;"/>
|
|
<icon BUILTIN="hourglass"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1504833474521" HGAP="39" ID="ID_1439141983" MODIFIED="1518487921084" TEXT="Struktur" VSHIFT="10">
|
|
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
|
|
<node CREATED="1504833487359" ID="ID_1631525475" MODIFIED="1518487921084" TEXT="UI-Frame: Fenster"/>
|
|
<node CREATED="1504833498453" ID="ID_815439481" MODIFIED="1518487921084" TEXT="Perspektive"/>
|
|
<node CREATED="1504833508516" ID="ID_1973916831" MODIFIED="1518487921084" TEXT="einzelne Panel"/>
|
|
<node CREATED="1504833540720" ID="ID_1717772756" MODIFIED="1518487921084" 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="1518487921084" TEXT="Timeline"/>
|
|
<node CREATED="1504833569692" ID="ID_1708962269" MODIFIED="1518487921084" TEXT="Viewer"/>
|
|
<node CREATED="1504833572687" ID="ID_57378390" MODIFIED="1518487921084" TEXT="(Asset)Bin"/>
|
|
<node CREATED="1504833574246" ID="ID_897436866" MODIFIED="1518487921084" TEXT="Infobox">
|
|
<node CREATED="1534523010591" ID="ID_1405249171" MODIFIED="1534850514831" 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="1534850563490" 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="1534849056847" TEXT="fest vorgegebener Platz im UI"/>
|
|
<node CREATED="1534849057715" ID="ID_1467109522" MODIFIED="1534849183041" TEXT="stets sichbarer Status-Bereich">
|
|
<node CREATED="1534849188780" ID="ID_1937021840" MODIFIED="1534849195302" TEXT="sehr kompakt / effizient"/>
|
|
<node CREATED="1534849196166" ID="ID_1813708845" MODIFIED="1534849201354" TEXT="enthält minimale Navi"/>
|
|
</node>
|
|
<node CREATED="1534849205203" ID="ID_1997665939" MODIFIED="1534849349662" TEXT="darunter">
|
|
<node CREATED="1534849381630" ID="ID_1209297989" MODIFIED="1534849412617" TEXT="Paletten-Stacks">
|
|
<node CREATED="1534849546781" ID="ID_657722273" MODIFIED="1534849558486" TEXT="zweidimensionale Anordnung"/>
|
|
<node CREATED="1534849630348" ID="ID_506310851" MODIFIED="1534849644436" TEXT="Fokus in einer Spalte + Zelle"/>
|
|
<node CREATED="1534849646074" ID="ID_1030720361" MODIFIED="1534849660730" TEXT="der Rest wird reduziert (abridged)"/>
|
|
</node>
|
|
<node CREATED="1534849493068" ID="ID_1029182833" MODIFIED="1534849508564" TEXT="kann sich in Pupup vergrößern"/>
|
|
<node CREATED="1534849512730" ID="ID_1444658378" MODIFIED="1534849525530" TEXT="kollabiert bei Fokusverlust"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1534850609493" ID="ID_798164713" MODIFIED="1534850613759" TEXT="Belegung">
|
|
<node CREATED="1534850615125" ID="ID_1470557953" MODIFIED="1534850645677" TEXT="eindeutiger View-Name"/>
|
|
<node CREATED="1534850658265" ID="ID_60455430" MODIFIED="1534850685324" TEXT="Tab == Sub-View oder Fach"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1534523024189" ID="ID_215944418" MODIFIED="1534523027438" TEXT="Fehlerlog">
|
|
<node CREATED="1534523031493" ID="ID_1146002742" MODIFIED="1534523041375" TEXT="wird bei erstem Bedarf belegt"/>
|
|
<node CREATED="1534523042035" ID="ID_1292242862" MODIFIED="1534523047246" TEXT="klappt bei Fehlern auf"/>
|
|
</node>
|
|
<node CREATED="1534523020334" ID="ID_295859017" MODIFIED="1534523021658" TEXT="Status"/>
|
|
</node>
|
|
<node CREATED="1504833575700" ID="ID_1470115932" MODIFIED="1518487921084" TEXT="Playcontrol"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1488423383765" HGAP="339" ID="ID_1046643705" MODIFIED="1531417540499" TEXT="Verhalten" VSHIFT="23">
|
|
<node CREATED="1488423418968" ID="ID_1169811882" MODIFIED="1518487921084" TEXT="Lebenszyklus">
|
|
<node CREATED="1488423424111" ID="ID_1090980479" MODIFIED="1518487921084" TEXT="Start">
|
|
<node COLOR="#338800" CREATED="1531417429342" ID="ID_991918611" MODIFIED="1531417547125" TEXT="als Subsystem">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node CREATED="1531417434195" ID="ID_176564515" MODIFIED="1531419538503" TEXT="Strukturen hochfahren">
|
|
<linktarget COLOR="#fee998" DESTINATION="ID_176564515" ENDARROW="Default" ENDINCLINATION="-1211;-7367;" ID="Arrow_ID_157207334" SOURCE="ID_1850773836" STARTARROW="None" STARTINCLINATION="-579;123;"/>
|
|
<node CREATED="1531417551148" ID="ID_579526750" MODIFIED="1531417556199" TEXT="UI top-level"/>
|
|
<node CREATED="1531417577048" ID="ID_371378063" MODIFIED="1531417583067" TEXT="Rahmen bereitstellen"/>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1531419217662" ID="ID_745789650" MODIFIED="1531419680313" TEXT="#1147 establish UI start-up sequence">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
</node>
|
|
<node CREATED="1531417583847" ID="ID_1316715960" MODIFIED="1531417599201" TEXT="Dienste starten">
|
|
<node CREATED="1531417744657" ID="ID_350697541" MODIFIED="1531419714185" 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önnen Diff-Nachrichten ankommen"/>
|
|
<node CREATED="1531588927700" ID="ID_1330332232" MODIFIED="1531588932375" TEXT="dazu muß 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 CREATED="1531417463128" HGAP="24" ID="ID_1392317817" MODIFIED="1531583568734" TEXT="mit Inhalt beladen" VSHIFT="37">
|
|
<linktarget COLOR="#665692" DESTINATION="ID_1392317817" ENDARROW="Default" ENDINCLINATION="-2067;188;" ID="Arrow_ID_609042013" SOURCE="ID_1997153046" STARTARROW="Default" STARTINCLINATION="2055;91;"/>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1531417714894" ID="ID_527465217" MODIFIED="1531423663998" 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ü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="1533401017012" 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äufig: Prä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ü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äufige Dummy-Implementierung">
|
|
<icon BUILTIN="pencil"/>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1533401271538" ID="ID_613065826" MODIFIED="1533401302008" TEXT="erst mal nur eine Nachricht als UI-Notification">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1533402513829" ID="ID_1456159316" MODIFIED="1535892210892" TEXT="#1099 DemoGuiRoundtrip">
|
|
<arrowlink COLOR="#f0eca5" DESTINATION="ID_1007296291" ENDARROW="Default" ENDINCLINATION="881;2029;" ID="Arrow_ID_1736540527" STARTARROW="None" STARTINCLINATION="418;-44;"/>
|
|
<icon BUILTIN="flag-pink"/>
|
|
</node>
|
|
</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ä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 "irgendwo" 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 -> 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ären"/>
|
|
<node CREATED="1531423734880" ID="ID_1658395629" MODIFIED="1531423739643" TEXT="Verbindungen klären"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1532788529509" ID="ID_390131579" MODIFIED="1533388695623" TEXT="Trigger-Punkt">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1532788547560" ID="ID_1581791639" MODIFIED="1532788625456" TEXT="muß 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" ID="ID_254810710" MODIFIED="1533325370427" TEXT="Trigger-Technik klären">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1532788681197" HGAP="336" ID="ID_32192034" MODIFIED="1533608413832" 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="1532797125862">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
betrifft aber <b>nur Framework</b>-Funktionalität
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
also kein Initialisieren des Toolkit,
|
|
</p>
|
|
<p>
|
|
sondern Sachen wie verallgemeinerte "Files", 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(..) -> smart-Ptr"/>
|
|
</node>
|
|
<node CREATED="1532794485778" ID="ID_86543147" MODIFIED="1532794494804" TEXT="was fü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="1533310081074" 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&)">
|
|
<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&)">
|
|
<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="1533252777856" TEXT="signal_activate()">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
  //We cannot add and show the window until the GApplication::activate signal
|
|
</p>
|
|
<p>
|
|
  //has been emitted, or we will crash because the application has not been
|
|
</p>
|
|
<p>
|
|
  //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="1533253383340" 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 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&)">
|
|
<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="1533309368851" 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 "Activation"-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" FOLDED="true" ID="ID_229745628" MODIFIED="1533608416253" TEXT="was ist GApplication in C++?">
|
|
<node CREATED="1533309723431" ID="ID_47606560" MODIFIED="1533309729450" TEXT="Gio::Application"/>
|
|
</node>
|
|
<node CREATED="1533301567374" FOLDED="true" ID="ID_34255114" MODIFIED="1533608416254" 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> von Gio::Application
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
<node CREATED="1533302523445" FOLDED="true" ID="ID_1043113531" MODIFIED="1533608415959" 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üssen das selber bauen" VSHIFT="5">
|
|
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
|
|
<icon BUILTIN="yes"/>
|
|
</node>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1532788727680" HGAP="69" ID="ID_889790361" MODIFIED="1533608413837" TEXT="Gtk::Main auf aktuellem Stand" VSHIFT="12">
|
|
<linktarget COLOR="#70dcb9" DESTINATION="ID_889790361" ENDARROW="Default" ENDINCLINATION="1308;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ü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="1532789228378" TEXT="lt. Kommentar insges. ehr ein Legacy-Feature">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...für Signale, die nicht automatisch detached werden können
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1532789833473" ID="ID_1171567949" MODIFIED="1532789838020" TEXT="relevant für...">
|
|
<node CREATED="1532789860594" FOLDED="true" ID="ID_1189172516" MODIFIED="1533608416255" 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" FOLDED="true" ID="ID_752154716" MODIFIED="1533608416257" TEXT="gtk_key_snooper_install()">
|
|
<node CREATED="1532790015889" ID="ID_1497534470" MODIFIED="1532790040367" TEXT="@deprecated: 3.4">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
@deprecated: 3.4: Key snooping should not be done. Events should  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="1533608415960" 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="1532791436936">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
wohl <b>einzige verbleibende</b> 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üft">
|
|
<linktarget COLOR="#469fa6" DESTINATION="ID_1120787097" ENDARROW="Default" ENDINCLINATION="1826;-6782;" 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ür Gtk+-"Objekte" initialisieren"/>
|
|
<node CREATED="1532794561968" FOLDED="true" ID="ID_235365968" MODIFIED="1533608416258" 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="1533310305665" TEXT="sonst nichts...">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...und das ist explizit so gewünscht
|
|
</p>
|
|
<ul>
|
|
<li>
|
|
keine Kommandozeilen-Behandlung
|
|
</li>
|
|
<li>
|
|
keine "Registrierung" 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 BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1533218052308" ID="ID_1734927969" MODIFIED="1533218091117" 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="1533608413842" 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="1533608413843" 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="1533608413848" 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" 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ß 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örpert "das Globale""/>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1533221145295" ID="ID_45639892" MODIFIED="1533608413850" 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ü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="1533221738765" 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ü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="1533310610000" 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="1533608413852" TEXT="Idee">
|
|
<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ß die Event-Loop schon läuft"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1533221770859" ID="ID_1962039642" MODIFIED="1533608413857" TEXT="dafü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ünden"/>
|
|
<node CREATED="1533221818572" ID="ID_806537689" MODIFIED="1533221826270" TEXT="paß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="1533311415466" TEXT="Fenster-aktivieren passiert vor der Loop">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...das ist für mich eine neue Einsicht.
|
|
</p>
|
|
<p>
|
|
Die Anzeige eines Fensters und die Event-Verarbeitung sind zunächst einmal unabhä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ü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" FOLDED="true" ID="ID_946023766" MODIFIED="1533608416260">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
aber <i>wir</i> brauchen ein <b>laufendes</b> UI
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<node CREATED="1533311682171" ID="ID_1084601430" MODIFIED="1533311693093" TEXT="und zwar für die Antworten aus Proc-Layer"/>
|
|
<node CREATED="1533311693705" ID="ID_152811842" MODIFIED="1533311698877" TEXT="Facade muß 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önnte zum Race fü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ösung">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node CREATED="1533314040716" ID="ID_314344665" MODIFIED="1533314158876" TEXT="fügt eine minimale Karenz-Zeit ein"/>
|
|
<node CREATED="1533314084613" ID="ID_1361630751" MODIFIED="1533314158876" TEXT="gut für die System-Stabilität">
|
|
<icon BUILTIN="yes"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1533385296078" ID="ID_911350305" MODIFIED="1533388643836" TEXT="einfache direkt Lö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ü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ß 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="1533386007106" TEXT="minimale Verzö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ür den viel Code geladen werden mußte.
|
|
</p>
|
|
<p>
|
|
Außerdem hatten dann die anderen Subsysteme schon Zeit, ihre Grunddatenstrukturen aufzubauen;
|
|
</p>
|
|
<p>
|
|
im Besonderen spekulieren wir darauf, daß 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ä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="1531423792205" TEXT="Inhalts-Empfang wieder deaktivieren">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1531423892371" ID="ID_917754325" MODIFIED="1531423899603" TEXT="Dummy-Implementierung">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1533403103076" ID="ID_294556843" MODIFIED="1533403127590" 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="flag-yellow"/>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1533403146566" ID="ID_1948086597" MODIFIED="1533403162301" TEXT="Diff-Empfang im InteractionDirector implementieren">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1533403169195" ID="ID_1916047269" MODIFIED="1533403177923" TEXT="erst mal nur Platzhalter einfügen">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1533403179257" ID="ID_1147163352" MODIFIED="1533403198500" TEXT="noch nicht via ViewLocator platzieren">
|
|
<icon BUILTIN="yes"/>
|
|
</node>
|
|
<node CREATED="1533403199535" ID="ID_1545782665" MODIFIED="1533403208830" TEXT="sonst wird das nie was...">
|
|
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
|
|
<icon BUILTIN="smily_bad"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1488423428942" ID="ID_1847992077" MODIFIED="1518487921084" TEXT="Stop"/>
|
|
</node>
|
|
<node CREATED="1488423436478" ID="ID_1037695008" MODIFIED="1518487921085" TEXT="Einstieg">
|
|
<node CREATED="1488423440629" ID="ID_1295897045" MODIFIED="1518487921085" TEXT="in Timeline">
|
|
<linktarget COLOR="#8d8ba5" DESTINATION="ID_1295897045" ENDARROW="Default" ENDINCLINATION="296;-456;" ID="Arrow_ID_150397161" SOURCE="ID_839909208" STARTARROW="None" STARTINCLINATION="1056;0;"/>
|
|
<node CREATED="1488423569203" ID="ID_1753722831" MODIFIED="1518487921085" TEXT="TimelinePane anzeigen">
|
|
<linktarget COLOR="#a1543e" DESTINATION="ID_1753722831" ENDARROW="Default" ENDINCLINATION="1150;-267;" ID="Arrow_ID_912757548" SOURCE="ID_292894978" STARTARROW="None" STARTINCLINATION="496;-77;"/>
|
|
</node>
|
|
<node CREATED="1488423579514" ID="ID_1433755621" MODIFIED="1518487921085" TEXT="TimelineWidget erzeugen"/>
|
|
<node CREATED="1488470479857" ID="ID_978142233" MODIFIED="1518487921085" TEXT="geschieht...">
|
|
<node CREATED="1488470484168" ID="ID_1028709294" MODIFIED="1518487921085" TEXT="explizit auf Anforderung (Window-Menü)"/>
|
|
<node CREATED="1488470499710" ID="ID_1839340183" MODIFIED="1518487921085" TEXT="automatisch durch Laden der Session"/>
|
|
</node>
|
|
<node CREATED="1488470528522" HGAP="38" ID="ID_141494228" MODIFIED="1518487921085" TEXT="Ablauf" VSHIFT="11">
|
|
<node CREATED="1488470538209" ID="ID_1192459841" MODIFIED="1518487921085" TEXT="Controller"/>
|
|
<node CREATED="1488470541432" ID="ID_950213497" MODIFIED="1518487921085" TEXT="holt Model-Repräsentation"/>
|
|
<node CREATED="1488470548848" ID="ID_1686896502" MODIFIED="1518487921085" TEXT="weiß den Ankerpukt / Zielcontainer"/>
|
|
<node CREATED="1488470574388" ID="ID_1331046626" MODIFIED="1518487921085" TEXT="erstellt in diesem ein neues Widget"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1488423443916" ID="ID_1213960259" MODIFIED="1518487921085" TEXT="in Assets"/>
|
|
<node CREATED="1488423446860" ID="ID_1515465474" MODIFIED="1518487921085" TEXT="Viewer"/>
|
|
<node CREATED="1488423478536" ID="ID_1039556823" MODIFIED="1518487921085" TEXT="Projekt"/>
|
|
<node CREATED="1488423482303" ID="ID_1337577946" MODIFIED="1518487921085" TEXT="Optionen"/>
|
|
</node>
|
|
<node CREATED="1488423493014" ID="ID_64529473" MODIFIED="1518487921085" TEXT="Navigation"/>
|
|
<node CREATED="1488423514355" ID="ID_917891687" MODIFIED="1518487921085" TEXT="Steuerelemente"/>
|
|
</node>
|
|
<node CREATED="1448070434915" HGAP="64" ID="ID_257833497" MODIFIED="1518487921085" 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;-262;" ID="Arrow_ID_539627804" STARTARROW="Default" STARTINCLINATION="-2;35;"/>
|
|
<node CREATED="1523019258000" HGAP="-51" ID="ID_974158229" MODIFIED="1531417534794" TEXT="Struktur-Schemata" VSHIFT="-16">
|
|
<linktarget COLOR="#4f5d91" DESTINATION="ID_974158229" ENDARROW="Default" ENDINCLINATION="383;-2505;" ID="Arrow_ID_1832380552" SOURCE="ID_48107354" STARTARROW="None" STARTINCLINATION="-597;127;"/>
|
|
<font NAME="SansSerif" SIZE="14"/>
|
|
<node CREATED="1523019333461" ID="ID_631113825" MODIFIED="1523019344239" TEXT="UI-Element - Hierarchie">
|
|
<node CREATED="1523019501198" ID="ID_531041967" MODIFIED="1523019517194" TEXT="Systematisches UI-Modell">
|
|
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
|
|
<icon BUILTIN="info"/>
|
|
</node>
|
|
<node CREATED="1523021670034" ID="ID_1102842396" MODIFIED="1523021676897" TEXT="Einstiegspunkte">
|
|
<icon BUILTIN="idea"/>
|
|
<node CREATED="1523021679960" ID="ID_1386792927" MODIFIED="1523021704154">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
(GlobalCtx)-><b>InteractionDirector</b> (=Model Root)
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1523019349923" ID="ID_353542665" MODIFIED="1523019373947" TEXT="UI-Koordinaten (UICoord)">
|
|
<node CREATED="1523019476817" ID="ID_1756924881" MODIFIED="1523019520204" TEXT="abstrahierte UI-Topologie">
|
|
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
|
|
<icon BUILTIN="info"/>
|
|
</node>
|
|
<node CREATED="1523021751558" ID="ID_816148300" MODIFIED="1523021811070" TEXT="Einstiegspunkte">
|
|
<icon BUILTIN="idea"/>
|
|
<node CREATED="1523020094460" ID="ID_950968515" MODIFIED="1523021776371">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
(GlobalCtx)->InteractionDirector-><b>Navigator</b>
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<node CREATED="1523021779698" ID="ID_1153977477" MODIFIED="1523021791197" TEXT="erforschen der aktuellen Topologie"/>
|
|
<node CREATED="1523021791784" ID="ID_1683105699" MODIFIED="1523021800219" TEXT="Navigation von einem Punkt weg"/>
|
|
</node>
|
|
<node CREATED="1523019770144" ID="ID_385008471" MODIFIED="1523020297176">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
(GlobalCtx)->WindowLocator-><b>UIComponentAccessor</b>
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<node CREATED="1523021816637" ID="ID_217124542" MODIFIED="1523021829911" TEXT="Element zu gegebenen Koordinaten"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1523019393893" ID="ID_1642953007" MODIFIED="1523019399464" TEXT="Component View">
|
|
<node CREATED="1523019457868" ID="ID_1319307429" MODIFIED="1523019522833" TEXT="Menge relevanter Entitäten">
|
|
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
|
|
<icon BUILTIN="info"/>
|
|
<node CREATED="1523021612818" ID="ID_366179512" MODIFIED="1523021633434" TEXT="Per Konvention festgelegt">
|
|
<node CREATED="1523022525819" ID="ID_1844877136" MODIFIED="1523022775958" TEXT="ViewSpec-DSL">
|
|
<arrowlink COLOR="#6a8499" DESTINATION="ID_1442345755" ENDARROW="Default" ENDINCLINATION="-971;84;" ID="Arrow_ID_1191206769" STARTARROW="None" STARTINCLINATION="502;0;"/>
|
|
<icon BUILTIN="forward"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1523021634614" ID="ID_1226976079" MODIFIED="1523021641914" TEXT="flacher Namensraum"/>
|
|
<node CREATED="1523021642573" ID="ID_488343933" MODIFIED="1523021654544" TEXT="komplett von ihrem Ort abstrahiert"/>
|
|
</node>
|
|
<node CREATED="1523020082453" ID="ID_1678299024" MODIFIED="1523020148531" TEXT="Einstiegspunkte">
|
|
<icon BUILTIN="idea"/>
|
|
<node CREATED="1523020094460" ID="ID_970478590" MODIFIED="1523020111929">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
(GlobalCtx)->InteractionDirector-><b>ViewLocator</b>
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<node CREATED="1523021575831" ID="ID_952406415" MODIFIED="1523021592656" TEXT="findet oder belegt"/>
|
|
<node CREATED="1523021593460" ID="ID_565564905" MODIFIED="1523021606966" TEXT="Prinzip: ein Stück vom Typ XYZ"/>
|
|
</node>
|
|
<node CREATED="1523019770144" ID="ID_435980488" MODIFIED="1523023211290">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
(GlobalCtx)->WindowLocator-><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="1523020315553" TEXT="Bindeglied">
|
|
<node CREATED="1523020317117" ID="ID_1026544092" MODIFIED="1523020327967" TEXT="UI-Koordinaten"/>
|
|
<node CREATED="1523020328651" ID="ID_1384216871" MODIFIED="1523020334087" TEXT="Component Views"/>
|
|
<node CREATED="1523020334770" ID="ID_446983517" MODIFIED="1523020339014" TEXT="konkrete Widgets"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1523019409939" ID="ID_13197399" MODIFIED="1523019426500" TEXT="Fenster - Panel - Widget">
|
|
<node CREATED="1523019435095" ID="ID_1087922610" MODIFIED="1525124215035" TEXT="die natürliche Ordnung">
|
|
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
|
|
<icon BUILTIN="info"/>
|
|
<node CREATED="1523019528770" ID="ID_880857626" MODIFIED="1523019581654" TEXT="der real existierende konkrete Inhalt des UI"/>
|
|
<node CREATED="1523019583242" ID="ID_1200584395" MODIFIED="1523019592269" TEXT="ein Wildwuchs an nativen Komponenten"/>
|
|
<node CREATED="1523019593833" ID="ID_770462134" MODIFIED="1523019612266" TEXT="ausschließlich an das UI-Toolkit gebunden"/>
|
|
<node CREATED="1523019635739" ID="ID_883974404" MODIFIED="1523019732087" TEXT="Einzelfall-Wissen vorausgesetzt">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
man muß die Implementierungs-Details <i>jeder einzelnen Komponente</i> kennen,
|
|
</p>
|
|
<p>
|
|
um damit überhaupt etwas anfangen zu kö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="1523019759668" TEXT="Einstiegspunkte">
|
|
<icon BUILTIN="idea"/>
|
|
<node CREATED="1523019770144" ID="ID_253563802" MODIFIED="1525124215035">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
(GlobalCtx)-><b>WindowLocator</b>
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<node CREATED="1523019793861" ID="ID_656158432" MODIFIED="1523019804904" TEXT="für die top-level WorkspaceWindows"/>
|
|
<node CREATED="1523019808196" ID="ID_674258018" MODIFIED="1523019813886" TEXT="kann diese erzeugen und zerstören"/>
|
|
</node>
|
|
<node CREATED="1523019770144" ID="ID_1782262126" MODIFIED="1525124215036">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
(GlobalCtx)->WindowLocator-><b>PanelLocator</b>
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<node CREATED="1523019918268" ID="ID_830201534" MODIFIED="1523019927679" TEXT="Zugang zu einzelnen docking-Panels"/>
|
|
<node CREATED="1523019928387" ID="ID_928262089" MODIFIED="1523019940676" TEXT="jedes Fenster hat eignen PanelManager">
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1523019972924" ID="ID_1402741681" MODIFIED="1523019977168" TEXT="Grundbausteine">
|
|
<node CREATED="1523019978236" ID="ID_103533434" MODIFIED="1523019981695" TEXT="GTK-Container"/>
|
|
<node CREATED="1523019982331" ID="ID_533152750" MODIFIED="1523019983943" TEXT="Widget"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1448070545132" HGAP="31" ID="ID_1410368513" MODIFIED="1518487921085" TEXT="Element" VSHIFT="-7">
|
|
<font NAME="SansSerif" SIZE="14"/>
|
|
<icon BUILTIN="pencil"/>
|
|
<node CREATED="1448070580927" ID="ID_467382299" MODIFIED="1518487921085" TEXT="Ausprägungen" VSHIFT="18">
|
|
<node CREATED="1448070554963" ID="ID_579919554" MODIFIED="1518487921085" TEXT="Widget"/>
|
|
<node CREATED="1448070559466" ID="ID_182430638" MODIFIED="1518487921085" TEXT="Controller"/>
|
|
</node>
|
|
<node CREATED="1448070583679" HGAP="30" ID="ID_1248152908" MODIFIED="1518487921085" TEXT="Protokoll">
|
|
<node CREATED="1448078263344" FOLDED="true" ID="ID_1136748666" MODIFIED="1535638754133" 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="1518487921085" TEXT="zeugen">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
heißt: Element registriert sich am UI-Bus
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1448078473068" ID="ID_510866826" MODIFIED="1518487921085" TEXT="zerstören">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
heiß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="1518487921085" TEXT="Subjekt einer Aktion">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...ist <i>immer</i> 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ü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="1518487921085" TEXT="collapse / expand">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
dafür genügt der normale Reset
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="button_cancel"/>
|
|
</node>
|
|
<node CREATED="1448078748448" ID="ID_1000763850" MODIFIED="1518487921085" TEXT="Nachrichten löschen">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
mark "clearMsg"
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1448078778916" ID="ID_1657108949" MODIFIED="1518487921085" TEXT="Fehler löschen">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
mark "clearErr"
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1448078798369" ID="ID_819750758" MODIFIED="1518487921085" TEXT="komplett-Reset">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
mark "reset"
|
|
</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> 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ören"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1448658633478" HGAP="99" ID="ID_314439240" MODIFIED="1518487921085" TEXT="Design" VSHIFT="13">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1448658692023" ID="ID_339186676" MODIFIED="1518487921085">
|
|
<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="1518487921085" 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äumliche Navigation"/>
|
|
<node CREATED="1448659824337" ID="ID_1734858009" MODIFIED="1518487921086" TEXT="Markierungen"/>
|
|
</node>
|
|
<node CREATED="1455236472002" FOLDED="true" HGAP="49" ID="ID_952544600" MODIFIED="1535638928899" 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önnte Eigenschaften konfigurieren" VSHIFT="2"/>
|
|
<node CREATED="1455236512373" ID="ID_211355731" MODIFIED="1518487921086" TEXT="jede Eigenschaft hä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 »state mark«"/>
|
|
<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önnte interessant sein für Diff"/>
|
|
<node CREATED="1455236788424" ID="ID_1507269502" MODIFIED="1518487921086" 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ür die UI-Programmierung muß 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äter">
|
|
<icon BUILTIN="hourglass"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</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ächst einfach auf/zu"/>
|
|
<node CREATED="1451177459667" ID="ID_1151970636" MODIFIED="1518487921086" TEXT="wird möglicherweise eine Enum">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
gemeint, eine ENUM von verschiedenen Graden der Aufgeklappt-heit
|
|
</p>
|
|
<p>
|
|
Dann mußte das allerdigns jeweils fü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="1518487921086" TEXT="ruft einen konkreten hook doExpand() auf">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
und der muß vom konkreten Widget implementiert werden
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1451177573108" ID="ID_1154342108" MODIFIED="1518487921086" TEXT="wenn dieser true zurü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> 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=""bringe dies Element in Sicht"">
|
|
<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" ID="ID_316446199" MODIFIED="1535646941006" 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ö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="1535725407546">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
<i>nicht</i> bool-Testbar
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
ganz bewußt verzichten wir darauf,
|
|
</p>
|
|
<p>
|
|
festzustellen, ob ein Kind gegenwärtig zugä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ösen,
|
|
</p>
|
|
<p>
|
|
wenn es nicht sichtbar ist. Denn Sichtbarkeit gehö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="1535723883504" 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="1535654995472" TEXT="könnte für den ViewLocator nützlich sein">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...denn dort fehlt noch die konkrete Implementierung,
|
|
</p>
|
|
<p>
|
|
welche die Monaden-Baum-Repräsentation schließlich
|
|
</p>
|
|
<p>
|
|
auf konkrete Widgets abbildet. Das ist viel Arbeit, und es ließe sich vereinfachen,
|
|
</p>
|
|
<p>
|
|
wenn für gewisse Knoten erkannt werden kann, daß sie einen NavScope darstellen;
|
|
</p>
|
|
<p>
|
|
denn dann gäbe es eine Implementierung "von der Stange"
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1535723854290" ID="ID_333598922" MODIFIED="1535723874600" TEXT="fä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="1535725225038" 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> 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" FOLDED="true" ID="ID_340217269" MODIFIED="1535725176627" 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<function>"/>
|
|
<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" FOLDED="true" ID="ID_1440345421" MODIFIED="1535725153382" TEXT="Parent-Container fü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ä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ält Storage fü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ähigkeit Expand/Reveal"/>
|
|
<node CREATED="1535725011710" ID="ID_206250793" MODIFIED="1535725020409" TEXT="das Kind kennt seinen Parent nicht"/>
|
|
</node>
|
|
<node CREATED="1535724570738" FOLDED="true" ID="ID_1785171345" MODIFIED="1535725155045" 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ö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 überschreibt auch die default-NOP-Implementierung"/>
|
|
<node CREATED="1535725100803" ID="ID_1869635653" MODIFIED="1535725113085" TEXT="man könnte auf Typ-Ebene Capabilities prüfen"/>
|
|
<node CREATED="1535725117080" ID="ID_417282292" MODIFIED="1535725140662" TEXT="diese Lösung erscheit cool, aber im Moment übertrieben">
|
|
<icon BUILTIN="smiley-oh"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1535722960729" FOLDED="true" ID="ID_303674498" MODIFIED="1535725812302" TEXT="Abwä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ösung">
|
|
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
|
|
<icon BUILTIN="yes"/>
|
|
</node>
|
|
<node CREATED="1535723641150" ID="ID_945428972" MODIFIED="1535723664351" TEXT="die beiden Fä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ä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ß">
|
|
<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ü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üglich zu zerstören">
|
|
<icon BUILTIN="yes"/>
|
|
</node>
|
|
</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ß emittieren">
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
<node CREATED="1455421336808" ID="ID_520325590" MODIFIED="1518487921086" TEXT="wenn eine Änderung relevant für Persistenz"/>
|
|
<node CREATED="1455421392032" ID="ID_969248847" MODIFIED="1518487921086" TEXT="die doXXX() - Funktion gibt true zurü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 "property" == ID-sym der state mark - Nachricht"/>
|
|
</node>
|
|
<node CREATED="1455421490643" ID="ID_256291546" MODIFIED="1518487921086" TEXT="Lösch / Reset-Nachrichten">
|
|
<icon BUILTIN="idea"/>
|
|
<node CREATED="1455421507505" ID="ID_1382752422" MODIFIED="1518487921086" TEXT="sind auszusenden, wenn tatsächlich gelö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ö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="1518487921086">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
nach Broadcast von "reset"
|
|
</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 "reset"-Nachricht mit;
|
|
</p>
|
|
<p>
|
|
sofern sie tatsächlich abweichenden Zustand haben, sollten sie sich resetten
|
|
</p>
|
|
<p>
|
|
und eine state mark "reset" zurückschicken...
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1455422030995" FOLDED="true" HGAP="35" ID="ID_1455265273" MODIFIED="1533684837443" TEXT="mutation" VSHIFT="7">
|
|
<icon BUILTIN="button_ok"/>
|
|
<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ü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ü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 "auf sich selbst"">
|
|
<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" HGAP="211" ID="ID_1897861223" MODIFIED="1533684811285" TEXT="Konsequenzen" VSHIFT="23">
|
|
<node CREATED="1455668923175" ID="ID_1183550957" MODIFIED="1472219338326" 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ßt, ich muß konkret ausarbeiten,
|
|
</p>
|
|
<p>
|
|
<i>wie</i> man einen Diff gegen eine opaque Implementierungs-Datenstruktur aufspielt.
|
|
</p>
|
|
<p>
|
|
Und ich muß das in einem Test zumindest emulieren können!
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="yes"/>
|
|
</node>
|
|
<node CREATED="1455668935142" FOLDED="true" ID="ID_1274632216" MODIFIED="1533684781468">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
muß DiffApplicationStrategy
|
|
</p>
|
|
<p>
|
|
<i>noch einmal</i> implementieren
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
das mag ü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ß 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ä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ß 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ühlsmäß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ß 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 überall sonst eine Bürde"/>
|
|
</node>
|
|
<node CREATED="1472829783619" HGAP="28" ID="ID_1015946734" MODIFIED="1472829805342" TEXT="am Ende ist das die schönere Implementierung geworden" VSHIFT="5">
|
|
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
|
|
<icon BUILTIN="ksmiletris"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1455669004941" FOLDED="true" ID="ID_853385575" MODIFIED="1533684782805">
|
|
<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ß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ür skip"/>
|
|
<node CREATED="1455669326400" ID="ID_646237490" MODIFIED="1455669330996" TEXT="für ins / del"/>
|
|
<node CREATED="1455669331448" ID="ID_1852578403" MODIFIED="1455669333036" TEXT="für find"/>
|
|
</node>
|
|
</node>
|
|
<node COLOR="#ad014c" CREATED="1455669200945" HGAP="85" ID="ID_880765624" MODIFIED="1515978217415" 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" FOLDED="true" ID="ID_1892865523" MODIFIED="1533684770264" STYLE="fork" TEXT="Polymorphie vs. Funktoren">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1458408878574" ID="ID_1190262572" MODIFIED="1512926191896" TEXT="Abwä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ß explizit instantiieren und verbinden">
|
|
<icon BUILTIN="smily_bad"/>
|
|
</node>
|
|
<node CREATED="1458409202946" ID="ID_162172192" MODIFIED="1458409828754" TEXT="für jede Anwendungssituation eine neue Binder-Klasse"/>
|
|
<node CREATED="1458409270353" ID="ID_114384372" MODIFIED="1458409828754" TEXT="plus fü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ü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ür jede Anwendungssituation eine neue Mutator-Implementierung"/>
|
|
<node CREATED="1458409554491" ID="ID_1516498705" MODIFIED="1458409828754" TEXT="aber auch Builder-Zwischenstufen mü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ü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äsentation der "aktuellen Position"">
|
|
<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ü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ü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ä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üche">
|
|
<node CREATED="1455834227528" ID="ID_1606302361" MODIFIED="1455834231179" TEXT="Feld hinzufügen"/>
|
|
<node CREATED="1455834231647" ID="ID_1275813367" MODIFIED="1455834236914" TEXT="Feld lö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="Ä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ä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" FOLDED="true" ID="ID_1996966445" MODIFIED="1533684757737">
|
|
<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öschen + Neueinfügen"/>
|
|
<node CREATED="1455842682524" ID="ID_1597781391" MODIFIED="1455842710444" TEXT="unnötiger Aufwand (Allokation)"/>
|
|
<node CREATED="1455842711008" ID="ID_1470911011" MODIFIED="1455842721083" TEXT="führt zu "Flackern" im UI"/>
|
|
<node CREATED="1455843001833" HGAP="46" ID="ID_617738816" MODIFIED="1512926191905" TEXT="Lö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ü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ä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" FOLDED="true" ID="ID_1210482014" MODIFIED="1533608416261">
|
|
<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="1533608415963" TEXT="out-of-order">
|
|
<icon BUILTIN="yes"/>
|
|
<node CREATED="1455895687377" ID="ID_742953981" MODIFIED="1455895691763" TEXT="wird unterstü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öglicht Postfix-Order"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1455913713933" FOLDED="true" ID="ID_155948375" MODIFIED="1533684828048" 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="»Zwei-Listen-Modell«">
|
|
<node CREATED="1455926709229" ID="ID_272389445" MODIFIED="1455926710513" TEXT="für generischen Diff"/>
|
|
<node CREATED="1455926710981" ID="ID_1449723679" MODIFIED="1455926717032" TEXT="mö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äre mö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ä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 -> Visitor"/>
|
|
</node>
|
|
<node CREATED="1455913759727" HGAP="43" ID="ID_1318158783" MODIFIED="1512926191911" TEXT="Modell">
|
|
<node CREATED="1455913778429" ID="ID_884750408" MODIFIED="1512926191911" TEXT="sub-Collections">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
eindeutig ü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ü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="1512926191912" TEXT="transparenter Filter">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
schlechter....
|
|
</p>
|
|
<ul>
|
|
<li>
|
|
sammelt viel technische Komplexität auf top-level
|
|
</li>
|
|
<li>
|
|
wir müssen eine meta-Repräsentation aufbauen
|
|
</li>
|
|
<li>
|
|
wir mü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üssen die intern reprä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" FOLDED="true" HGAP="148" ID="ID_153254427" MODIFIED="1533684744810" STYLE="fork" TEXT="»generic tree diff«" 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 -> end"/>
|
|
</node>
|
|
<node CREATED="1455927603566" ID="ID_604132662" MODIFIED="1512926191920" TEXT="_END_">
|
|
<node CREATED="1455927607621" ID="ID_948240245" MODIFIED="1455927610465" TEXT="all -> 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 "current" 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="1472219338431" 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="1472219338440" 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> 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="1472219338456" 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> 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="1472219338462">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
<font color="#e72d0e">warning:</font> 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> 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 'assignElm'"/>
|
|
</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üft, ob alles eingelöst wurde"/>
|
|
<node CREATED="1464113740005" ID="ID_1649881726" MODIFIED="1464113748425" TEXT="emöglicht Aufräum-Arbeiten"/>
|
|
<node CREATED="1464113754412" ID="ID_1095488369" MODIFIED="1472219338490" TEXT="kann NOP implementiert werden">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...in Fällen, in denen der konkrete onion-layer
|
|
</p>
|
|
<p>
|
|
ü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="1472219338544" 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> must not</i> 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="1533684736220" 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="1455931124521" TEXT="Mutator enthält Closures">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
Mutator enthält die Bindung auf die konkreten Daten
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1455930997303" ID="ID_1710972681" MODIFIED="1455931003962" TEXT="kann erhebliche Größe haben"/>
|
|
<node CREATED="1455931025595" ID="ID_1695885971" MODIFIED="1455931100164" TEXT="ist a priori nicht bekannt">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
stellt sich u.U erst während der Verarbeitung heraus:
|
|
</p>
|
|
<p>
|
|
bei "offenen Datenstrukturen" 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ösungsansä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: Aufrufprinzip
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<node CREATED="1456011595024" ID="ID_1268079925" MODIFIED="1456011598819" TEXT="muß konsumieren"/>
|
|
<node CREATED="1456011599455" ID="ID_862262812" MODIFIED="1456011634435">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
Verb muß 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ß 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 Ü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="1456012704695" TEXT="Größ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önnen wir rekursiv abfragen, wie groß alle möglichen Kind-Mutatoren werden können
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#d8bba4" CREATED="1456011994442" FOLDED="true" HGAP="68" ID="ID_343687995" MODIFIED="1533684723794" 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ä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önnte Puffer selber allozieren"/>
|
|
</node>
|
|
<node CREATED="1456013068179" ID="ID_774826163" MODIFIED="1512926191945" TEXT="Rec<GenNode>">
|
|
<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ß 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 überhaupt nicht helfen"/>
|
|
<node CREATED="1456013231117" ID="ID_1899116139" MODIFIED="1456013238279" TEXT="Puffer muß 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ützt keine Umordnung"/>
|
|
<node CREATED="1456184736827" ID="ID_171431775" MODIFIED="1456184746398" TEXT="unterstützt kein Hinzufügen"/>
|
|
<node CREATED="1456184746946" ID="ID_1768153345" MODIFIED="1456184756780" TEXT="Lö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 -> subMutator"/>
|
|
<node CREATED="1456184833446" ID="ID_1632860381" MODIFIED="1456184864038" TEXT="subMutator für subCollection"/>
|
|
<node CREATED="1461881226351" ID="ID_211513452" MODIFIED="1461881233506" TEXT="subMutator == "onon layer""/>
|
|
<node CREATED="1456184892870" ID="ID_1216247694" MODIFIED="1456184905433" TEXT="Rec<GenNode> -> zwei subCollections"/>
|
|
</node>
|
|
<node CREATED="1456186634006" ID="ID_310265994" MODIFIED="1512926191948" TEXT="Profil des Mutators">
|
|
<node CREATED="1456186654411" ID="ID_1341247857" MODIFIED="1456186678780" 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öß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ßlich an die Diff-Anwendung gekoppelt"/>
|
|
<node CREATED="1456186915112" ID="ID_1560470636" MODIFIED="1512926191948" TEXT="Größ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" FOLDED="true" ID="ID_954788495" MODIFIED="1533608416263" 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="1456416573868" TEXT="+Storage für den Key">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
....denn der liegt (mind) einmal vor,
|
|
</p>
|
|
<p>
|
|
eingebettet in ein Selektor-Prä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="1456424410221" TEXT="zu Fuß 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ünftigste</i> Weg.
|
|
</p>
|
|
<p>
|
|
|
|
</p>
|
|
<p>
|
|
Leider scheidet das aber für uns hier genau aus,
|
|
</p>
|
|
<p>
|
|
denn das gesamte Projekt entstand, aufgrund der inhärenten Limitierungen
|
|
</p>
|
|
<p>
|
|
der "vernünftigen" (=pragmatischen) Lösung.
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1456424257381" ID="ID_740973686" MODIFIED="1456424577215" TEXT="introspektive Datenstruktur">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
dieser Ansatz löst tatsächlich das Problem,
|
|
</p>
|
|
<p>
|
|
aber zu dem Preis, daß er die Strukturen von innen her zersetzt.
|
|
</p>
|
|
<p>
|
|
Auf lange Sicht wird das System wuchern wie ein Krebsgeschwühr,
|
|
</p>
|
|
<p>
|
|
und man kann das nur mit Disziplin eindämmen, was <i>realistisch gesprochen</i> meint,
|
|
</p>
|
|
<p>
|
|
daß 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="1533608413866" TEXT="einseitige Fernsteuerung">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
das ist die schlankeste Lösung, die ästhetisch befriedigt.
|
|
</p>
|
|
<p>
|
|
Sie hat aber das Problem, daß dadurch die Kollaboration im Kern ausgelöscht wird.
|
|
</p>
|
|
<p>
|
|
Wir haben eine Seite, die absolute Macht hat, und einen "Partner", der tatsächlich nur ferngesteuert ist.
|
|
</p>
|
|
<p>
|
|
Wir müssen dafür auf die Subsidiarität verzichten, und damit auf die Möglichkeit zur Entkoppelung.
|
|
</p>
|
|
<p>
|
|
Dazu kommt, daß die notwendige Fern-Wirkung stets eine zusätzliche Last bedeutet.
|
|
</p>
|
|
<p>
|
|
Denn wir müssen auf Umstä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ä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" FOLDED="true" HGAP="23" ID="ID_1066542027" MODIFIED="1533608416265" 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="1533608415965" TEXT="Problem: Zusatz-Kosten">
|
|
<node CREATED="1456424675173" ID="ID_1585536570" MODIFIED="1456437520768" TEXT="...für das "+""/>
|
|
<node CREATED="1456424695123" ID="ID_331589423" MODIFIED="1456437520769" TEXT="also die Bindung"/>
|
|
<node CREATED="1456424722039" FOLDED="true" ID="ID_1926017913" MODIFIED="1533608415647" 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ü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="1533608415967" TEXT="notwendig" VSHIFT="-1">
|
|
<node CREATED="1456426041626" FOLDED="true" ID="ID_101262346" MODIFIED="1533608415649" 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üpfungs-Punkt in den real-Daten überhaupt zu finden,
|
|
</p>
|
|
<p>
|
|
mü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ß es die relevanten real-Daten duplizieren,
|
|
</p>
|
|
<p>
|
|
um sie in einem abstrahierten Kontext zugä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ätzlich zur genannten Duplikation muß
|
|
</p>
|
|
<p>
|
|
die Abblidung der Strukturen aufeinander
|
|
</p>
|
|
<p>
|
|
an irgend einer Stelle reprä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ösen.
|
|
</p>
|
|
<p>
|
|
Allerdings gibt es dafür überhaupt nur zwei mögliche Richtungen.
|
|
</p>
|
|
<ul>
|
|
<li>
|
|
man löst die Parallel-Strukturen auf
|
|
</li>
|
|
<li>
|
|
man ersetzt das DOM durch reine Bindungs-Strukturen
|
|
</li>
|
|
</ul>
|
|
<p>
|
|
Beide Ansä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ßt, dort nur noch reine<br />Binde-Strukturen speichert, dann endet man bei einer Form von Introspektion. Entweder,
|
|
</p>
|
|
<p>
|
|
das Rü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ä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="1533608415970" TEXT="Maßstab" VSHIFT="17">
|
|
<node CREATED="1456429002332" FOLDED="true" ID="ID_294696563" MODIFIED="1533608415651" 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="1533608415654" 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ärenten Form suchen"/>
|
|
</node>
|
|
<node CREATED="1456429053206" ID="ID_643637016" MODIFIED="1456437520774" TEXT="wenig Überlapp"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1456423477045" HGAP="146" ID="ID_1294023197" MODIFIED="1512926191957" TEXT="Stand der Ü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="1456423805328" TEXT="Collections sind außen vor">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...will sagen:
|
|
</p>
|
|
<p>
|
|
fü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ätzlich,
|
|
</p>
|
|
<p>
|
|
um den verschobenen Inhalt erst mal aufzunehmen.
|
|
</p>
|
|
<p>
|
|
Also zä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öß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ß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öß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="Übersetzen in eine Typ-Spezifikation"/>
|
|
<node CREATED="1456429488492" ID="ID_393439057" MODIFIED="1456429496150" TEXT="aus dem Typ eine Größe ableiten"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1456430088803" HGAP="54" ID="ID_481518617" MODIFIED="1533684808984" TEXT="Lösung" VSHIFT="19">
|
|
<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ä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<GenNode>"/>
|
|
</node>
|
|
<node CREATED="1457120439360" ID="ID_1972741688" MODIFIED="1487275490699" 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 "absrakten, opaquen" Position entschä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="1456506101544" HGAP="165" ID="ID_133511037" MODIFIED="1525124215112" TEXT="Implementierung" VSHIFT="42">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1456506128581" HGAP="-12" ID="ID_322289358" MODIFIED="1525124215117" TEXT="Abwägungen" VSHIFT="184">
|
|
<node CREATED="1456506135028" HGAP="29" ID="ID_470489868" MODIFIED="1512926191965" TEXT="Indirektionen" VSHIFT="-5">
|
|
<node CREATED="1456506145826" ID="ID_759825167" MODIFIED="1461888854079" TEXT="kosten">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</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ß speziell das Traversieren bis an den Anwendungsort bedacht werden
|
|
</li>
|
|
</ul>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1456506151065" ID="ID_496007561" MODIFIED="1461888854085" TEXT="bisher nur drei">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</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>
|
|
 -- das gibt einen wichtigen Hinweis --
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1456506160472" ID="ID_1269579163" MODIFIED="1461888854089" TEXT="zwei sind das Minimum">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</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_660502308" MODIFIED="1512926191966" TEXT="für generische Zieldaten">
|
|
<node CREATED="1456506446002" ID="ID_485732185" MODIFIED="1456506470075" TEXT="kommt eine Indirektion hinzu"/>
|
|
<node CREATED="1456506471159" ID="ID_1228778249" MODIFIED="1512926191966" TEXT="es sei denn...">
|
|
<node CREATED="1456506475686" ID="ID_388141973" MODIFIED="1456506487232" TEXT="man tauscht jeweils den Sprach-Interpreter aus"/>
|
|
<node CREATED="1456506487796" ID="ID_24089490" MODIFIED="1456506499239" TEXT="das setzt aber rekursives Konsumieren des Diff voraus"/>
|
|
<node CREATED="1456506500187" ID="ID_438927454" MODIFIED="1456506511565" TEXT="und das zwingt uns, den Typ des Diff explizit zu machen"/>
|
|
<node CREATED="1456506512721" ID="ID_1007093555" MODIFIED="1461888854100" TEXT="der nicht-explizite Typ ist im Moment von Vorteil....">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
weil wir den Anwendungs-Kontext noch überhaupt nicht kennen.
|
|
</p>
|
|
<p>
|
|
Man könnte also später, wenn das ganze System "steht",
|
|
</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_448113584" MODIFIED="1456506627511" VSHIFT="8">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
Beschluß: <i>akzeptiert</i>
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="yes"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1456506647447" HGAP="32" ID="ID_399090389" MODIFIED="1512926191967" TEXT="Zielvorgabe: weitere vermeiden" VSHIFT="12">
|
|
<node CREATED="1456506661421" ID="ID_593167689" MODIFIED="1456506689357" TEXT="d.h. nur entweder front-end oder back-end sind virtuell"/>
|
|
<node CREATED="1456506689834" ID="ID_1393928517" MODIFIED="1456506713270">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
im Sinn von "polymorpic value" ist <b>das Backend virtuell</b>
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1456506719949" ID="ID_326439598" MODIFIED="1456506725568" TEXT="keine virtuellen Iteratoren"/>
|
|
<node CREATED="1456506726060" ID="ID_999652076" MODIFIED="1456506738455" TEXT="Front-End muß Typedefs bereitstellen"/>
|
|
<node CREATED="1456506740323" ID="ID_1961807979" MODIFIED="1456506747838" TEXT="elaboriertes Typkonstrukt notwendig"/>
|
|
<node CREATED="1456506749234" ID="ID_957942327" MODIFIED="1461888854111" TEXT="zumindest für jeden Compund-Zieltyp ein eigener Interpreter">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
....wenngleich auch dieser aus einem Template generiert wird
|
|
</p>
|
|
<p>
|
|
(will sagen, es ist nicht sofort offensichtlich, daß wir jeweils einen Interpreter generieren)
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1457038737878" HGAP="44" ID="ID_643190842" MODIFIED="1512926191968" TEXT="Abstraktions-Grad">
|
|
<node CREATED="1457119812475" ID="ID_1862440484" MODIFIED="1457119817575" TEXT="Elemente bleiben opaque"/>
|
|
<node CREATED="1457119818091" ID="ID_1097779694" MODIFIED="1512926191969">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
wir <i>verzichten</i> auf Introspektion der Elemente
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<node CREATED="1457119990420" ID="ID_1521035606" MODIFIED="1457120011276" TEXT="...denn die müßte die jeweilige Implementierung erbringen"/>
|
|
<node CREATED="1457120011721" ID="ID_23476594" MODIFIED="1457120024027" TEXT="und das würde das Übel der Introspektion überall hineindrücken"/>
|
|
<node CREATED="1457120026343" ID="ID_156752160" MODIFIED="1457120043288" TEXT="Nachteil: keine klare Fehlerdiagnose möglich"/>
|
|
<node CREATED="1457120043925" ID="ID_1878678132" MODIFIED="1512926191970" TEXT="ist akzeptierbar...">
|
|
<node CREATED="1457120079542" ID="ID_1809509099" MODIFIED="1457120079542">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
denn genau zu diesem Zweck haben wir die "External Tree Description"
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1457120084135" ID="ID_633070963" MODIFIED="1457120093706" TEXT="auf diese sollte ein Diff zuerst angewendet werden"/>
|
|
<node CREATED="1457120094302" ID="ID_1409151619" MODIFIED="1457120105488" TEXT="und diese bietet Introspektion und klare Diagnose"/>
|
|
<node CREATED="1457120105908" ID="ID_1245554045" MODIFIED="1457120131741" TEXT="Annahme ist also, daß ein Diff auf real-Datenstrukturen per Konstruktion erfolgreich ist"/>
|
|
<node CREATED="1457120134297" ID="ID_1098514912" MODIFIED="1457120154250" TEXT="und ein Fehler dabei ist zwingenderweise ein Fehler in der Programmlogik"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1457119844767" ID="ID_1648334868" MODIFIED="1457119861265" TEXT="wir bieten nur einen Match auf die Diff-Spec"/>
|
|
<node CREATED="1457119876899" ID="ID_362462955" MODIFIED="1457119902755" TEXT="Mutations-Primitive bieten bool Erfolgs-Check"/>
|
|
<node CREATED="1457119903391" ID="ID_1244810870" MODIFIED="1457119909602" TEXT="aber keine Exceptions"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1456506821808" ID="ID_1852134358" MODIFIED="1512926191970" TEXT="Typ-Konstrukt">
|
|
<node CREATED="1461879209050" ID="ID_983143410" MODIFIED="1461879267131" TEXT="Kernproblem: wie groß muß der Buffer sein?">
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
<node CREATED="1461879239310" ID="ID_866573163" MODIFIED="1461879260051" TEXT="wie bekomme ich diese Info von nicht a priori bekannten Typen">
|
|
<icon BUILTIN="help"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1456523437616" HGAP="34" ID="ID_410606899" MODIFIED="1512926191970" TEXT="Manipulations-Interface" VSHIFT="6">
|
|
<node COLOR="#338800" CREATED="1456523455997" FOLDED="true" ID="ID_1416114013" MODIFIED="1533684705230" TEXT="Design lösen">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1456523507910" ID="ID_429333479" MODIFIED="1456523518005" TEXT="Henne oder Ei?"/>
|
|
<node CREATED="1456523471851" ID="ID_1273540009" MODIFIED="1456523485597" TEXT="komm nicht vom Fleck"/>
|
|
<node CREATED="1456523487089" ID="ID_1139978684" MODIFIED="1456523501995" TEXT="zirkuläre Bezüge im Design"/>
|
|
<node CREATED="1456523522693" ID="ID_625051251" MODIFIED="1512926191971" TEXT="abstrakter Entwurf">
|
|
<arrowlink COLOR="#6b77a6" DESTINATION="ID_728198359" ENDARROW="Default" ENDINCLINATION="-116;0;" ID="Arrow_ID_340427685" STARTARROW="None" STARTINCLINATION="-819;487;"/>
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1456523558304" ID="ID_1843819253" MODIFIED="1456523564050" TEXT="baue einen Dummy">
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
<node CREATED="1456523569111" ID="ID_1173914226" MODIFIED="1456523580721" TEXT="...als eine Spezialisierung des Adapters"/>
|
|
<node CREATED="1456523593731" ID="ID_126624039" MODIFIED="1456528188767" TEXT="Interface ohne reale Daten"/>
|
|
<node CREATED="1456528076005" ID="ID_1973839094" MODIFIED="1512926191972" TEXT="Diagnose">
|
|
<node CREATED="1456528119297" ID="ID_37448528" MODIFIED="1456528119297" TEXT="hat ein EventLog eingebaut"/>
|
|
<node CREATED="1456528148107" ID="ID_626507029" MODIFIED="1456528165925" TEXT="protokolliert Schatten-Kinder-Liste"/>
|
|
<node CREATED="1456528167440" ID="ID_1984138384" MODIFIED="1472219338598" TEXT="transparenter Dekorator">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...d.h,
|
|
</p>
|
|
<p>
|
|
kann zusätzlich zu einem anderen Adaptor
|
|
</p>
|
|
<p>
|
|
in die Mutator-Dekorator-Kette gehängt werden
|
|
</p>
|
|
<p>
|
|
und protokolliert somit "nebenbei" was an Anforderungen an ihm vorbeigeht
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1456523612849" ID="ID_729852941" MODIFIED="1456523625883" TEXT="Test zum Aufbau des Interfaces"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1456528418823" FOLDED="true" HGAP="30" ID="ID_1372068793" MODIFIED="1533684696827" TEXT="Bestandteile" VSHIFT="-1">
|
|
<icon BUILTIN="info"/>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1456528424246" ID="ID_472044094" MODIFIED="1515978023897" STYLE="fork" TEXT="Selektor">
|
|
<linktarget COLOR="#7caed5" DESTINATION="ID_472044094" ENDARROW="Default" ENDINCLINATION="466;133;" ID="Arrow_ID_1253352795" SOURCE="ID_1406395599" STARTARROW="None" STARTINCLINATION="681;0;"/>
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
<node CREATED="1457741609884" ID="ID_1827838196" MODIFIED="1512926191973" TEXT="bin ich zuständig?">
|
|
<node CREATED="1458094312266" ID="ID_233521483" MODIFIED="1458094316157" TEXT="isApplicable"/>
|
|
<node CREATED="1458094316697" ID="ID_839136400" MODIFIED="1512926191974" TEXT="Festlegung:">
|
|
<icon BUILTIN="yes"/>
|
|
<node CREATED="1458094327095" ID="ID_306307671" MODIFIED="1458094334354" TEXT="nur auf Basis der spec"/>
|
|
<node CREATED="1458094334991" ID="ID_903070750" MODIFIED="1458094343401" TEXT="ohne Daten-Introspektion"/>
|
|
</node>
|
|
<node CREATED="1458094507048" ID="ID_1012976053" MODIFIED="1512926191974" TEXT="Problem">
|
|
<node CREATED="1458094510463" ID="ID_812427058" MODIFIED="1533608413874" TEXT="Spec bietet wenig Anhaltspunkte">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
streng genommen ist es nur erlaubt, das ID-Symbol auszuwerten
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<node CREATED="1458094562800" ID="ID_184244927" MODIFIED="1458094568467" TEXT="ID-Symbol"/>
|
|
<node CREATED="1458094569128" ID="ID_743935773" MODIFIED="1458094579369" TEXT="attribute / child"/>
|
|
</node>
|
|
<node CREATED="1458094599835" HGAP="24" ID="ID_1161622136" MODIFIED="1533608413876" TEXT="Zugang zum Payload-Typ" VSHIFT="10">
|
|
<icon BUILTIN="help"/>
|
|
<node CREATED="1458094616417" ID="ID_1013344827" MODIFIED="1458094632012" TEXT="Introspection / Switch-on-Type">
|
|
<icon BUILTIN="stop-sign"/>
|
|
</node>
|
|
<node CREATED="1458094634167" ID="ID_1794163270" MODIFIED="1458094672710">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
Visitor bedeutet <b>zwei</b> Indirektionen
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...und das ist nicht akzeptabel für ein reines Selektor-Prädikat!
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1458094716364" FOLDED="true" ID="ID_1749838430" MODIFIED="1533608416269" TEXT="eingeschränkt auf Objekt-Typ">
|
|
<icon BUILTIN="help"/>
|
|
<node CREATED="1458094735673" ID="ID_1089998465" MODIFIED="1458094743492" TEXT="Semantischer Typ"/>
|
|
<node CREATED="1458094743960" ID="ID_1642238646" MODIFIED="1458094767704" TEXT="vs. Typisierung in der Sprache"/>
|
|
<node CREATED="1458094769365" ID="ID_855557799" MODIFIED="1458094773848" TEXT="pattern match"/>
|
|
<node CREATED="1458094823973" ID="ID_726480550" MODIFIED="1458094841971">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
denkbar nur bei Sub-<i>Objekten</i>
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1458094850490" ID="ID_39407126" MODIFIED="1458094856797" TEXT="d.h. bei Record-Daten"/>
|
|
<node CREATED="1458094864424" ID="ID_746601299" MODIFIED="1458094872787" TEXT="Record hat ein (semantisches) Typfeld"/>
|
|
<node CREATED="1458094922024" ID="ID_1616971769" MODIFIED="1458094954604">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
gilt für <i>alle</i> praktischen Anwendungen
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1458094956636" ID="ID_1820565901" MODIFIED="1458095165033" TEXT="denn nur Objekt-Kinder machen Sinn">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
....auch wenn man zehnmal meinen könnte,
|
|
</p>
|
|
<p>
|
|
Kinder eines reinen Wert-Typs wären sinnvoll --
|
|
</p>
|
|
<p>
|
|
sie sind es nicht!
|
|
</p>
|
|
<p>
|
|
Jede sinnvolle <i>Entität</i> hat mehr als ein Attribut<i>! </i>
|
|
</p>
|
|
<p>
|
|
denn es macht keinen Sinn, Entitä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ä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_824115387" MODIFIED="1533608415976" TEXT="um das zu unterstützen...">
|
|
<icon BUILTIN="idea"/>
|
|
<node CREATED="1458095230175" ID="ID_995706334" MODIFIED="1458095239258" TEXT="müßte DataCap helfen"/>
|
|
<node CREATED="1458095367701" ID="ID_1549321280" MODIFIED="1458095376400" TEXT="es gäbe dann einen Bottom-Wert"/>
|
|
<node CREATED="1458095240158" ID="ID_1884817792" MODIFIED="1458095284084" TEXT="Introspektions-Verbot etwas aufgeweicht"/>
|
|
<node CREATED="1458095304886" ID="ID_395248655" MODIFIED="1458095318800" TEXT="dieser Gebrauch ist aber mit dem Objekt-Typfeld schon angelegt"/>
|
|
<node CREATED="1458095320692" ID="ID_1203007776" MODIFIED="1458095332942" TEXT="die Bedeutung wird vom Client privat definiert"/>
|
|
<node CREATED="1458095409800" ID="ID_227738227" MODIFIED="1458095442503" TEXT="ebenso wird aber auch die Bedeutung der ETD lokal definiert"/>
|
|
<node CREATED="1458095443115" ID="ID_586715428" MODIFIED="1458095455459" TEXT="erscheint mir plausibel und vertretbar">
|
|
<icon BUILTIN="yes"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1461881999377" ID="ID_1469132046" MODIFIED="1461882004217" TEXT="so implementiert">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1458095528224" ID="ID_109058224" MODIFIED="1512926191979" TEXT="falls nein...">
|
|
<node CREATED="1458095540807" ID="ID_225712554" MODIFIED="1458095553929" TEXT="übernimmt der nächste Onion-Layer"/>
|
|
<node CREATED="1458095554548" ID="ID_1745271000" MODIFIED="1458095566303" TEXT="scheitert am Ende die Diff-Anwendung"/>
|
|
<node CREATED="1458095567123" ID="ID_1135449086" MODIFIED="1533608413880" TEXT="das kann nicht sein">
|
|
<icon BUILTIN="ksmiletris"/>
|
|
<node CREATED="1458095599015" ID="ID_1548761670" MODIFIED="1458095611129" TEXT="denn Struktur wird per Diff aufgebaut"/>
|
|
<node CREATED="1458095611645" ID="ID_1917053068" MODIFIED="1458095623023" TEXT="und Diff wird von einer konsistenten Struktur generiert"/>
|
|
<node CREATED="1458095623563" ID="ID_1563236319" MODIFIED="1458095636789" TEXT="wenngleich es sich auch um eine funktionale Struktur handeln kann..."/>
|
|
<node CREATED="1458095660150" ID="ID_329824783" MODIFIED="1458095668777" TEXT="wir sind nicht tolerant bei der Diff-Anwendung"/>
|
|
<node CREATED="1458095669437" ID="ID_650500191" MODIFIED="1458095672801" TEXT="und das ist gut so."/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1457741617655" ID="ID_1664250793" MODIFIED="1512926191980" TEXT="was ist ein "match"?">
|
|
<node CREATED="1458094392679" ID="ID_238187527" MODIFIED="1460755241888">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
"target <i>matches</i> spec"
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<font NAME="SansSerif" SIZE="12"/>
|
|
</node>
|
|
<node CREATED="1458094428506" ID="ID_1753032814" MODIFIED="1458094435693" TEXT="darf Annahmen über den Typ der Spec machen"/>
|
|
<node CREATED="1458094397350" ID="ID_1185807177" MODIFIED="1458094427326" TEXT="darf in die Payload der Spec schauen"/>
|
|
<node CREATED="1458094437249" ID="ID_1125952135" MODIFIED="1458094463529" TEXT="darf Methoden des Datenobjekts aufrufen"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1457038643034" ID="ID_1057400532" MODIFIED="1515978009310" TEXT="abstrakte Position">
|
|
<node CREATED="1460755065016" ID="ID_935271147" MODIFIED="1460755138704" TEXT="wird niemals direkt repräsentiert">
|
|
<icon BUILTIN="yes"/>
|
|
</node>
|
|
<node CREATED="1460755072903" ID="ID_1650064575" MODIFIED="1460755130181">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
aber existiert <i>nominell </i>und kontext-abhängig
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1460755080894" ID="ID_107894920" MODIFIED="1460755106150" TEXT="und faktisch unabhängig in jedem »onion layer«"/>
|
|
</node>
|
|
<node CREATED="1457038527402" HGAP="16" ID="ID_1909805079" MODIFIED="1512926191982" TEXT="Mutations-Primitive" VSHIFT="7">
|
|
<node CREATED="1457038788583" ID="ID_131880970" MODIFIED="1457038801193" TEXT="einheitlich benannt"/>
|
|
<node CREATED="1457038801733" ID="ID_428479460" MODIFIED="1457038805816" TEXT="auf mehreren Ebenen"/>
|
|
<node CREATED="1457119943698" ID="ID_370768211" MODIFIED="1512926191982" TEXT="Fehlerbehandlung">
|
|
<node CREATED="1457119949785" ID="ID_658419110" MODIFIED="1457119953012" TEXT="Match-Check"/>
|
|
<node CREATED="1457119953384" ID="ID_1688941824" MODIFIED="1457119957324" TEXT="aber keine Exception"/>
|
|
<node CREATED="1457119959408" ID="ID_275413703" MODIFIED="1457119961803" TEXT="sondern NOP"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1457227228502" ID="ID_845299775" MODIFIED="1512926191983" TEXT="sub-Mutator">
|
|
<node CREATED="1457227237269" ID="ID_1175871622" MODIFIED="1457227296340" TEXT="wird über ein Handle implantiert">
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
<node CREATED="1457227248779" ID="ID_1765753442" MODIFIED="1457227279155" TEXT="Implementierungs-Schicht kennt Typ"/>
|
|
<node CREATED="1457227279703" ID="ID_347493370" MODIFIED="1457227288610" TEXT="aber Tree-Mutator übernimmt ownership"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1456528462585" HGAP="48" ID="ID_1770521063" MODIFIED="1512926191983" TEXT="Elemente" VSHIFT="21">
|
|
<node CREATED="1456528472016" ID="ID_315938795" MODIFIED="1456528476211" TEXT="bleiben abstrakt"/>
|
|
<node CREATED="1456528477415" ID="ID_1931717091" MODIFIED="1512926191984" TEXT="abstrakte "Position"">
|
|
<node CREATED="1456533135345" ID="ID_1775378899" MODIFIED="1465428629652" TEXT="Problem: wem gehört diese Position?">
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
</node>
|
|
<node CREATED="1456533146055" ID="ID_312959811" MODIFIED="1456533213989" TEXT="muß stets über API klar gemacht werden">
|
|
<icon BUILTIN="yes"/>
|
|
</node>
|
|
<node CREATED="1456533166197" ID="ID_1000253494" MODIFIED="1456533204589" TEXT="der Selektor entscheidet, wer gemeint ist">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1456528485326" ID="ID_1764970284" MODIFIED="1512926191984" TEXT="getypte Kinder">
|
|
<node CREATED="1456528491109" ID="ID_1550088866" MODIFIED="1456528504567" TEXT="auf Einzelfall-Basis"/>
|
|
<node CREATED="1456528505395" ID="ID_1091163328" MODIFIED="1456528519117" TEXT="wer per Selektor zuständig ist"/>
|
|
<node CREATED="1456528539799" ID="ID_1658968937" MODIFIED="1456528550465" TEXT="Typisierung ergibt sich als Effekt"/>
|
|
<node CREATED="1456528551029" ID="ID_193586898" MODIFIED="1465428643785" TEXT="Typisierung wird nicht eigens repräsentiert">
|
|
<icon BUILTIN="yes"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1457232376244" HGAP="29" ID="ID_1914581822" MODIFIED="1525124215136" TEXT="onion layer" VSHIFT="26">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
das sind die konkreten Implementierungen
|
|
</p>
|
|
<p>
|
|
für spezifische Arten von Bindings
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1457232408368" FOLDED="true" HGAP="29" ID="ID_1068782263" MODIFIED="1533684619595" TEXT="TestWireTap / TestMutationTarget" VSHIFT="-6">
|
|
<icon BUILTIN="full-1"/>
|
|
<node CREATED="1457232426238" ID="ID_728198359" MODIFIED="1457232567024" TEXT="brauche ich, um das API zu entwickeln">
|
|
<linktarget COLOR="#6b77a6" DESTINATION="ID_728198359" ENDARROW="Default" ENDINCLINATION="-116;0;" ID="Arrow_ID_340427685" SOURCE="ID_625051251" STARTARROW="None" STARTINCLINATION="-819;487;"/>
|
|
</node>
|
|
<node CREATED="1457232433157" ID="ID_1606470322" MODIFIED="1457232443415" TEXT="ggfs später nützlich zur Diagnose"/>
|
|
<node CREATED="1457232444075" ID="ID_442780922" MODIFIED="1457232459765" TEXT="soll stets über andere, konkrete Mutation-Layer gelegt werden"/>
|
|
<node CREATED="1457232579073" ID="ID_280491578" MODIFIED="1512926191986" TEXT="Grenzen">
|
|
<node CREATED="1457232582704" ID="ID_1594229064" MODIFIED="1457232590595" TEXT="protokolliert nur String-Repräsentation"/>
|
|
<node CREATED="1457232591087" ID="ID_119032593" MODIFIED="1472219338677">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
kann <i>niemals </i>geschachtelte sub-Mutatoren modellieren
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
ja wirklich, das wäre nicht sinnvoll!!!!!
|
|
</p>
|
|
<p>
|
|
auch wenn man meinen könnte, es geht.
|
|
</p>
|
|
<p>
|
|
Grund ist nämlich, es kann jeweils nur ein Onion-Layer für ein gegebenes Element "zuständig" sein.
|
|
</p>
|
|
<p>
|
|
Und aus Gründen der logischen Konsistenz darf dieser Diagnose-Layer niemals für ein Element zuständig sein,
|
|
</p>
|
|
<p>
|
|
denn sonst würde er es für darunter liegende Layer verschatten.
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="closed"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1457232734636" FOLDED="true" ID="ID_1873945047" MODIFIED="1533684617605" TEXT="STL Collection">
|
|
<icon BUILTIN="full-2"/>
|
|
<node CREATED="1458175823858" ID="ID_438044714" MODIFIED="1512926191990" TEXT="Design-Grundlagen">
|
|
<node CREATED="1457741673001" ID="ID_1873415490" MODIFIED="1512926191990" TEXT="konkrete Beispiele">
|
|
<icon BUILTIN="info"/>
|
|
<node CREATED="1457741683687" ID="ID_1222762304" MODIFIED="1457741691409" TEXT="Timelines"/>
|
|
<node CREATED="1457741691837" ID="ID_1487568890" MODIFIED="1457741697832" TEXT="Tracks"/>
|
|
<node CREATED="1457741753006" ID="ID_303387812" MODIFIED="1457742102003" TEXT="Clips / Effekte / Marken"/>
|
|
<node CREATED="1457741809422" ID="ID_1428407098" MODIFIED="1457741815657" TEXT="Effekte / Transitions"/>
|
|
</node>
|
|
<node CREATED="1457742434714" ID="ID_587627505" MODIFIED="1457742717208">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
⟹ <i>immer</i> Mitwirkung des Elements
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
<node CREATED="1457742547067" HGAP="33" ID="ID_410938096" MODIFIED="1512926191991" TEXT="Selector explizit bauen" VSHIFT="7">
|
|
<icon BUILTIN="yes"/>
|
|
<node CREATED="1457742554722" ID="ID_1406395599" MODIFIED="1469918265250" TEXT="Selector-Interface">
|
|
<arrowlink COLOR="#7caed5" DESTINATION="ID_472044094" ENDARROW="Default" ENDINCLINATION="466;133;" ID="Arrow_ID_1253352795" STARTARROW="None" STARTINCLINATION="681;0;"/>
|
|
</node>
|
|
<node CREATED="1457742626368" ID="ID_1910692241" MODIFIED="1512926191991" TEXT="2.Ausdrucks-Ebene">
|
|
<node CREATED="1457742639703" ID="ID_1065867780" MODIFIED="1457742645826" TEXT="neben der Identität"/>
|
|
<node CREATED="1457742646366" ID="ID_1533568989" MODIFIED="1533608413881" TEXT="logische Typisierung">
|
|
<node CREATED="1457742667947" ID="ID_1640657752" MODIFIED="1457742677734" TEXT="entweder anhand Payload-Typ"/>
|
|
<node CREATED="1457742678185" ID="ID_1211029199" MODIFIED="1457742684533" TEXT="oder versteckt in der ID"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1458175861176" FOLDED="true" HGAP="33" ID="ID_44294405" MODIFIED="1533684553508" TEXT="Design-Anforderungen">
|
|
<node CREATED="1458175880034" ID="ID_995745627" MODIFIED="1512926191992" TEXT="gegeben ist eine STL-Collection">
|
|
<node CREATED="1458175892400" ID="ID_1308086929" MODIFIED="1458175904674" TEXT="allgemeinstes STL-Container-Interface"/>
|
|
<node CREATED="1458175905766" ID="ID_446727516" MODIFIED="1458175919817" TEXT="Wert-Typ per typedef abgreifen"/>
|
|
</node>
|
|
<node CREATED="1455927276314" HGAP="91" ID="ID_1959700641" MODIFIED="1525124215145" TEXT="brauche zusätzliche Operationen" VSHIFT="-3">
|
|
<cloud COLOR="#fce9c0"/>
|
|
<font NAME="SansSerif" SIZE="12"/>
|
|
<icon BUILTIN="info"/>
|
|
<node CREATED="1458175942866" ID="ID_181058597" MODIFIED="1512926191994" TEXT="match">
|
|
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
|
|
<node CREATED="1458177113846" ID="ID_320488998" MODIFIED="1458177953094" TEXT="stellt fest, ob das Ziel paßt"/>
|
|
<node CREATED="1458177136475" ID="ID_1352800435" MODIFIED="1458177953094" TEXT="greift auf eine ID des Zieles zurück"/>
|
|
<node CREATED="1458177147897" ID="ID_1632332105" MODIFIED="1458177953094" TEXT="muß daher in der Regel bereitgestellt werden"/>
|
|
<node CREATED="1458177166543" ID="ID_1266232529" MODIFIED="1533608413881" TEXT="Ersatz">
|
|
<icon BUILTIN="idea"/>
|
|
<node CREATED="1458177169406" ID="ID_1194870730" MODIFIED="1458177953094" TEXT="content-Match"/>
|
|
<node CREATED="1458177173574" ID="ID_1636541063" MODIFIED="1458177953094" TEXT="Konsequenz: man kann keine Assignements machen">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
weil beim Assignment die Spec (=GenNode) eben
|
|
</p>
|
|
<p>
|
|
zwar die ID des Zieles, aber den neu zuzuweisenden Wert enthä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ägt.
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1458177198643" ID="ID_1228381833" MODIFIED="1458177953094" TEXT="Konsequenz: Suche kann das falsche Resultat erwischen"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1458175960615" ID="ID_499742122" MODIFIED="1512926191995" TEXT="ctor">
|
|
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
|
|
<node CREATED="1458177315803" ID="ID_1282762906" MODIFIED="1458177953094" TEXT="konstruiert aus der Spec ein neues Element"/>
|
|
<node CREATED="1458177335632" ID="ID_430010657" MODIFIED="1458177953094" TEXT="muß typischerweise die Interna des Zieles kennen"/>
|
|
<node CREATED="1458177347622" ID="ID_1041373197" MODIFIED="1533608413881" TEXT="Ersatz">
|
|
<icon BUILTIN="idea"/>
|
|
<node CREATED="1458177489444" ID="ID_1024908643" MODIFIED="1458177953094" TEXT="unterstelle Payload == Zieltyp"/>
|
|
<node CREATED="1458177572865" ID="ID_1483034601" MODIFIED="1458177953094" TEXT="Konstruktor auf dem Ziel, der eine GenNode nimmt"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1458175991795" ID="ID_437650849" MODIFIED="1512926191995" TEXT="optional...">
|
|
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
|
|
<node CREATED="1458176002762" ID="ID_442473703" MODIFIED="1533608413882" TEXT="selector">
|
|
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
|
|
<node CREATED="1458177605869" ID="ID_262186866" MODIFIED="1458177953094" TEXT="bestimmt ob die Spec für diesen Binding-Layer überhaupt relevant ist"/>
|
|
<node CREATED="1458177631409" ID="ID_1877742460" MODIFIED="1458177953094" TEXT="erlaubt das Filtern mit mehreren Bindings"/>
|
|
<node CREATED="1458177642144" FOLDED="true" ID="ID_310751196" MODIFIED="1533608416271" TEXT="Ersatz">
|
|
<icon BUILTIN="idea"/>
|
|
<node CREATED="1458177646671" ID="ID_1707674287" MODIFIED="1458177953094" TEXT="kein Selector"/>
|
|
<node CREATED="1458177652662" ID="ID_1067744704" MODIFIED="1458177953094" TEXT="es kann dann also nur ein Binding geben"/>
|
|
<node CREATED="1458177664868" ID="ID_935075867" MODIFIED="1458177953094" TEXT="das ist aber auch der häufigste Fall"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1458176008025" ID="ID_1099350141" MODIFIED="1533608413883" TEXT="setter">
|
|
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
|
|
<node CREATED="1458177697657" ID="ID_1388855448" MODIFIED="1458177953095" TEXT="erlaubt Zuweisung"/>
|
|
<node CREATED="1458177712798" ID="ID_1708999099" MODIFIED="1458177953095" TEXT="setzt Auswahl per match voraus"/>
|
|
<node CREATED="1458177735635" FOLDED="true" ID="ID_197038069" MODIFIED="1533608416273" TEXT="Ersatz">
|
|
<icon BUILTIN="button_cancel"/>
|
|
<node CREATED="1458177738499" ID="ID_1474971428" MODIFIED="1458177953095" TEXT="keiner"/>
|
|
<node CREATED="1458177741155" ID="ID_1784046352" MODIFIED="1458177953095" TEXT="dann gibt's eben keine Zuweisung"/>
|
|
<node CREATED="1458177749233" ID="ID_873905001" MODIFIED="1458177953095" TEXT="auch nicht nötig bei sub-Scopes"/>
|
|
<node CREATED="1458177803730" ID="ID_674080114" MODIFIED="1458177953095" TEXT="auch nicht nötig bei immutable values"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1458176018087" ID="ID_1978664300" MODIFIED="1533608413884" TEXT="mutator">
|
|
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
|
|
<node CREATED="1458177821712" ID="ID_152424824" MODIFIED="1458177953095" TEXT="baut einen sub-Mutator für einen nested scope"/>
|
|
<node CREATED="1458177851988" ID="ID_307170712" MODIFIED="1458177953095" TEXT="setzt Auswahl per match voraus"/>
|
|
<node CREATED="1458177857939" FOLDED="true" ID="ID_233644864" MODIFIED="1533608416274" TEXT="Ersatz">
|
|
<icon BUILTIN="button_cancel"/>
|
|
<node CREATED="1458177861162" ID="ID_240936470" MODIFIED="1458177953095" TEXT="keiner"/>
|
|
<node CREATED="1458177863506" ID="ID_1403138553" MODIFIED="1458177953095" TEXT="dann gibts eben keine Behandlung von nested scopse"/>
|
|
<node CREATED="1458177874760" ID="ID_1050027667" MODIFIED="1458177953095" TEXT="auch nicht nötig bei primitive values"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1458176048564" ID="ID_173428941" MODIFIED="1512926191998" TEXT="Flexibilität">
|
|
<node CREATED="1458176054154" ID="ID_1379937028" MODIFIED="1458176076851" TEXT="so wenig typ-Feslegung wie möglich"/>
|
|
<node CREATED="1458176077368" ID="ID_1730540256" MODIFIED="1458176092658" TEXT="fallback bei fehlendern Operationen"/>
|
|
<node CREATED="1458176093958" ID="ID_801042454" MODIFIED="1512926191999" TEXT="Argument: "dann halt nicht"">
|
|
<node CREATED="1458176117266" ID="ID_1479654896" MODIFIED="1458176127813" TEXT="es ist so wie es ist"/>
|
|
<node CREATED="1458176128352" ID="ID_1366947640" MODIFIED="1458176139563" TEXT="die Gegenseite weiß schon was sie will"/>
|
|
<node CREATED="1458176252336" ID="ID_1554344013" MODIFIED="1533608413885" TEXT="ich bin, also bin ich konsistent">
|
|
<node CREATED="1458176267382" ID="ID_427126071" MODIFIED="1458176296319" TEXT="konsistent ist, was der diff erzeugt"/>
|
|
<node CREATED="1458176297282" ID="ID_336107495" MODIFIED="1458176305981" TEXT="alles wird per diff erzeugt"/>
|
|
<node CREATED="1458176306593" ID="ID_666376142" MODIFIED="1458176314868" TEXT="also ist alles, was existiert, auch konsistent"/>
|
|
</node>
|
|
<node CREATED="1458176787953" ID="ID_1610561572" MODIFIED="1533608413887" TEXT="sinnvoll gewählt">
|
|
<node CREATED="1458176794848" ID="ID_1399218405" MODIFIED="1458176810370" TEXT="native datenstruktur ist so gewählt, daß sie ihren Zweck erfüllt"/>
|
|
<node CREATED="1458176883836" ID="ID_1357445271" MODIFIED="1458176899324">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
generische Repräsentaton ist so gewählt,
|
|
</p>
|
|
<p>
|
|
daß sich alle relevanten Eigenschaften darstellen lassen
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1458176911161" FOLDED="true" ID="ID_1565618197" MODIFIED="1533608416275">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
wenn also ein Teil der diff-Funkttionalität nicht verfügbar ist,
|
|
</p>
|
|
<p>
|
|
dann wird es wohl so sein, daß sie auch nicht gebraucht wird
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<node CREATED="1458176947972" ID="ID_1901451299" MODIFIED="1458176965869" TEXT="Beispiel: primitive Werte sind eben kein sub-Scope"/>
|
|
<node CREATED="1458176966665" ID="ID_1292201640" MODIFIED="1458176981459" TEXT="Beispiel: immutable elements sind eben nicht zuweisbar"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1458176998437" ID="ID_425451497" MODIFIED="1460752973198" TEXT="keine unnötigen Einschränkungen">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</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ät gutmütig zu degradieren.
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1458178113697" HGAP="46" ID="ID_186668887" MODIFIED="1512926192002" TEXT="Design-Schlußfolgerungen" VSHIFT="-5">
|
|
<node CREATED="1458178126159" ID="ID_1322433318" MODIFIED="1458178131587" TEXT="Rahmenklasse + Closures"/>
|
|
<node CREATED="1458178133078" ID="ID_278002579" MODIFIED="1458851636692" TEXT="Closures mit der Ersatz-Impl vorbelegen">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node CREATED="1458178150916" ID="ID_1020570949" MODIFIED="1458178174848" TEXT="Problem: komplexe Konstruktion">
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
</node>
|
|
<node CREATED="1458178165322" ID="ID_963054881" MODIFIED="1512926192002" TEXT="Lösung: nested DSL">
|
|
<icon BUILTIN="idea"/>
|
|
<node CREATED="1458178203821" ID="ID_785912532" MODIFIED="1458178222190" TEXT="die Top-Level Builder-Funktion erwartet das volle Binding"/>
|
|
<node CREATED="1458178223723" ID="ID_798018180" MODIFIED="1458178247755" TEXT="es gibt eine freie Funktion, die einen nested Builder für das Binding liefert"/>
|
|
</node>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1458178288690" FOLDED="true" ID="ID_562189277" MODIFIED="1533684562806" TEXT="Implementierung">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1458178298328" ID="ID_1964300614" MODIFIED="1512926192003" TEXT="Builder">
|
|
<node CREATED="1458325962991" ID="ID_1955400674" MODIFIED="1460753004725" TEXT="Typ-Definitionen schwierig anzuschreiben">
|
|
<icon BUILTIN="smiley-neutral"/>
|
|
</node>
|
|
<node CREATED="1458325973486" ID="ID_1711903796" MODIFIED="1458325992405" TEXT="Code ziemlich redundant und undurchsichtig">
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
</node>
|
|
<node CREATED="1458326045724" ID="ID_338749301" MODIFIED="1472498604875" TEXT="Typ-Check erst sehr spät">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...will sagen,
|
|
</p>
|
|
<p>
|
|
da sind mehrere Layer an praktisch ungebundenem Template-Code dazwischen,
|
|
</p>
|
|
<p>
|
|
so daß zu befürchten steht, daß ein unpassendes Lambda erst weit entfernt
|
|
</p>
|
|
<p>
|
|
eine womöglich irreführende Meldung generiert
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<arrowlink DESTINATION="ID_428365633" ENDARROW="Default" ENDINCLINATION="176;0;" ID="Arrow_ID_1501436647" STARTARROW="None" STARTINCLINATION="176;0;"/>
|
|
</node>
|
|
<node CREATED="1472498654730" ID="ID_1869339299" MODIFIED="1472498676884" TEXT="gelöst durch static_assert">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1458178300984" ID="ID_1152672899" MODIFIED="1512926192004" TEXT="Binding-Layer">
|
|
<node CREATED="1458850722203" ID="ID_1565475995" MODIFIED="1512926192004" TEXT="Fehler bei fehlender Funktionalität">
|
|
<node CREATED="1458850733769" ID="ID_764229197" MODIFIED="1458850744620" TEXT="kein Setter"/>
|
|
<node CREATED="1458850746184" ID="ID_105803291" MODIFIED="1458850752370" TEXT="kein Mutator"/>
|
|
</node>
|
|
<node CREATED="1458850782747" ID="ID_1019140953" MODIFIED="1458850793430" TEXT="Umgang mit fehlendem Selector"/>
|
|
<node CREATED="1458934854051" ID="ID_898160956" MODIFIED="1512926192004" TEXT="Binding stärker abschließen">
|
|
<node CREATED="1458934863225" ID="ID_843139682" MODIFIED="1458934897237" TEXT="contentBuffer könnte privat sein">
|
|
<icon BUILTIN="help"/>
|
|
</node>
|
|
<node CREATED="1458934878911" ID="ID_986928457" MODIFIED="1458934893132" TEXT="welche Iteratoren müssen exponiert werden">
|
|
<icon BUILTIN="help"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1460762013033" ID="ID_758721262" MODIFIED="1512926192005" TEXT="Mutation">
|
|
<node CREATED="1460762015777" ID="ID_59179895" MODIFIED="1533608413888">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
erfordert <i>wirklich</i> Kooperation
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="idea"/>
|
|
<node CREATED="1460762025520" ID="ID_955853878" MODIFIED="1460762032675" TEXT="zwischen dem gesendeten Diff"/>
|
|
<node CREATED="1460762033119" ID="ID_863964003" MODIFIED="1460762045704" TEXT="und der empfangenden Implementierungs-Datenstruktur"/>
|
|
</node>
|
|
<node CREATED="1460762065371" ID="ID_698989532" MODIFIED="1533608413889" TEXT="brauche wohl "Introspection light"">
|
|
<icon BUILTIN="smily_bad"/>
|
|
<node CREATED="1460762101046" ID="ID_1593562435" MODIFIED="1460762111448" TEXT="damit ich einen Sub-Scope vorbereiten kann"/>
|
|
<node CREATED="1460762111924" ID="ID_125430023" MODIFIED="1460762120759" TEXT="in separater privater Datenstrukcur"/>
|
|
<node CREATED="1460762121259" ID="ID_1558869553" MODIFIED="1460762308964" TEXT="ist aber nur rein hier im Test ein Problem">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...denn wir verwenden hier als "private" Datenstruktur
|
|
</p>
|
|
<p>
|
|
eine etwas komische Collection von Strings,
|
|
</p>
|
|
<p>
|
|
in die wir die String-Repräsentation der Spec-Payload schreiben.
|
|
</p>
|
|
<p>
|
|
|
|
</p>
|
|
<p>
|
|
In der Praxis dagegen würde man wirklich einen privaten Datentyp verwenden,
|
|
</p>
|
|
<p>
|
|
und dann auch voraussetzen, daß man <i>nur</i> Kinder dieses Typs (oder zuweisungskompatibel) bekommt.
|
|
</p>
|
|
<p>
|
|
|
|
</p>
|
|
<p>
|
|
Mein Poblem hier ist, daß ich in dieser Demonstrations-Datenstruktur keine nested scopes reprä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üne Wiese stellen. Ist ja nur ein Test :-D
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1460762330487" ID="ID_914518092" MODIFIED="1460762395843" TEXT="Nein! Schwein gehabt">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</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_717368167" MODIFIED="1512926192006" TEXT="Beobachtungen">
|
|
<node CREATED="1458868852849" ID="ID_1641586585" MODIFIED="1458869076689" TEXT="Sonderbarer "this"-Typ">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
der Builder in der nested DSL generiert einen sonderbar falschen "this"-Typ,
|
|
</p>
|
|
<p>
|
|
genauer gesagt, eine TYPID die falsch ist.
|
|
</p>
|
|
<p>
|
|
Und zwar kommt es da zum "Übersprechen" von einem Typ-Parameter in den anderen.
|
|
</p>
|
|
<p>
|
|
Im Besonderen hab ich beobachtet, daß, 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 überzeugt, daß 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<TY>()
|
|
</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_263851499" MODIFIED="1512926192006" TEXT="Test">
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1458850521270" ID="ID_534213210" MODIFIED="1512926192007" TEXT="Fälle">
|
|
<arrowlink COLOR="#639ad5" DESTINATION="ID_1333254858" ENDARROW="Default" ENDINCLINATION="1091;0;" ID="Arrow_ID_709688381" STARTARROW="None" STARTINCLINATION="1150;185;"/>
|
|
<icon BUILTIN="flag-yellow"/>
|
|
<node CREATED="1458850526133" ID="ID_55717538" MODIFIED="1458850550109" TEXT="Binden an Sammlung aus Primitiven"/>
|
|
<node CREATED="1458850550705" ID="ID_1923906009" MODIFIED="1458850572315" TEXT="Binden an Sammlung aus Spezialtypen"/>
|
|
</node>
|
|
<node CREATED="1458850656668" ID="ID_307163685" MODIFIED="1512926192007" TEXT="Defaults">
|
|
<node CREATED="1458850660523" ID="ID_326530451" MODIFIED="1460753283653" TEXT="GenNode-verträglicher Payload-Typ">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</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önnten. Denn dann läß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_1240263288" MODIFIED="1458850675197" TEXT="kein Setter"/>
|
|
<node CREATED="1458850675641" ID="ID_736176562" MODIFIED="1458850678564" TEXT="kein Mutator"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1457232752458" FOLDED="true" ID="ID_1490646673" MODIFIED="1533684616156" TEXT="Attribute">
|
|
<icon BUILTIN="full-3"/>
|
|
<node CREATED="1458175823858" ID="ID_1785794072" MODIFIED="1512926192010" TEXT="Design-Grundlagen">
|
|
<node CREATED="1461882686190" ID="ID_233456976" MODIFIED="1472219338718" TEXT="von praktischer Notwendigkeit getrieben">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
wir integrieren Attribute nicht, weil es so schön symmetrisch ist,
|
|
</p>
|
|
<p>
|
|
sondern weil sie essentiell zum Wesen von Objekten gehören.
|
|
</p>
|
|
<p>
|
|
Wenn wir Änderungen an Objekt-Strukturen als Diff erfassen wollen,
|
|
</p>
|
|
<p>
|
|
dann <i>müssen</i> Attribute irgendwie sinnvoll integriert sein
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
</node>
|
|
<node CREATED="1457741673001" ID="ID_1826667029" MODIFIED="1512926192010" TEXT="konkrete Beispiele">
|
|
<icon BUILTIN="info"/>
|
|
<node CREATED="1457741683687" ID="ID_1529941512" MODIFIED="1461888218005" TEXT="Position eines Clips"/>
|
|
<node CREATED="1461888218521" ID="ID_1211555549" MODIFIED="1461888222508" TEXT="Länge eines Clips"/>
|
|
<node CREATED="1461888223024" ID="ID_854712901" MODIFIED="1461888302874" TEXT="Typ eines Markers"/>
|
|
<node CREATED="1461888304126" ID="ID_854691640" MODIFIED="1461888305362" TEXT="..."/>
|
|
</node>
|
|
<node CREATED="1457742434714" ID="ID_1230374921" MODIFIED="1461888342584">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
⟹ <i>immer</i> in der Klasse verankert
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
<node CREATED="1457742434714" ID="ID_261686106" MODIFIED="1461888407600">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
⟹ es geht eigentlich <i>nur</i> um den Wert des Attributes
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1458175861176" FOLDED="true" HGAP="39" ID="ID_887227300" MODIFIED="1533684569244" TEXT="Design-Anforderungen" VSHIFT="7">
|
|
<node CREATED="1458175880034" ID="ID_163174135" MODIFIED="1512926192012" TEXT="...ein Objekt hat schon ein bestimmtes Feld">
|
|
<node CREATED="1458175892400" ID="ID_640596624" MODIFIED="1461888660658" TEXT="Typ"/>
|
|
<node CREATED="1461888661462" ID="ID_1138175982" MODIFIED="1461888668033" TEXT="default-Wert"/>
|
|
<node CREATED="1458175905766" ID="ID_1595003935" MODIFIED="1461888693671">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
manche Felder sind <i>optional</i>
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1461888779999" ID="ID_1274350149" MODIFIED="1512926192012" TEXT="innerer Widerspruch">
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
<node CREATED="1461888830680" ID="ID_812148839" MODIFIED="1461888837867" TEXT="Feld vs Attribut"/>
|
|
<node CREATED="1461888838455" ID="ID_1919503899" MODIFIED="1461888848953" TEXT="das Diff drückt sich in Attributen aus"/>
|
|
<node CREATED="1461888982036" ID="ID_864479720" MODIFIED="1512926192013" TEXT="Umgang mit den Diskrepanzen">
|
|
<icon BUILTIN="help"/>
|
|
<node CREATED="1461889012008" ID="ID_1889833023" MODIFIED="1533608413889" TEXT="Einfügen eines Attributes">
|
|
<node CREATED="1461889021646" ID="ID_1936260059" MODIFIED="1461889026273" TEXT="wo das Feld schon da ist"/>
|
|
<node CREATED="1461889026813" ID="ID_1307987216" MODIFIED="1461889040368" TEXT="wo es kein korrespondierendes Feld gibt"/>
|
|
</node>
|
|
<node CREATED="1461889146846" ID="ID_354158582" MODIFIED="1461889152792" TEXT="Löschen eines Attributes"/>
|
|
<node CREATED="1461889107939" ID="ID_1744229690" MODIFIED="1461889133891" TEXT="Umordnen von Attributen"/>
|
|
</node>
|
|
<node CREATED="1461889187336" ID="ID_829644660" MODIFIED="1512926192015" TEXT="Leitgedanke">
|
|
<font NAME="SansSerif" SIZE="15"/>
|
|
<node CREATED="1461889203662" ID="ID_1763333007" MODIFIED="1461889243250" TEXT="»auf GenNode und Objekt gleichermaßen anwendbar«">
|
|
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
|
|
</node>
|
|
<node CREATED="1461889253087" ID="ID_1128320234" MODIFIED="1533608413908" TEXT="das heißt...">
|
|
<font NAME="SansSerif" SIZE="11"/>
|
|
<node CREATED="1461889261806" ID="ID_1855892827" MODIFIED="1461889621538" TEXT="wende Diff auf GenNode an">
|
|
<font NAME="SansSerif" SIZE="11"/>
|
|
</node>
|
|
<node CREATED="1461889282580" ID="ID_1159487501" MODIFIED="1461889621538" TEXT="wende gleichen Diff auf gebundenes Objekt an">
|
|
<font NAME="SansSerif" SIZE="11"/>
|
|
</node>
|
|
<node CREATED="1461889296634" ID="ID_1774882278" MODIFIED="1461889621537" TEXT="Ergebnis muß semantisch äquivalent sein">
|
|
<font NAME="SansSerif" SIZE="11"/>
|
|
</node>
|
|
<node CREATED="1461889399932" ID="ID_1052073468" MODIFIED="1461889621534">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
unter der Maßgabe,
|
|
</p>
|
|
<p>
|
|
wie ETD ein Objekt repäsentiert
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<font NAME="SansSerif" SIZE="11"/>
|
|
</node>
|
|
<node CREATED="1461889470866" FOLDED="true" ID="ID_404525574" MODIFIED="1533608416277" TEXT="operational">
|
|
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
|
|
<node CREATED="1461889474402" ID="ID_1211544465" MODIFIED="1463672686487" TEXT="alle Informationen, die die Anwendung nicht nutzt">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
"Anwendung" : meint das Anwenden eines Diffs auf ein Ziel-Objekt
|
|
</p>
|
|
<p>
|
|
"nicht nutzen" : meint ignorieren und verwerfen der Information
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1461889550072" ID="ID_48030760" MODIFIED="1461889558442" TEXT="dürfen nur Zustands-Änderungen bewirken"/>
|
|
<node CREATED="1461889558983" ID="ID_1489246908" MODIFIED="1461889796278" TEXT="welche keinen Einfluß auf nachfolgende Diffs haben">
|
|
<arrowlink COLOR="#be5b66" DESTINATION="ID_781150142" ENDARROW="Default" ENDINCLINATION="28;-28;" ID="Arrow_ID_30022331" STARTARROW="None" STARTINCLINATION="13;20;"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1461889656194" HGAP="73" ID="ID_781150142" MODIFIED="1533608413909" TEXT="ist das überhaupt möglich" VSHIFT="23">
|
|
<linktarget COLOR="#be5b66" DESTINATION="ID_781150142" ENDARROW="Default" ENDINCLINATION="28;-28;" ID="Arrow_ID_30022331" SOURCE="ID_1489246908" STARTARROW="None" STARTINCLINATION="13;20;"/>
|
|
<icon BUILTIN="help"/>
|
|
<node CREATED="1461889858863" ID="ID_1367853310" MODIFIED="1461889937247" TEXT="sicher nicht bidirektional">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
meint: ETD -> Objekt und dann später Objekt -> ETD
|
|
</p>
|
|
<p>
|
|
|
|
</p>
|
|
<p>
|
|
warum?
|
|
</p>
|
|
<p>
|
|
Weil sich in der ETD die Reihenfolge ä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_1808149320" MODIFIED="1475506883423" TEXT="aber ETD als Zwischenstufe ist möglich">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
Objekt -> ETD -> 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äßt
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<linktarget COLOR="#807bce" DESTINATION="ID_1808149320" ENDARROW="Default" ENDINCLINATION="671;0;" ID="Arrow_ID_1677374853" SOURCE="ID_1767038604" STARTARROW="Default" STARTINCLINATION="994;0;"/>
|
|
</node>
|
|
<node CREATED="1461890240148" FOLDED="true" ID="ID_1409253452" MODIFIED="1533608416278" TEXT="Schutzmechanismen">
|
|
<node CREATED="1461890266377" ID="ID_513997188" MODIFIED="1461890283701">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
abweisen, was das Kriterium <i>sicher verletzt</i>
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1461890289662" ID="ID_1663916739" MODIFIED="1461890307247" TEXT="Einfügen eines Feldes, das die Klasse nicht kennt"/>
|
|
<node CREATED="1461891798533" ID="ID_748156171" MODIFIED="1461891807616" TEXT="explizites Umordnen (per seek)"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1461892011913" HGAP="227" ID="ID_1407170666" MODIFIED="1525124215165" TEXT="Verhaltensmuster" VSHIFT="11">
|
|
<node CREATED="1461892073089" ID="ID_883084327" MODIFIED="1512926192020" TEXT="default vs mandatory">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
<b>mandatory</b> : Wert muß per Konstruktor gegeben sein
|
|
</p>
|
|
<p>
|
|
<b>default</b> : es gibt einen ausgezeichneten Standardwert
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<node CREATED="1461892285965" ID="ID_440312526" MODIFIED="1533608413911" TEXT="mandatory ">
|
|
<node CREATED="1461892303666" ID="ID_1486672593" MODIFIED="1461892312404" TEXT="Problem der Konstruktor-Repräsentation"/>
|
|
<node CREATED="1461892313049" ID="ID_683528850" MODIFIED="1461892394247" TEXT="einziger Ausweg: komplette ETD-Repräsentation als Wert senden">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
das heißt, in dem ins-Verb ist dann ein komplettes Objekt enthalten,
|
|
</p>
|
|
<p>
|
|
nicht nur eine leere Record-Hülle, die nachfolgend populiert werden kann (aber nicht muß)
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1461892430466" ID="ID_1727811732" MODIFIED="1461892440092" TEXT="ein mandatory-Feld darf nicht gelöscht werden"/>
|
|
</node>
|
|
<node CREATED="1461892444727" ID="ID_1828810203" MODIFIED="1533608413912" TEXT="default">
|
|
<node CREATED="1461892490881" FOLDED="true" ID="ID_577669206" MODIFIED="1533608416279" TEXT="es gibt zwei Grade">
|
|
<node CREATED="1461892496377" ID="ID_1216553390" MODIFIED="1461892579692" TEXT="minder">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
Konstruktor befüllt das Feld halt irgendwie.
|
|
</p>
|
|
<p>
|
|
Ab dem Punkt verhält es sich aber wie ein normales (mandatory) Feld
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1461892554377" ID="ID_1564116180" MODIFIED="1461892615511" TEXT="vollwertig">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
das Objekt selber kann erkennen, ob das Feld sich im "default-Zustand" befindet
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1461892641949" ID="ID_600125030" MODIFIED="1461892653415" TEXT="Einfügen == vom Default-Wert abweichen"/>
|
|
<node CREATED="1461892654148" ID="ID_1086408965" MODIFIED="1461892662590" TEXT="Löschen == zum Default-Wert zurückkehren"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1461966988471" ID="ID_751317533" MODIFIED="1512926192022" TEXT="prüfen vs ignorieren">
|
|
<node CREATED="1461967012164" ID="ID_1380142317" MODIFIED="1533608413912" TEXT="prüfen">
|
|
<icon BUILTIN="forward"/>
|
|
<node CREATED="1461967015883" ID="ID_1980878581" MODIFIED="1461967028022" TEXT="benötigt zusätzliche Mechanismen"/>
|
|
<node CREATED="1461967028489" ID="ID_1694830814" MODIFIED="1461967042164" TEXT="verifiziert Validität der Diff-Nachricht"/>
|
|
</node>
|
|
<node CREATED="1461967044480" ID="ID_810828038" MODIFIED="1533608413913" TEXT="ignorieren">
|
|
<icon BUILTIN="button_cancel"/>
|
|
<node CREATED="1461967051095" ID="ID_328050724" MODIFIED="1461967056946" TEXT="wendet an, was anwendbar ist"/>
|
|
<node CREATED="1461967057462" ID="ID_437076290" MODIFIED="1461967068248" TEXT="alles andere "durchwinken""/>
|
|
</node>
|
|
<node COLOR="#990000" CREATED="1461967003141" HGAP="29" ID="ID_1805886948" MODIFIED="1533608413916" TEXT="Design-Entscheidung" VSHIFT="19">
|
|
<font NAME="SansSerif" SIZE="14"/>
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
<node CREATED="1461967143851" ID="ID_1596604972" MODIFIED="1461967245047">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
ohne Prüfen ist <b>emptySrc</b> nicht implementierbar
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...weil es für <b>emptySrc</b> keine neutrale Antwort gibt.
|
|
</p>
|
|
<p>
|
|
Denn dieses Prädikat wird von der typischen Implementierung des Diff-Applikators
|
|
</p>
|
|
<p>
|
|
in beiden Richtungen verwendet, also sowohl Prüfung auf empty ("expect no further elements"),
|
|
</p>
|
|
<p>
|
|
alsauch der Check, daß überhaupt noch Quellelemente anstehen
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1461967247093" ID="ID_366726823" MODIFIED="1461967294701">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
d.h., man kann nur <i>global auf Prüfung verzichten </i>
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1461967274577" ID="ID_1824726078" MODIFIED="1461967310565">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</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_381561226" MODIFIED="1461967379991" TEXT="Prüfung erfordert eine Flag für jedes bekannte Feld"/>
|
|
<node CREATED="1461967384579" ID="ID_1805227176" MODIFIED="1461967401644" TEXT="diese Flag wird gesetzt, sobald der Diff das Feld "berührt""/>
|
|
<node CREATED="1461967428061" FOLDED="true" ID="ID_766802419" MODIFIED="1533608416280" TEXT="außerdem gibt es noch zwei triviale Basis-Checks">
|
|
<node CREATED="1461967451610" ID="ID_798276463" MODIFIED="1461967462700" TEXT="ist bekannter Attributsname"/>
|
|
<node CREATED="1461967463264" ID="ID_1109004010" MODIFIED="1461967487243">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
Feld unterstützt <b>default</b>-Wert
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1475506680125" HGAP="58" ID="ID_1865970661" MODIFIED="1533608413932" TEXT="Variante" VSHIFT="13">
|
|
<node CREATED="1475506691595" ID="ID_69735021" MODIFIED="1475506704861" TEXT="emptySrc -> hasSrc"/>
|
|
<node CREATED="1475506705641" ID="ID_409132685" MODIFIED="1475506735169" TEXT="und den nicht implementierbaren Fall tolerieren"/>
|
|
<node CREATED="1475506735949" ID="ID_1814707193" MODIFIED="1475506746633" TEXT="im Übrigen: stets prüfen und scheitern">
|
|
<icon BUILTIN="yes"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1475506753523" HGAP="34" ID="ID_845946083" 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_98863612" MODIFIED="1525124215178" TEXT="Spezifikation" VSHIFT="18">
|
|
<cloud COLOR="#fce9c0"/>
|
|
<font NAME="SansSerif" SIZE="12"/>
|
|
<icon BUILTIN="info"/>
|
|
<node CREATED="1461946125744" HGAP="55" ID="ID_1970709109" MODIFIED="1512926192031">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
Auslegung der
|
|
</p>
|
|
<p>
|
|
<font size="5">Primitiven</font>
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<node CREATED="1455927425726" ID="ID_1774195026" MODIFIED="1533608413934" TEXT="hasSrc">
|
|
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
|
|
<node CREATED="1455928216420" ID="ID_259184763" MODIFIED="1464116966043" TEXT="can not sensibly be implemented">
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
</node>
|
|
<node CREATED="1464116995888" ID="ID_892348638" MODIFIED="1464117033135" TEXT="always returns true">
|
|
<icon BUILTIN="yes"/>
|
|
</node>
|
|
<node CREATED="1464116967676" ID="ID_1396378266" MODIFIED="1464117025435">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</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_950488526" MODIFIED="1533608413934" TEXT="skipSrc">
|
|
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
|
|
<icon BUILTIN="closed"/>
|
|
<node CREATED="1464212421708" ID="ID_260959353" MODIFIED="1464212429644" TEXT="prohibited, raise error"/>
|
|
<node CREATED="1455928216420" ID="ID_1837102790" MODIFIED="1464212390729" TEXT="reset to default">
|
|
<icon BUILTIN="button_cancel"/>
|
|
</node>
|
|
<node CREATED="1461964714068" ID="ID_1261372831" MODIFIED="1463690748989" TEXT="mandatory fields raise error">
|
|
<icon BUILTIN="yes"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1455927396505" ID="ID_1033919055" MODIFIED="1533608413935" TEXT="matchSrc">
|
|
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
|
|
<node CREATED="1455928268589" ID="ID_954747330" MODIFIED="1461964779839" TEXT="ID comparison to field known by name"/>
|
|
</node>
|
|
<node CREATED="1455982947867" ID="ID_348226285" MODIFIED="1533608413935" TEXT="injectNew">
|
|
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
|
|
<node CREATED="1455982969073" ID="ID_1599013380" MODIFIED="1463675987940" TEXT="set known field's contents"/>
|
|
<node CREATED="1457047512175" ID="ID_45133594" MODIFIED="1464212464658" TEXT="mandatory fields raise error">
|
|
<icon BUILTIN="button_cancel"/>
|
|
</node>
|
|
<node CREATED="1461964818054" ID="ID_1444647202" MODIFIED="1461964825281" TEXT="unknown fields raise error"/>
|
|
</node>
|
|
<node CREATED="1455927413191" ID="ID_131020445" MODIFIED="1533608413935" TEXT="acceptSrc">
|
|
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
|
|
<node CREATED="1464212476461" ID="ID_503509206" MODIFIED="1464212481606" TEXT="NOP"/>
|
|
<node CREATED="1461964863217" ID="ID_274118585" MODIFIED="1464212474879" TEXT="mark known field as mentioned">
|
|
<icon BUILTIN="button_cancel"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1455928166683" ID="ID_1715452226" MODIFIED="1533608413938" TEXT="accept_until">
|
|
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
|
|
<icon BUILTIN="stop-sign"/>
|
|
<node CREATED="1455928383765" ID="ID_1566496401" MODIFIED="1461965340133" TEXT="nicht implementierbar">
|
|
<font BOLD="true" NAME="SansSerif" SIZE="14"/>
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
</node>
|
|
<node CREATED="1457231714541" ID="ID_1922580473" MODIFIED="1465428399592" TEXT="fraglich: muß vielleicht aus der Sprache entfernt werden">
|
|
<arrowlink COLOR="#592379" DESTINATION="ID_693317592" ENDARROW="Default" ENDINCLINATION="577;0;" ID="Arrow_ID_1115282938" STARTARROW="Default" STARTINCLINATION="1205;231;"/>
|
|
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
|
|
</node>
|
|
<node CREATED="1463675830732" FOLDED="true" ID="ID_1893171223" MODIFIED="1533608416282">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
Einschränkung: <b>accept_until END</b>
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<node CREATED="1463675866200" ID="ID_410463345" MODIFIED="1463675944546" TEXT="ist implementierbar">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...nämlich indem alle Attribute als "berührt" und akzeptiert markiert werden.
|
|
</p>
|
|
<p>
|
|
Somit könnten sofort Zuweisungen als Nächstes passieren
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1463675872239" ID="ID_467354174" MODIFIED="1463675882809" TEXT="ist sehr sinnvoll"/>
|
|
<node CREATED="1463675883853" ID="ID_178701147" MODIFIED="1464212598924" TEXT="könnte sogar Standardfall sein">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node CREATED="1464212588886" ID="ID_1883145154" MODIFIED="1464212594754" TEXT="ist effektiv NOP">
|
|
<icon BUILTIN="yes"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1455927413191" ID="ID_216877268" MODIFIED="1533608413939" TEXT="findSrc">
|
|
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
|
|
<icon BUILTIN="closed"/>
|
|
<node CREATED="1461946965569" ID="ID_229931358" MODIFIED="1461963646230" TEXT="Umordnen wird nicht unterstützt"/>
|
|
<node CREATED="1461963648481" ID="ID_1893776707" MODIFIED="1461963654996" TEXT="löst einen Logik-Fehler aus"/>
|
|
</node>
|
|
<node CREATED="1455928184504" ID="ID_850800360" MODIFIED="1533608413940" TEXT="assignElm">
|
|
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
|
|
<node CREATED="1461963697714" ID="ID_1619863394" MODIFIED="1461963707499" TEXT="Setter aufrufen"/>
|
|
<node CREATED="1461963686556" ID="ID_662132890" MODIFIED="1461963697214" TEXT="namentlich bekanntes Feld"/>
|
|
<node CREATED="1461963708449" ID="ID_1854747377" MODIFIED="1461963718804" TEXT="nicht bekannte Felder lösen Fehler aus"/>
|
|
</node>
|
|
<node CREATED="1455928189695" ID="ID_1575249106" MODIFIED="1533608413941" TEXT="mutateChild">
|
|
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
|
|
<node CREATED="1461963754651" ID="ID_843075689" MODIFIED="1461963776115">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
analog wie <b>assignElm</b>
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1461963748604" ID="ID_465316362" MODIFIED="1461963753895" TEXT="namentlich bekanntes Feld"/>
|
|
<node CREATED="1461963777440" ID="ID_207528376" MODIFIED="1461963787443" TEXT="aber nicht Setter, sondern Mutator bauen"/>
|
|
</node>
|
|
<node CREATED="1464113688645" ID="ID_1227423402" 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_656884609" MODIFIED="1464113954773" TEXT="hier NOP implementiert"/>
|
|
<node CREATED="1464113740005" ID="ID_1570177974" MODIFIED="1464114004153">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
das heißt, es findet <b>keine Verifikation</b> statt
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1455928193863" ID="ID_579601999" MODIFIED="1533608413943" TEXT="CTOR">
|
|
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
|
|
<node CREATED="1461946885292" ID="ID_319452226" MODIFIED="1461965407132" TEXT="mark all known fields as not yet mentioned"/>
|
|
<node COLOR="#e5500c" CREATED="1461946693701" ID="ID_583693798" 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_388598327" MODIFIED="1512926192037" VSHIFT="21">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
zu bindende
|
|
</p>
|
|
<p>
|
|
<font size="4">Operationen</font>
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<node CREATED="1458175991795" ID="ID_1544297658" MODIFIED="1533608413943" TEXT="fest eingebaut...">
|
|
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
|
|
<node CREATED="1458175942866" FOLDED="true" ID="ID_321386709" MODIFIED="1533608416283" TEXT="match">
|
|
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
|
|
<node CREATED="1458177113846" ID="ID_885225658" MODIFIED="1461966728693" TEXT="prüft ID-Name der Spec gegen Feldname des Zieles"/>
|
|
</node>
|
|
<node CREATED="1458176002762" FOLDED="true" ID="ID_233019425" MODIFIED="1533608416284" TEXT="selector">
|
|
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
|
|
<node CREATED="1458177605869" ID="ID_1275056489" MODIFIED="1461966119517" TEXT="ein default-Selector ist automatisch stets konfiguriert"/>
|
|
<node CREATED="1461966120082" ID="ID_92075200" MODIFIED="1461966665670" TEXT="default ist Prüfen, ob die Spec ein Attribut bezeichnet"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1458175991795" ID="ID_998867093" MODIFIED="1533608413946" TEXT="optional...">
|
|
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
|
|
<node CREATED="1458176008025" FOLDED="true" ID="ID_384595680" MODIFIED="1533608416285" TEXT="setter">
|
|
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
|
|
<node CREATED="1458177697657" ID="ID_1292886690" MODIFIED="1458177953095" TEXT="erlaubt Zuweisung"/>
|
|
<node CREATED="1458177712798" ID="ID_1904681311" MODIFIED="1458177953095" TEXT="setzt Auswahl per match voraus"/>
|
|
<node CREATED="1458177735635" FOLDED="true" ID="ID_88342940" MODIFIED="1533608415979" TEXT="Ersatz">
|
|
<icon BUILTIN="button_cancel"/>
|
|
<node CREATED="1458177738499" ID="ID_738570524" MODIFIED="1458177953095" TEXT="keiner"/>
|
|
<node CREATED="1458177741155" ID="ID_504602301" MODIFIED="1458177953095" TEXT="dann gibt's eben keine Zuweisung"/>
|
|
<node CREATED="1458177749233" ID="ID_1737530420" MODIFIED="1458177953095" TEXT="auch nicht nötig bei sub-Scopes"/>
|
|
<node CREATED="1458177803730" ID="ID_1570261235" MODIFIED="1458177953095" TEXT="auch nicht nötig bei immutable values"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1458176018087" FOLDED="true" ID="ID_280816523" MODIFIED="1533608416287" TEXT="mutator">
|
|
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
|
|
<node CREATED="1458177821712" ID="ID_850096330" MODIFIED="1458177953095" TEXT="baut einen sub-Mutator für einen nested scope"/>
|
|
<node CREATED="1458177851988" ID="ID_835071729" MODIFIED="1458177953095" TEXT="setzt Auswahl per match voraus"/>
|
|
<node CREATED="1458177857939" FOLDED="true" ID="ID_1231660130" MODIFIED="1533608415981" TEXT="Ersatz">
|
|
<icon BUILTIN="button_cancel"/>
|
|
<node CREATED="1458177861162" ID="ID_1234972537" MODIFIED="1458177953095" TEXT="keiner"/>
|
|
<node CREATED="1458177863506" ID="ID_668640033" MODIFIED="1463690716478" TEXT="dann gibts eben keine Behandlung von nested scopes"/>
|
|
<node CREATED="1458177874760" ID="ID_98241568" MODIFIED="1458177953095" TEXT="auch nicht nötig bei primitive values"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1463687547746" FOLDED="true" ID="ID_241762171" MODIFIED="1533608416289" TEXT="defaulter">
|
|
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
|
|
<icon BUILTIN="button_cancel"/>
|
|
<node CREATED="1463687553569" ID="ID_695577132" MODIFIED="1463687602782" TEXT="veranlaßt Rückkehr zum default-Zustand"/>
|
|
<node CREATED="1463687629319" ID="ID_613393149" MODIFIED="1463687644409" TEXT="erfordert explizite Unterstützung durch das Zielobjekt"/>
|
|
<node CREATED="1463687644973" ID="ID_1677329552" MODIFIED="1463687741843" TEXT="fragwürdig">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</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_450096384" MODIFIED="1533608415983" TEXT="Ersatz">
|
|
<icon BUILTIN="button_cancel"/>
|
|
<node CREATED="1463687668218" ID="ID_205365114" MODIFIED="1463687670469" TEXT="keiner"/>
|
|
<node CREATED="1463687672649" ID="ID_244442064" MODIFIED="1463687689779" TEXT="dann kann eben nur gebunden werden"/>
|
|
<node CREATED="1463687865175" ID="ID_1290398590" MODIFIED="1463687869987" TEXT="normalerweise verzichtbar"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1458175960615" FOLDED="true" ID="ID_806805692" MODIFIED="1533608416291" TEXT="ctor">
|
|
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
|
|
<icon BUILTIN="button_cancel"/>
|
|
<node CREATED="1461966391478" ID="ID_110542982" MODIFIED="1461966404134" TEXT="wird dem Setter vorgeschaltet"/>
|
|
<node CREATED="1458177315803" ID="ID_1572942300" MODIFIED="1458177953094" TEXT="konstruiert aus der Spec ein neues Element"/>
|
|
<node CREATED="1461966815950" ID="ID_156023396" MODIFIED="1461966831208" TEXT="notwendig bei Attribut-Werten, die tatsächlich Objekte sind"/>
|
|
<node CREATED="1458177335632" ID="ID_1991494041" MODIFIED="1458177953094" TEXT="muß typischerweise die Interna des Zieles kennen"/>
|
|
<node CREATED="1458177347622" FOLDED="true" ID="ID_1000370922" MODIFIED="1533608415984" TEXT="Ersatz">
|
|
<icon BUILTIN="idea"/>
|
|
<node CREATED="1458177489444" ID="ID_1463500618" MODIFIED="1461966901007">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
unterstelle Ziel als <i>konstruierbar</i> aus Payload
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1463691200369" ID="ID_542600281" MODIFIED="1463691259602" TEXT="überflüssiges Konzept">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
da effektiv bereits der Setter diese Funktionalität enthalten kann und muß,
|
|
</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_1811113811" MODIFIED="1512926192045" TEXT="Variationen" VSHIFT="4">
|
|
<node CREATED="1464117242535" ID="ID_1487426510" MODIFIED="1512926192045" TEXT="Binden auf eine klassische struct">
|
|
<node CREATED="1464117391859" ID="ID_1783492476" MODIFIED="1464117396430" TEXT="Setter weisen einfach zu"/>
|
|
<node CREATED="1464117397026" ID="ID_1635700062" MODIFIED="1464117404773" TEXT="bereits die Neuanlage muß alles populieren"/>
|
|
</node>
|
|
<node CREATED="1464117250262" ID="ID_1846973342" MODIFIED="1512926192046" TEXT="Binden auf ein Objekt mit Initialisierungs-Semantik">
|
|
<node CREATED="1464117412896" ID="ID_1405299167" MODIFIED="1464117450662" TEXT="Erzeugungs-Diff muß mit den Anforderungen des Konstruktors harmonieren"/>
|
|
<node CREATED="1464117487974" ID="ID_1923901911" MODIFIED="1464117499776" TEXT="Rückkehr zum Default wird nicht unterstützt / abgebildet"/>
|
|
</node>
|
|
<node CREATED="1464117317517" ID="ID_1395959611" MODIFIED="1512926192046" TEXT="Binden auf "konzeptionelle" Properties">
|
|
<node CREATED="1464117513722" ID="ID_101207705" MODIFIED="1464117537611" TEXT="der "Key" ist nur eine ID, um speziellen Zugriffsmechanismus auszulösen"/>
|
|
<node CREATED="1464117553885" ID="ID_1617675711" MODIFIED="1464117567271" TEXT="u.U ist man überhaupt nur an sub-Mutation interessiert"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1458178113697" FOLDED="true" HGAP="61" ID="ID_38103760" MODIFIED="1533684598672" TEXT="Design-Schlußfolgerungen" VSHIFT="48">
|
|
<node CREATED="1463687362843" FOLDED="true" HGAP="116" ID="ID_775516687" MODIFIED="1533684596547" TEXT="Eingrenzung" VSHIFT="-28">
|
|
<node CREATED="1463687373889" ID="ID_155516876" MODIFIED="1512926192049" TEXT="Art von Attributen">
|
|
<node CREATED="1463687402462" ID="ID_1119981147" MODIFIED="1533608413953" TEXT="Objekt-Feld">
|
|
<icon BUILTIN="forward"/>
|
|
<node CREATED="1463689795357" ID="ID_1774256004" MODIFIED="1463689801592" TEXT="kann nur zugewiesen werden"/>
|
|
<node CREATED="1463689912853" FOLDED="true" ID="ID_592726515" MODIFIED="1533608416292">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
<b>injectNew</b> tolerieren
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="help"/>
|
|
<node CREATED="1463690238314" ID="ID_1366435072" MODIFIED="1463690270664" TEXT="eigentlich redundant">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
....man könnte genausogut auch beim ersten Mal zuweisen
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1463690487032" ID="ID_1618528789" MODIFIED="1463690595034" TEXT="Aber: isomorph zu GenNode">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
denn die Diff-Anwendung auf GenNode unterstützt Zuweisung
|
|
</p>
|
|
<p>
|
|
ausschließlich bei schon existierenden Elementen. Demnach muß dort auch jedes Attribut
|
|
</p>
|
|
<ul>
|
|
<li>
|
|
entweder schon mit dem Konstruktor mit gegeben worden sein
|
|
</li>
|
|
<li>
|
|
oder vorher einmal explizit eingefügt
|
|
</li>
|
|
</ul>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1463687408597" ID="ID_783243290" MODIFIED="1533608413954" TEXT="optional Property">
|
|
<icon BUILTIN="stop-sign"/>
|
|
<node CREATED="1463688083594" ID="ID_1885891636" MODIFIED="1463688087910" TEXT="fragwürdiger Nutzen"/>
|
|
<node CREATED="1463688088457" ID="ID_1722180442" MODIFIED="1463688100116" TEXT="mutet "theoretisch" an"/>
|
|
<node CREATED="1463688147802" FOLDED="true" ID="ID_1259353240" MODIFIED="1533608416294" TEXT="Alternative">
|
|
<node CREATED="1463688157472" ID="ID_1130562584" MODIFIED="1463688173746" TEXT="auf "mindere defaults" setzen"/>
|
|
<node CREATED="1463688215752" ID="ID_1340272500" MODIFIED="1463688230896" TEXT="kann man einfach mitlaufen lassen"/>
|
|
<node CREATED="1463688184269" ID="ID_1652024004" MODIFIED="1463688193863" TEXT="immer mögliche Degradierung des Konzepts"/>
|
|
<node CREATED="1463688232550" FOLDED="true" ID="ID_1079102386" MODIFIED="1533608415985" TEXT="fehlende Funktionalität ersetzbar">
|
|
<icon BUILTIN="idea"/>
|
|
<node CREATED="1463688247980" ID="ID_720310622" MODIFIED="1463688253639" TEXT="durch komplettes Neukonstruieren"/>
|
|
<node CREATED="1463688254251" ID="ID_1166606306" MODIFIED="1463688262902" TEXT="durch eine explizite Reset-Methode"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1463687451791" ID="ID_682582613" MODIFIED="1533608413956" TEXT="Attribut-Map">
|
|
<icon BUILTIN="button_cancel"/>
|
|
<node CREATED="1463687461925" ID="ID_39763189" MODIFIED="1463687496231" TEXT="hier ausgeschlossen">
|
|
<icon BUILTIN="yes"/>
|
|
</node>
|
|
<node CREATED="1463687466573" ID="ID_1853473792" MODIFIED="1475507021278" TEXT="implementierbar auf Basis des Collection-Binding">
|
|
<linktarget COLOR="#9f96d9" DESTINATION="ID_1853473792" ENDARROW="Default" ENDINCLINATION="41;-121;" ID="Arrow_ID_503281678" SOURCE="ID_1112268061" STARTARROW="Default" STARTINCLINATION="1873;0;"/>
|
|
</node>
|
|
<node CREATED="1463687484338" ID="ID_1009085517" MODIFIED="1463687491613" TEXT="könnte für GenNode relevant sein"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1463691267608" ID="ID_1554269824" MODIFIED="1512926192052" TEXT="Typisierung">
|
|
<node CREATED="1463691273431" ID="ID_1711015726" MODIFIED="1463691276947" TEXT="pro Attribut"/>
|
|
<node CREATED="1463691277726" ID="ID_716698874" MODIFIED="1533608413957" TEXT="implizit">
|
|
<node CREATED="1463691290845" ID="ID_1981578828" MODIFIED="1464226408020" TEXT="das Setter-lambda nimmt einen Wert"/>
|
|
<node CREATED="1464226412567" FOLDED="true" ID="ID_1195950141" MODIFIED="1533608416295" TEXT="der Wert-Typ muß einer der GenNode-Payload-Typen sein">
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1464227158027" ID="ID_262712037" MODIFIED="1464227176058" TEXT="TODO: dies zur compile-Zeit prüfen">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1463691359988" ID="ID_139397516" MODIFIED="1464226506135" TEXT="der Setter muß jedwede weitere Konvertierung in andere Typen selber machen"/>
|
|
<node CREATED="1464226461041" ID="ID_401616087" MODIFIED="1464226487843" TEXT="die Implementierung greift auf den passenden GenNode-Payload zu"/>
|
|
<node CREATED="1463691372258" ID="ID_1648677750" MODIFIED="1463691550094" TEXT="alle Typkonvertierungs-Fragen auf client abgewälzt"/>
|
|
<node CREATED="1463691552514" ID="ID_1882798051" MODIFIED="1463691645252" TEXT="das ist gut so">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...denn wir vermeiden dadurch Komplexität.
|
|
</p>
|
|
<p>
|
|
Der gesendete Diff muß 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_909001007" MODIFIED="1512926192054" TEXT="Striktheit">
|
|
<node CREATED="1463691716821" ID="ID_414439233" MODIFIED="1463691724243" TEXT="soweit einfach zu gewährleisten">
|
|
<icon BUILTIN="yes"/>
|
|
</node>
|
|
<node CREATED="1463691725515" ID="ID_947499289" MODIFIED="1463691741484" TEXT="d.h. soweit nicht zusätzlicher State notwendig ist"/>
|
|
<node CREATED="1463691767421" ID="ID_993508973" MODIFIED="1463691780901" TEXT="Flexibilität muß stets praktisch gerechtfertigt sein">
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1463691793010" ID="ID_1079571503" MODIFIED="1512926192056" TEXT="Fälle">
|
|
<node CREATED="1463691796825" ID="ID_1459507376" MODIFIED="1463691928935" TEXT="Setter">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
d.h. der Attributwert hat Wertsemantik und wird einfach zugewiesen
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1463691804696" ID="ID_1039735883" MODIFIED="1463692035179" TEXT="Mutator">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</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_175488317" MODIFIED="1463691814860" TEXT="keine Mischformen">
|
|
<icon BUILTIN="yes"/>
|
|
</node>
|
|
<node CREATED="1463692054415" ID="ID_1755055624" MODIFIED="1533608413958">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
Problem: <i>immutable values</i>
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<node CREATED="1463692505987" ID="ID_113919280" MODIFIED="1463692515040" TEXT="wirklich ein Problem?">
|
|
<icon BUILTIN="help"/>
|
|
</node>
|
|
<node CREATED="1463692519993" ID="ID_1177616097" MODIFIED="1463692550512" TEXT="Diff handelt ohnehin nur von veränderbaren Dingen"/>
|
|
<node CREATED="1463692663853" FOLDED="true" ID="ID_953408463" MODIFIED="1533608416296" TEXT="Aber: wie ändert man die Länge eins Clips im UI?">
|
|
<node CREATED="1463695438538" ID="ID_744412186" MODIFIED="1463695450620" TEXT="indem man sich auf ein Präsentations-Grid bezieht"/>
|
|
<node CREATED="1463695454504" ID="ID_945765975" MODIFIED="1463695469602" TEXT="und folglich nur Grid-Punkt-Koordinaten ändert"/>
|
|
<node CREATED="1463695472134" ID="ID_852324151" MODIFIED="1463695494714" TEXT="die eigentlichen Time-Entitäten leben in der Session, nicht im UI">
|
|
<icon BUILTIN="yes"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1463695573392" FOLDED="true" ID="ID_1066626880" MODIFIED="1533608416298" TEXT="im Übrigen: Problem des client-Codes">
|
|
<node CREATED="1463695588814" ID="ID_1661716485" MODIFIED="1463695605096" TEXT="man kann einen time::Mutator erzeugen"/>
|
|
<node CREATED="1463695605708" ID="ID_480704465" MODIFIED="1463695620401" TEXT="es gibt vorgefertigte EmbeddedMutators">
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
<node CREATED="1463695633144" ID="ID_1677066412" MODIFIED="1463695657196">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
das alles passiert dann <i>im</i> Lambda
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1463695640231" ID="ID_176647136" MODIFIED="1463695645090" TEXT="und ist somit nicht unser Problem"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1463849505993" HGAP="42" ID="ID_493843802" MODIFIED="1533608413963" VSHIFT="25">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
Dilemma: <i>defaultable fields</i>
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
<node CREATED="1463849536789" FOLDED="true" ID="ID_864537854" MODIFIED="1533608416299" TEXT="ich möchte sie unterstützen">
|
|
<node CREATED="1463849545196" ID="ID_1187170275" MODIFIED="1463849547316" TEXT="warum">
|
|
<icon BUILTIN="help"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1463849556474" ID="ID_73579891" MODIFIED="1463849682530" TEXT="Unterstützung muß konsistent sein">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</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> war, und nun explizit gesetzt wird,
|
|
</p>
|
|
<p>
|
|
muß dies als INS geschehen, denn eine Zuweisung an nicht aufgeführtes Element ist verboten
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1463849716869" ID="ID_712482848" 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_865585394" MODIFIED="1463849778956">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
folglich ein Problem,
|
|
</p>
|
|
<p>
|
|
zu erkennen, wenn wir fertig sind
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1463849986345" FOLDED="true" ID="ID_1305704801" MODIFIED="1533608416301" TEXT="genauer...">
|
|
<node CREATED="1463850017285" ID="ID_656883117" MODIFIED="1463850033879" TEXT="wenn ein feld zwar gebunden ist"/>
|
|
<node CREATED="1463850034699" ID="ID_1531134347" MODIFIED="1463850053756" TEXT="aber bisher keinen Wert bekommen hat"/>
|
|
<node CREATED="1463850060359" ID="ID_1083372309" MODIFIED="1463850081800" TEXT="dann darf der Diff es auch nicht per pick aufführen"/>
|
|
<node CREATED="1463850086044" ID="ID_1096436471" MODIFIED="1463850099574" TEXT="wenn dann alle mandatory fields behandelt sind"/>
|
|
<node CREATED="1463850100634" ID="ID_1329120598" MODIFIED="1463850243005" TEXT="glauben wir, wir sind noch nicht fertig">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
....weil das defaultable field noch nicht vom Diff berührt wurde.
|
|
</p>
|
|
<p>
|
|
Aber es ist kein optional field, d.h. wir haben keine Flag, die es als "defaulted" kennzeichnet
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1463850138853" FOLDED="true" ID="ID_1262990387" MODIFIED="1533608416302" TEXT="also ist das Grundproblem">
|
|
<icon BUILTIN="idea"/>
|
|
<node CREATED="1463850144180" ID="ID_103581818" MODIFIED="1463850157454" TEXT="daß der TreeMutator global stateless ist"/>
|
|
<node CREATED="1463850163257" ID="ID_1219321798" MODIFIED="1463850171716" TEXT="denn er wird immer wieder neu konstruiert"/>
|
|
<node CREATED="1463850280082" ID="ID_1381914386" MODIFIED="1463850294324">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
Lösung: <b>alles immer explizit</b>
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="help"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1463934907474" FOLDED="true" ID="ID_761652333" MODIFIED="1533608416304" TEXT="Auswege">
|
|
<node CREATED="1463934969522" FOLDED="true" ID="ID_960243774" MODIFIED="1533608415986" TEXT="keine optional fields">
|
|
<node COLOR="#a0345c" CREATED="1463937048979" ID="ID_861548194" MODIFIED="1463937120794" TEXT="widerspricht den Anforderungen">
|
|
<icon BUILTIN="stop-sign"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1463935105351" FOLDED="true" ID="ID_1357485921" MODIFIED="1533608415988" TEXT="Protokoll-Auflagen">
|
|
<node CREATED="1463935116670" ID="ID_1375491306" MODIFIED="1463935125304" TEXT="nach dem ersten Durchgang muß alles gebunden sein"/>
|
|
<node CREATED="1463935126461" ID="ID_774412987" MODIFIED="1463935247552" TEXT="wenn ungebundene optionals, stets Abschließen mit "after END""/>
|
|
<node COLOR="#a0345c" CREATED="1463937146214" ID="ID_1154054760" MODIFIED="1463937452255" TEXT="attraktiv, aber unehrlich">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
diese Lösung war zunächst mein Favorit.
|
|
</p>
|
|
<p>
|
|
Sie erscheint sehr elegant, weil man im TreeMutator <i>überhaupt nichts</i> dafür tun muß.
|
|
</p>
|
|
<p>
|
|
Und die Zusatz-Forderung, daß dann eben das Diff richtig gesendet werden muß,
|
|
</p>
|
|
<p>
|
|
erscheint "geschenkt", da wir ohnehin zunächst einmal die Diffs explizit im Code erzeugen.
|
|
</p>
|
|
<p>
|
|
|
|
</p>
|
|
<p>
|
|
Aber, nach längerer Ü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ärbar und schwer wartbar machen. Das ist die Art von "Features",
|
|
</p>
|
|
<p>
|
|
für die man sich nach einiger Zeit entschuldigen muß.
|
|
</p>
|
|
<p>
|
|
|
|
</p>
|
|
<p>
|
|
Und noch schlimmer: eigentlich läuft dieser Ansatz darauf hinaus, die Konsistenzprüfung
|
|
</p>
|
|
<p>
|
|
am Ende zu deaktivieren. Nur wir machen das nicht explizit, sondern durch die Hintertü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_1084188576" MODIFIED="1533608415990" TEXT="dem Mutator sagen, was optional ist">
|
|
<node CREATED="1463935368308" ID="ID_1008223435" MODIFIED="1463935375919" TEXT="was grundsätzlich optional sein kann"/>
|
|
<node CREATED="1463935377123" ID="ID_970486772" MODIFIED="1463935387005" TEXT="was aktuell nicht gebunden ist"/>
|
|
<node COLOR="#a0345c" CREATED="1463937178689" ID="ID_1161021042" MODIFIED="1463937550363" TEXT="Over-Engineering / Lösung eines nicht vorhandenen Problems">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...denn unter dem Strich würden wir hiermit volle Unterstützung für opitonale Attribute einführen,
|
|
</p>
|
|
<p>
|
|
also eine Attribut-Semantik auf eine Feld-Semantik draufpflanzen.
|
|
</p>
|
|
<p>
|
|
Aber in der vorausgegangenen Analyse habe ich mich schon davon überzeugt,
|
|
</p>
|
|
<p>
|
|
daß wir keine Attribut-Semantik brauchen. Und wenn doch, dann bietet das Diff-System
|
|
</p>
|
|
<p>
|
|
immer noch die Möglichkeit, die Attribute explizit als Sammlung darzustellen.
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="stop-sign"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1463935030953" ID="ID_540672245" MODIFIED="1463938073583">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
auf die <i>empty</i>-Prüfung am Ende verzichten
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<arrowlink COLOR="#f36478" DESTINATION="ID_1554206938" ENDARROW="Default" ENDINCLINATION="181;0;" ID="Arrow_ID_389060908" STARTARROW="None" STARTINCLINATION="181;0;"/>
|
|
<icon BUILTIN="forward"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1463937883299" HGAP="85" ID="ID_271104970" MODIFIED="1533608413968" TEXT="Konsequenzen" VSHIFT="26">
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
<node CREATED="1463937922318" FOLDED="true" ID="ID_74130402" MODIFIED="1533608416307" TEXT="isEmpty">
|
|
<node CREATED="1463937972255" ID="ID_1554206938" MODIFIED="1463938146376" TEXT="muß umdefiniert werden">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
denn in den meisten, wichtigsten Fällen get es um einen non-empty-check,
|
|
</p>
|
|
<p>
|
|
bevor ein anderes Verifikations-Prädikat angewendet wird.
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<linktarget COLOR="#f36478" DESTINATION="ID_1554206938" ENDARROW="Default" ENDINCLINATION="181;0;" ID="Arrow_ID_389060908" SOURCE="ID_540672245" STARTARROW="None" STARTINCLINATION="181;0;"/>
|
|
</node>
|
|
<node CREATED="1463937980222" ID="ID_1669470430" MODIFIED="1463937986216" TEXT="kann nicht mehr negativ geprüft werden"/>
|
|
<node CREATED="1463937988180" ID="ID_1353983852" MODIFIED="1463938000454" TEXT="das gilt leider für alle Bindings"/>
|
|
<node CREATED="1464212233893" ID="ID_1520677416" MODIFIED="1464212254420" TEXT="umdrehen in: hasSrc">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node CREATED="1463938033527" FOLDED="true" ID="ID_165279544" MODIFIED="1533608415993" TEXT="neue Primitive: completeScope">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1464113590258" ID="ID_1613216716" MODIFIED="1464113600260" TEXT="auch ein hook für Aufräum-Arbeiten"/>
|
|
<node CREATED="1464113600897" ID="ID_1783943539" MODIFIED="1464113642335" TEXT="return true -- wenn alles sauber ist"/>
|
|
<node CREATED="1464113642899" ID="ID_468050192" MODIFIED="1464113648966" TEXT="kann NOP implementiert werden"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1464114047781" FOLDED="true" ID="ID_669832549" MODIFIED="1533608416308" TEXT="reduzierte Verifikation">
|
|
<icon BUILTIN="yes"/>
|
|
<node CREATED="1464114078672" ID="ID_72653804" MODIFIED="1464114085171" TEXT="nicht bekannte Felder werden erkannt"/>
|
|
<node CREATED="1464114086111" ID="ID_518116356" MODIFIED="1464114139188" TEXT="der Versuch von Umordnungen wird erkannt"/>
|
|
<node COLOR="#990000" CREATED="1464114156574" ID="ID_408810628" MODIFIED="1464114190655" TEXT="fehlende Angaben werden nicht bemerkt"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1461897111747" HGAP="79" ID="ID_1690728106" MODIFIED="1512926192064" TEXT="Ein Attribut oder viele Attribute" VSHIFT="17">
|
|
<icon BUILTIN="help"/>
|
|
<node CREATED="1463696053440" ID="ID_564525411" MODIFIED="1464226693401" TEXT="Standardfall: eine kleine Zahl von Attributen ">
|
|
<icon BUILTIN="yes"/>
|
|
</node>
|
|
<node CREATED="1463696031715" ID="ID_1300041378" MODIFIED="1464226781810" TEXT=""ein Attribut" ist aber der natürliche Basisfall für die Implementierung"/>
|
|
<node CREATED="1463695809296" ID="ID_780490723" MODIFIED="1464226736308" TEXT="problematisch sind Selektor und (ignorierte) Reihenfolge">
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1464226806914" HGAP="25" ID="ID_1103913128" MODIFIED="1512926192065" TEXT="Selector" VSHIFT="5">
|
|
<icon BUILTIN="button_cancel"/>
|
|
<node CREATED="1464226813953" ID="ID_29622528" MODIFIED="1464226834307" TEXT="fest verdrahtet: istAttribut"/>
|
|
<node CREATED="1464226834831" ID="ID_585845912" MODIFIED="1464226848617" TEXT="Verzicht auf einen konfigurierbaren Selector"/>
|
|
<node CREATED="1464226849277" ID="ID_449408444" MODIFIED="1464226870862" TEXT="im Zweifelsfall: anderen »onion-Layer« verwenden"/>
|
|
<node CREATED="1464226871930" ID="ID_569490118" MODIFIED="1464226897116" TEXT="gut zur Reduktion der Komplexität">
|
|
<icon BUILTIN="ksmiletris"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1461894614295" ID="ID_1919790561" MODIFIED="1512926192065" TEXT="Attribut-Glieder">
|
|
<node CREATED="1461894619054" ID="ID_1860006379" MODIFIED="1512926192066" TEXT="implementieren die API-Primitive">
|
|
<node CREATED="1461894676063" ID="ID_1773874682" MODIFIED="1461894678714" TEXT="durch Aktion"/>
|
|
<node CREATED="1461894679190" ID="ID_1990110249" MODIFIED="1461894683857" TEXT="durch Ignorieren"/>
|
|
<node CREATED="1461894684326" ID="ID_744174163" MODIFIED="1461894692888" TEXT="als Fehler"/>
|
|
</node>
|
|
<node CREATED="1461894634029" ID="ID_1447610701" MODIFIED="1464226938524" TEXT="fügen sich natürlich durch Layering zusammen"/>
|
|
<node CREATED="1461894666248" ID="ID_1972218753" MODIFIED="1464226987286" TEXT="Setter / Mutator durch Template-Spezialisierung"/>
|
|
<node CREATED="1464226992090" ID="ID_632987149" MODIFIED="1512926192066" TEXT="lineare Suche">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1464227021205" ID="ID_1138709182" MODIFIED="1464227032960" TEXT="akzeptabel für < 30 Attribute"/>
|
|
<node CREATED="1464227042771" ID="ID_1594139733" MODIFIED="1464227114093" TEXT="vermeidet heap-basierte Collection">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
jedwede "bessere" Implementierung muß zwingend einen Container verwenden,
|
|
</p>
|
|
<p>
|
|
der dann die Lambdas für die einzelnen Setter auf den Heap legt.
|
|
</p>
|
|
<p>
|
|
Das ist hier tatsä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_691018374" MODIFIED="1533684574690" TEXT="Implementierung" VSHIFT="66">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1464227218795" ID="ID_1100206442" MODIFIED="1512926192068" TEXT="ist grundsätzlich "schon da"">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
....durch meinen allerersten Draft,
|
|
</p>
|
|
<p>
|
|
für den ich damals gezwungen war, die GenNode zu erfinden :)
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="idea"/>
|
|
<node COLOR="#338800" CREATED="1464227273572" ID="ID_1669070695" MODIFIED="1465428151809" TEXT="TODO: alten Testfall anpassen">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1464227285562" ID="ID_908196685" MODIFIED="1465428159480" TEXT="TODO: Setter aus erstem Entwurf vom TreeMutator-API entfernen">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1464227227610" ID="ID_392179794" MODIFIED="1464227235981" TEXT="aber: alle Primitive durchimplementieren"/>
|
|
<node COLOR="#338800" CREATED="1464386998240" ID="ID_1575821815" MODIFIED="1512926192069" TEXT="key: EntryID">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1464396284551" ID="ID_608089097" MODIFIED="1512926192069" TEXT="Problem: sanitise">
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
<node CREATED="1464396756424" ID="ID_1262469672" MODIFIED="1464397132659" TEXT="nur US-ASCII">
|
|
<icon BUILTIN="info"/>
|
|
</node>
|
|
<node CREATED="1464396761967" ID="ID_290057129" MODIFIED="1464397146966" TEXT="erweiterte Zeichen bedingen Locale">
|
|
<icon BUILTIN="button_cancel"/>
|
|
</node>
|
|
<node CREATED="1464396769974" ID="ID_1758045716" MODIFIED="1533608413970" TEXT="und welche dann??">
|
|
<node CREATED="1464396835581" ID="ID_1451158687" MODIFIED="1464396859658" TEXT="System-Locale: Recipe for Desaster"/>
|
|
<node CREATED="1464396793123" ID="ID_1031603106" MODIFIED="1464396815972" TEXT="en_US.UTF-8"/>
|
|
<node CREATED="1464396816696" ID="ID_75103205" MODIFIED="1464396866584" TEXT="Einschränkung nicht sinnvoll zu begründen">
|
|
<icon BUILTIN="yes"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1464396320922" ID="ID_1981813349" MODIFIED="1512926192070" TEXT="GenNode umgeht das (bewußt)">
|
|
<node CREATED="1464396885391" ID="ID_1510453315" MODIFIED="1464397164031" TEXT="Begründung: interne Schnittstelle">
|
|
<icon BUILTIN="info"/>
|
|
</node>
|
|
<node CREATED="1464396899252" ID="ID_1555498938" MODIFIED="1464396964843" TEXT="verwendet bereits valide Symbole">
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
<node CREATED="1464396908371" ID="ID_487257918" MODIFIED="1464397170109" TEXT="vermeidet den Performance overhead">
|
|
<icon BUILTIN="ksmiletris"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1464397008078" ID="ID_1403561457" MODIFIED="1464397019505" TEXT="soll sich symmetrisch verhalten">
|
|
<icon BUILTIN="yes"/>
|
|
</node>
|
|
<node CREATED="1464397020996" ID="ID_1333087135" MODIFIED="1512926192070" TEXT="Lösung: Variante für EntryID">
|
|
<icon BUILTIN="idea"/>
|
|
<node CREATED="1464397032747" ID="ID_1595458691" MODIFIED="1464397057946" TEXT="für interne Schnittstellen">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
gleiches Argument...
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1464397039834" ID="ID_1349501863" MODIFIED="1464397115277" TEXT="verwendet Symbol-Datentyp">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...damit unterstellen wir, daß später eine Symbol-Tabelle aufgebaut wird.
|
|
</p>
|
|
<p>
|
|
Dann kann man sich immer noch überlegen, ob man dann <i>an dieser Stelle</i> bereinigt
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1464387004423" ID="ID_1076928743" MODIFIED="1512926192071" TEXT="Fehlerbehandlung">
|
|
<node CREATED="1464387034539" ID="ID_1580200225" MODIFIED="1512926192071" TEXT="injectNew">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1464387043146" ID="ID_1075443725" MODIFIED="1465045655821" TEXT="API erweitern">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node CREATED="1464387046769" ID="ID_1282279036" MODIFIED="1465045658691" TEXT="Rückgabewert">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node CREATED="1464387055632" ID="ID_381742708" MODIFIED="1465045661504" TEXT="andere Layer fragen">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1464387071669" ID="ID_1152000090" MODIFIED="1512926192072" TEXT="skip">
|
|
<icon BUILTIN="button_cancel"/>
|
|
<node CREATED="1464387092091" ID="ID_534085817" MODIFIED="1464387095959" TEXT="hat kein Argument"/>
|
|
<node CREATED="1464387096498" ID="ID_1113073682" MODIFIED="1464387158085" TEXT="kann daher Selektor nicht ausführen">
|
|
<icon BUILTIN="smily_bad"/>
|
|
</node>
|
|
<node CREATED="1464387102850" ID="ID_1022478410" MODIFIED="1464387148396" TEXT="Fehlererkennung nicht möglich">
|
|
<icon BUILTIN="yes"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1464386771270" ID="ID_1279882649" MODIFIED="1512926192072" TEXT="setter vs mutator">
|
|
<node CREATED="1464386870265" ID="ID_1326576761" MODIFIED="1464387168773" TEXT="Metaprogrammierung"/>
|
|
<node CREATED="1464386878983" ID="ID_19052291" MODIFIED="1464386887354" TEXT="Code selber muß es implizit wissen"/>
|
|
<node CREATED="1464386904676" ID="ID_1844234642" MODIFIED="1512926192073" TEXT="entweder-oder">
|
|
<icon BUILTIN="help"/>
|
|
<node CREATED="1464386910099" ID="ID_127180278" MODIFIED="1464386913750" TEXT="nicht notwendig"/>
|
|
<node CREATED="1464386929745" ID="ID_1833671444" MODIFIED="1464386936708" TEXT="es greift der Layer, der es kann"/>
|
|
</node>
|
|
<node CREATED="1464483482949" HGAP="32" ID="ID_597384200" MODIFIED="1512926192073" TEXT="Code-Struktur" VSHIFT="15">
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
<node CREATED="1464483497524" ID="ID_206433048" MODIFIED="1464483503639" TEXT="Basisklasse + Overlay"/>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1464483504155" ID="ID_565058375" MODIFIED="1533608413971" TEXT="unschön und verwirrend">
|
|
<node CREATED="1464483533863" ID="ID_1813082482" MODIFIED="1464483617082" TEXT="mehrfach geschachtelte Typdefinitionen">
|
|
<icon BUILTIN="smily_bad"/>
|
|
</node>
|
|
<node CREATED="1464483544429" ID="ID_467553331" MODIFIED="1464483659487" TEXT="Problem mit der EntryID">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
in einem Fall kann man sie aus der Closure abgreifen
|
|
</p>
|
|
<p>
|
|
im anderen Fall muß es doch der Client leisten.
|
|
</p>
|
|
<p>
|
|
Keine klare Linie
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="smily_bad"/>
|
|
</node>
|
|
<node CREATED="1464483601318" ID="ID_1275035047" MODIFIED="1464483610226" TEXT="gibt es überhaupt eine Alternative">
|
|
<icon BUILTIN="help"/>
|
|
</node>
|
|
<node CREATED="1465041597680" FOLDED="true" ID="ID_31475692" MODIFIED="1533608416310" TEXT="Abwägung">
|
|
<node CREATED="1465040677452" ID="ID_1313751992" MODIFIED="1465040776226" TEXT="OK: Klassen sind geschnitten nach Belang">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...das heißt, es gibt nur minimale, themantische Überlappung.
|
|
</p>
|
|
<p>
|
|
Also ist die Verwendung von Vererbung hier sogar die <i>beste</i> Lösung
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node CREATED="1465040780654" ID="ID_73964489" MODIFIED="1465040812722">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</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_19731522" MODIFIED="1465041541616" TEXT="API für die ID ist ein Dilemma">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...das heißt, wie rum man es auch auflöst, wird die Lösung auf einer Seite schlechter
|
|
</p>
|
|
<ul>
|
|
<li>
|
|
wenn wir für den Payload-Typ einen Typ-Parameter nehmen, blähen wir den Standard-Fall (Setter) auf
|
|
</li>
|
|
<li>
|
|
andererseits <i>ist es unbstreitbar einfach so,</i> daß für den Mutator-Builder die Typisierung komplett implizit ist, das muß die Closure mit sich 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üfung aufwendiger (Stringvergleich statt Vergleich von Hashes), und außerdem wird ein Typ-Mismatch nicht mehr auf der Ebene der Verb-Anwendung entdeckt und entsprechend gekennzeichnet, sondern wir hoffen, daß 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ß dann der eingeschachtelte Mutator irgendwo auf Widerspruch läuft.
|
|
</li>
|
|
</ul>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="stop-sign"/>
|
|
</node>
|
|
<node CREATED="1465041611663" ID="ID_1925576169" MODIFIED="1465041702243" TEXT="man kann auf DSL-Ebene mehrere Alternativen anbieten">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...gedacht für verschiedene UseCases.
|
|
</p>
|
|
<ul>
|
|
<li>
|
|
Fall 1: String-Key und der Typ muß irgendwie implizit/explizit gegeben sein
|
|
</li>
|
|
<li>
|
|
Fall2: GenNodeID
|
|
</li>
|
|
</ul>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
<node CREATED="1465139405203" ID="ID_103737978" MODIFIED="1465139492329" TEXT="...hey, der Typ ist implizit klar! es ist immer Rec">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...die offensichtlichsten Dinge übersieht man nur zu leicht!!!!!
|
|
</p>
|
|
<p>
|
|
Da es ein nested scope ist, ist es immer ein Objekt,
|
|
</p>
|
|
<p>
|
|
also repräsentiert als Rec<GenNode>
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1457232746179" FOLDED="true" ID="ID_1793680066" MODIFIED="1533684614788" TEXT="Rec<GenNode>" VSHIFT="11">
|
|
<icon BUILTIN="full-4"/>
|
|
<node CREATED="1464305377785" ID="ID_396910166" MODIFIED="1512926192076" TEXT="Vorüberlegungen">
|
|
<node CREATED="1464305417066" ID="ID_1059660516" MODIFIED="1512926192077" TEXT="wünschenswert">
|
|
<icon BUILTIN="help"/>
|
|
<node CREATED="1464305708891" ID="ID_1184917831" MODIFIED="1512926192077" TEXT="Vorteile">
|
|
<node CREATED="1464305431944" ID="ID_426248387" MODIFIED="1464305641440" TEXT="den RecordContentMutator loswerden"/>
|
|
<node CREATED="1464305660018" ID="ID_255650962" MODIFIED="1464305687458" TEXT="die speziellen Regeln für Attribute / Kinder loswerden"/>
|
|
</node>
|
|
<node CREATED="1464305712115" ID="ID_1789861154" MODIFIED="1512926192078" TEXT="Nachteile">
|
|
<node CREATED="1464305722209" ID="ID_375643343" MODIFIED="1464305733108" TEXT="man braucht immer einen TreeMutator"/>
|
|
<node CREATED="1464305735032" ID="ID_800203572" MODIFIED="1464305745786" TEXT="das ist sehr komplexer Code"/>
|
|
<node CREATED="1464305756189" ID="ID_696233984" MODIFIED="1464305766735" TEXT="zusätzliche Indirektion / VTable"/>
|
|
<node CREATED="1464305800207" ID="ID_1296045436" MODIFIED="1464305818736" TEXT="das "Backdoor" in Record::Mutator bleibt bestehen"/>
|
|
</node>
|
|
<node CREATED="1464305842833" ID="ID_365028607" MODIFIED="1525124215201" TEXT="Abwägung">
|
|
<node CREATED="1464305847001" ID="ID_845708071" MODIFIED="1533608413973" TEXT="Aufwand">
|
|
<node CREATED="1464305850440" FOLDED="true" ID="ID_592160280" MODIFIED="1533608416311" TEXT="dedizierte Impl">
|
|
<node CREATED="1464305871806" ID="ID_1200803242" MODIFIED="1464305874249" TEXT="ein Stack"/>
|
|
<node CREATED="1464306044598" FOLDED="true" ID="ID_780490719" MODIFIED="1533608415994" TEXT="pro Stackframe">
|
|
<node CREATED="1464305896754" ID="ID_569905839" MODIFIED="1464305908965" TEXT="ref Rec::Mutator"/>
|
|
<node CREATED="1464305910520" FOLDED="true" ID="ID_1883294095" MODIFIED="1533608415656" TEXT="Puffer: RecordContentMutator">
|
|
<node CREATED="1464305921943" ID="ID_1412580517" MODIFIED="1464305927370" TEXT="Vector Attribute"/>
|
|
<node CREATED="1464305927910" ID="ID_1641635660" MODIFIED="1464305933817" TEXT="Vector Kinder"/>
|
|
<node CREATED="1464305989422" ID="ID_614946430" MODIFIED="1464305994825" TEXT="ein vector::iterator"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1464305854040" FOLDED="true" ID="ID_1876525606" MODIFIED="1533608416312" TEXT="per TreeMutator">
|
|
<node CREATED="1464305876237" ID="ID_633615671" MODIFIED="1464305878376" TEXT="ein Stack"/>
|
|
<node CREATED="1464306061588" FOLDED="true" ID="ID_735374750" MODIFIED="1533608415995" TEXT="pro Stackframe">
|
|
<node CREATED="1472781610135" FOLDED="true" ID="ID_150002810" MODIFIED="1533608415659">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
<i>zwei </i>Bindings
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<node CREATED="1472781728046" ID="ID_1910688935" MODIFIED="1472781744825" TEXT="ref Quell-Vector"/>
|
|
<node CREATED="1472781629036" ID="ID_1614778599" MODIFIED="1472781751975" TEXT="Puffer: Vector GenNode"/>
|
|
<node CREATED="1472781648571" ID="ID_1190592868" MODIFIED="1472781677753" TEXT="ein zugehöriger Iterator"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1472781868035" HGAP="40" ID="ID_195135751" MODIFIED="1533608413976" TEXT="Unterschied minimal" VSHIFT="-3">
|
|
<node CREATED="1472781885352" ID="ID_327255109" MODIFIED="1472781888836" TEXT="zwei Iteratoren"/>
|
|
<node CREATED="1472781889328" ID="ID_1298906038" MODIFIED="1472781899051" TEXT="zwei Quell-Referenzen"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1472653531806" HGAP="76" ID="ID_1466924103" MODIFIED="1512926192083" TEXT="Ansatz" VSHIFT="-10">
|
|
<node CREATED="1472653541019" ID="ID_1910363821" MODIFIED="1472653569512">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
<i>zwei</i> Collection-Bindings
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
<node CREATED="1472653548905" ID="ID_56400821" MODIFIED="1472653553124" TEXT="speziell konfiguriert"/>
|
|
<node CREATED="1472654905416" ID="ID_729856704" MODIFIED="1472654910067" TEXT="minimaler Code"/>
|
|
</node>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1464305382975" FOLDED="true" ID="ID_1038582300" MODIFIED="1533684605783" TEXT="Implementierung">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1457742036967" ID="ID_980619979" MODIFIED="1512926192084" TEXT="Attribute">
|
|
<node CREATED="1472781560508" ID="ID_1534877939" MODIFIED="1472781584718" TEXT="Selector: isNamed"/>
|
|
<node CREATED="1472930964666" ID="ID_1394229571" MODIFIED="1473014470867" TEXT="Behandlung für Typ-Feld"/>
|
|
</node>
|
|
<node CREATED="1457742040782" ID="ID_613087606" MODIFIED="1457742042442" TEXT="Kinder"/>
|
|
<node CREATED="1472781922380" ID="ID_506316487" MODIFIED="1512926192085" TEXT="Problem: rekursiver Mutator">
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
<node CREATED="1472781942185" ID="ID_882829469" MODIFIED="1472781946644" TEXT="rein code-technisches Problem"/>
|
|
<node CREATED="1472781957063" ID="ID_1617563820" MODIFIED="1472781964177" TEXT="durch forward-decl aufzulösen"/>
|
|
<node CREATED="1472781977156" ID="ID_1731364667" MODIFIED="1472782008196" TEXT="erfordert Umbau der Code-Struktur">
|
|
<icon BUILTIN="smily_bad"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1472930979111" ID="ID_1629990314" MODIFIED="1512926192086" TEXT="Problem: Typ-Feld">
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
<node CREATED="1472931031568" ID="ID_1634653912" MODIFIED="1512926192087" TEXT="Kompromiß in GenNode">
|
|
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
|
|
<node CREATED="1472931061612" ID="ID_1482076461" MODIFIED="1472931066111" TEXT="halbherziges Design"/>
|
|
<node CREATED="1472931066635" ID="ID_1488685471" MODIFIED="1472931074166" TEXT="wollte nicht wirklich Metadaten einführen"/>
|
|
<node CREATED="1472931074754" ID="ID_1078549727" MODIFIED="1472931083789" TEXT="hab's daher dann fest verdrahtet"/>
|
|
<node CREATED="1472931084281" ID="ID_358955160" MODIFIED="1472931095987" TEXT="erlaube "Abkürzung" über das Typ-Attribut"/>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1472931096647" ID="ID_1730961697" MODIFIED="1472931185935" TEXT="aber nicht wirklich konsequent...">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...diese Abkü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ängerfristig doch davon ausgehe,
|
|
</p>
|
|
<p>
|
|
daß es einfach einen Metadaten-Scope gibt
|
|
</p>
|
|
<p>
|
|
|
|
</p>
|
|
<p>
|
|
Die Inkonsequenz nun ist, daß im Rec::Mutator keine Magie dafür vorgesehen ist
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1472931195618" ID="ID_1075996120" MODIFIED="1512926192087" TEXT="aber Meta-Attribut für Diff">
|
|
<node CREATED="1472931234165" ID="ID_160523779" MODIFIED="1472931239279" TEXT="geht nicht anders"/>
|
|
<node CREATED="1472931241027" ID="ID_1519973794" MODIFIED="1472931247263" TEXT="direkte Folge des Objekt-Modells"/>
|
|
<node CREATED="1472931391998" ID="ID_1361356376" MODIFIED="1533608413977" TEXT="betrifft">
|
|
<node CREATED="1472931395526" ID="ID_1159599973" MODIFIED="1472931403393" TEXT="ins(type = X)"/>
|
|
<node CREATED="1472931404525" FOLDED="true" ID="ID_1215961897" MODIFIED="1533608416313" TEXT="set(type = X)">
|
|
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1472931416323" ID="ID_1856124935" MODIFIED="1472931434577" TEXT="AUA: bisher übersehen">
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1472931275575" ID="ID_158751268" MODIFIED="1512926192088" TEXT="Collection-Binding">
|
|
<node CREATED="1472931287229" ID="ID_1702269467" MODIFIED="1472931308630" TEXT="klinkt sich unterhalb vom Mutator ein"/>
|
|
<node CREATED="1472931309122" ID="ID_632255284" MODIFIED="1472931324740" TEXT="umgeht den Mutator"/>
|
|
<node CREATED="1472931326512" ID="ID_150253618" MODIFIED="1472931332867" TEXT="arbeitet direkt auf den Collections"/>
|
|
<node CREATED="1472931333975" ID="ID_330064662" MODIFIED="1472931342433" TEXT="reicht Werte unbetrachtet 1:1 durch"/>
|
|
</node>
|
|
<node CREATED="1472931711315" ID="ID_1747250133" MODIFIED="1512926192089" TEXT="Lösung">
|
|
<icon BUILTIN="idea"/>
|
|
<node CREATED="1472931716482" ID="ID_1328626801" MODIFIED="1472931798657" TEXT="Lambdas nicht ausreichend">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</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_321203237" MODIFIED="1472931822190" TEXT="müßte Binding-Operationen anpassen">
|
|
<icon BUILTIN="smily_bad"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1472931829467" ID="ID_383672039" MODIFIED="1533608413978" STYLE="fork" TEXT="Dekorator">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1472934618917" ID="ID_1010335466" MODIFIED="1472934744607" TEXT="legt sich um den äußeren Collection-Binding-Layer"/>
|
|
<node CREATED="1472934635426" ID="ID_610715894" MODIFIED="1472934744607" TEXT="greift bei der injectNew und assignElm-Operation ein"/>
|
|
<node CREATED="1472934671013" ID="ID_1605900118" MODIFIED="1472934744607" TEXT="braucht Zugang zum Rec::Mutator">
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
</node>
|
|
<node CREATED="1472934695226" ID="ID_247894372" MODIFIED="1472934744607" TEXT="Code wird schwer lesbar"/>
|
|
<node CREATED="1472934710032" FOLDED="true" ID="ID_1233852840" MODIFIED="1533608416314" TEXT="umformulieren">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1473014547678" ID="ID_1566443628" MODIFIED="1473014763323" TEXT="geht nur bedingt">
|
|
<icon BUILTIN="smily_bad"/>
|
|
</node>
|
|
<node CREATED="1473014552677" ID="ID_1444718355" MODIFIED="1473014759258" TEXT="Problem ist der Builder">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...wir wollen mehrfach geschichtete TreeMutator-Subklassen,
|
|
</p>
|
|
<p>
|
|
aber tatsächlich liefert jeder DSL-Aufruf einen Builder<TreeMutator<...>>.
|
|
</p>
|
|
<p>
|
|
Die normalen DSL-Aufrufe sind eben genau so gestrickt, daß jeweils der oberste Builder entfernt wird,
|
|
</p>
|
|
<p>
|
|
ein neuer Layer darübergebaut und das Ganze wieder in einen Builder eingewickelt wird.
|
|
</p>
|
|
<p>
|
|
|
|
</p>
|
|
<p>
|
|
Dadurch ist es schwer bis unmö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 "abgreifen". Ich kann daher nicht die DSL-Notation verwenden,
|
|
</p>
|
|
<p>
|
|
um den Dekorator für die Behandlung des Typ-Feldes einzubringen.
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1472782025318" ID="ID_387350632" MODIFIED="1512926192091" TEXT="Standard-Lambdas für GenNode">
|
|
<node CREATED="1472782055217" ID="ID_1053081307" MODIFIED="1472782069243" TEXT="Selector -> ID-Vergleich"/>
|
|
<node CREATED="1472782069784" ID="ID_893616200" MODIFIED="1472782075874" TEXT="Constructor -> copy"/>
|
|
<node CREATED="1472782077062" ID="ID_1012433129" MODIFIED="1472782092512" TEXT="Setter -> assign DataCap"/>
|
|
<node CREATED="1472782093956" ID="ID_1200489627" MODIFIED="1472782120696">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
Mut -> <font color="#e43e2a">Rekursion</font>
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1472830089042" ID="ID_1759032781" MODIFIED="1512926192092" TEXT="until after Ref::ATTRIBS">
|
|
<node CREATED="1472830107591" ID="ID_1479915312" MODIFIED="1472830118609" TEXT="muß Semantik im TreeMutator API korrigieren"/>
|
|
<node CREATED="1472830131284" ID="ID_1581714242" MODIFIED="1472830153132" TEXT="Problem: nur die Implementierung weiß, was ein "Attribut" ist"/>
|
|
<node CREATED="1472830122757" ID="ID_937476321" MODIFIED="1472830129487" TEXT="brauche Unterstützung vom Selector"/>
|
|
<node CREATED="1472830164119" ID="ID_1323583081" MODIFIED="1512926192093" TEXT="Lösungsansatz">
|
|
<node CREATED="1472830177221" ID="ID_422155652" MODIFIED="1472830181729" TEXT="wie Ref::END"/>
|
|
<node CREATED="1472830182101" ID="ID_275162903" MODIFIED="1472830195511" TEXT="aber nur einige Layer reagieren darauf"/>
|
|
<node CREATED="1472830199203" ID="ID_35560751" MODIFIED="1533608413978" TEXT="default-return muß true sein">
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
<node CREATED="1472830226455" ID="ID_1975724782" MODIFIED="1472830232658" TEXT="aber natürlich nur wenn leer..."/>
|
|
<node CREATED="1472830286462" ID="ID_1170732286" MODIFIED="1472830298035" TEXT="Einsicht: END und ATTRIBS können nicht scheitern">
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
<node CREATED="1472830304844" ID="ID_354507274" 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_710057839" MODIFIED="1512926192094" TEXT="Selector integrieren" VSHIFT="23">
|
|
<icon BUILTIN="button_ok"/>
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
<node CREATED="1461967533959" ID="ID_1476036864" MODIFIED="1468761946715" TEXT="korrekte logische Verkettung"/>
|
|
<node CREATED="1461967541166" ID="ID_1033772766" MODIFIED="1468761946715" TEXT="muß von jeder Primitive unterstützt werden">
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1461967571042" ID="ID_186074377" MODIFIED="1512926192095">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</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_1012577830" MODIFIED="1468761946715" TEXT="Diff setzt totale Ordnung voraus"/>
|
|
<node CREATED="1461967765080" ID="ID_1011855147" MODIFIED="1468761946715" TEXT="verletzt durch »onion-layer«"/>
|
|
<node CREATED="1461967839110" ID="ID_571996411" MODIFIED="1512926192095" TEXT="Relevanz">
|
|
<icon BUILTIN="help"/>
|
|
<node CREATED="1461967850797" ID="ID_1981205783" MODIFIED="1468761946715" TEXT="bei Einzelschritt irrelevant"/>
|
|
<node CREATED="1461967876521" ID="ID_1804785019" MODIFIED="1512926192096" TEXT="zwingend bei "AFTER"-Verb">
|
|
<node CREATED="1461967962814" ID="ID_1667097505" MODIFIED="1472219338757" TEXT="weil das Zwischenschritte überspringt">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...das heißt,
|
|
</p>
|
|
<p>
|
|
das AFTER-Verb wird übersetzt in ein skip_until,
|
|
</p>
|
|
<p>
|
|
und das läuft dann entweder in jedem Layer
|
|
</p>
|
|
<p>
|
|
oder nur in dem Layer, der auf die Spec paßt.
|
|
</p>
|
|
<p>
|
|
In jedem Fall gerät dadurch die relative Verzahnung der Elemente untereinander aus dem Takt
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1461967992042" ID="ID_9552950" MODIFIED="1468761946715" TEXT="nur ein Ausweg..."/>
|
|
<node CREATED="1461968004720" ID="ID_1333404241" MODIFIED="1472219338765" TEXT="Ordnung der onion-layer verbindlich machen">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...das heißt also, es wird stets der zuerst gebundene Layer komplett durchgespult,
|
|
</p>
|
|
<p>
|
|
gefolgt dann von dem nächsten Layer.
|
|
</p>
|
|
<p>
|
|
|
|
</p>
|
|
<p>
|
|
Die Konsequenz ist, daß es keine Mischung der Typen geben kann.
|
|
</p>
|
|
<p>
|
|
Es müssen immer zwingend alle Elemente eines Typs von einem Layer behandelt werden
|
|
</p>
|
|
<p>
|
|
und diese Elemente müssen geschlossen hintereinander in der Reihenfolge liegen
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1465428839332" FOLDED="true" ID="ID_909803930" MODIFIED="1533684673395" TEXT="Diff-Anwendung" VSHIFT="36">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1465428850946" ID="ID_1085608480" MODIFIED="1512926192098">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
auf Basis des neu geschaffenen <b>TreeMutator</b>s
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<node CREATED="1465664755169" FOLDED="true" ID="ID_132124444" MODIFIED="1533684649305" TEXT="Modus der Anwendung">
|
|
<node CREATED="1465664762944" ID="ID_1254081914" MODIFIED="1465665479208" TEXT="DiffApplicator<TreeMutator>">
|
|
<icon BUILTIN="help"/>
|
|
</node>
|
|
<node CREATED="1465664777398" ID="ID_872861883" MODIFIED="1472219338777" TEXT="Automatismen sind denkbar">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
....man könnte später geeignete Automatismen schaffen,
|
|
</p>
|
|
<p>
|
|
die sich diesen TreeMutator beschaffen
|
|
</p>
|
|
<ul>
|
|
<li>
|
|
indem erkannt wird, daß 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_1139754084" ENDARROW="Default" ENDINCLINATION="1028;0;" ID="Arrow_ID_10673972" STARTARROW="None" STARTINCLINATION="978;42;"/>
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
<node CREATED="1465665483456" ID="ID_1329468559" MODIFIED="1512926192099" TEXT="Problem: konkreter Mutator">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...das so häufig in C++ auftretende Problem:
|
|
</p>
|
|
<p>
|
|
wie baue und verwalte ich eine konkrete Implementierung,
|
|
</p>
|
|
<p>
|
|
ohne gleich ein ganzes Management-Framework einführen zu müssen.
|
|
</p>
|
|
<p>
|
|
Letzten Endes lief  das auch in diesem Fall auf inline-Storage hinaus...
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<node CREATED="1465665492727" ID="ID_743684748" MODIFIED="1465665500210" TEXT="muß vom Target gebaut werden"/>
|
|
<node CREATED="1465665500830" ID="ID_937213383" MODIFIED="1465665561681" TEXT="Typ nicht bekannt">
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
</node>
|
|
<node CREATED="1465665511580" ID="ID_611347489" MODIFIED="1465665556325" TEXT="soll auf Stack top-Level ">
|
|
<icon BUILTIN="yes"/>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1465665579587" ID="ID_786565560" MODIFIED="1525124215211" TEXT="problematisch">
|
|
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
<node CREATED="1465665594969" ID="ID_1072421347" MODIFIED="1533608413979" TEXT="unbekannte Größe">
|
|
<node CREATED="1465665884698" ID="ID_418230667" MODIFIED="1465665893757" TEXT="default-Buffergöße vorlegen"/>
|
|
<node CREATED="1465665894273" ID="ID_970277186" MODIFIED="1465665901124" TEXT="Größe proben und anpassen"/>
|
|
<node CREATED="1465665901640" ID="ID_650164559" MODIFIED="1465665920298" TEXT="Größe für "bekannte" Targets statisch hinterlegen"/>
|
|
<node CREATED="1465852237233" FOLDED="true" HGAP="27" ID="ID_699424989" MODIFIED="1533608416316" TEXT="Beschluß" VSHIFT="12">
|
|
<icon BUILTIN="yes"/>
|
|
<node CREATED="1465852248487" ID="ID_1402619250" MODIFIED="1465852255154" TEXT="zunächst die einfachste Lösung"/>
|
|
<node CREATED="1465852255694" ID="ID_462293433" MODIFIED="1472122166677" TEXT="statisch (fest) festlegen"/>
|
|
<node CREATED="1465852268252" ID="ID_329653886" MODIFIED="1465852274743" TEXT="ggfs. noch nach Zieltyp differenziert"/>
|
|
<node CREATED="1465852275859" ID="ID_394082851" MODIFIED="1465852288510" TEXT="dynamisch / Lernen als Möglichkeit vorsehen"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1465665614990" ID="ID_1851089586" MODIFIED="1533608413980" TEXT="verwirrendes API">
|
|
<node CREATED="1465665980686" ID="ID_1537039073" MODIFIED="1465665991232" TEXT="Anwendung sollte selbstevident sein"/>
|
|
<node CREATED="1465666009690" FOLDED="true" ID="ID_1006664389" MODIFIED="1533608416317" TEXT="Typ-Signatur sollte den Weg weisen">
|
|
<node CREATED="1465674483754" ID="ID_155190959" MODIFIED="1465674558135" TEXT="sehe nur eine Lösung">
|
|
<icon BUILTIN="forward"/>
|
|
</node>
|
|
<node CREATED="1465674488874" ID="ID_625451231" MODIFIED="1465674563848" TEXT="Mutator-Builder-Funktion">
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
<node CREATED="1465674529460" ID="ID_845292312" MODIFIED="1465674571112" TEXT="pflanzt in ein gegebenes Buff-Handle">
|
|
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1465665993012" ID="ID_1531461875" MODIFIED="1465666003750" TEXT="keine komplexen "Riten""/>
|
|
<node CREATED="1465666524573" FOLDED="true" HGAP="30" ID="ID_462712191" MODIFIED="1533608416319" TEXT="Schlußfolgerung" VSHIFT="18">
|
|
<icon BUILTIN="yes"/>
|
|
<node CREATED="1465666541419" ID="ID_1090547868" MODIFIED="1465666552293" TEXT="entweder ein festes Interface"/>
|
|
<node CREATED="1465666552842" ID="ID_1518882587" MODIFIED="1465666574594" TEXT="oder über Metaprogrammierung / Spezialisierung"/>
|
|
<node CREATED="1468761997202" FOLDED="true" ID="ID_1870085622" MODIFIED="1533608415997" TEXT="kombinierte Lösung">
|
|
<icon BUILTIN="idea"/>
|
|
<node CREATED="1468762009304" ID="ID_1554371522" MODIFIED="1468762018314" TEXT="Interface DiffMutable"/>
|
|
<node CREATED="1468762031701" FOLDED="true" ID="ID_48737788" MODIFIED="1533608415664" TEXT="Meta-Adapter">
|
|
<linktarget COLOR="#503382" DESTINATION="ID_48737788" ENDARROW="Default" ENDINCLINATION="8;131;" ID="Arrow_ID_579805576" SOURCE="ID_887400042" STARTARROW="None" STARTINCLINATION="535;0;"/>
|
|
<node CREATED="1468762052858" ID="ID_494010261" MODIFIED="1468762066764" TEXT="synthetisiert dieses Interface"/>
|
|
<node CREATED="1468762067383" ID="ID_484867304" MODIFIED="1468762075059" TEXT="erkennt passende Methoden"/>
|
|
<node CREATED="1468762075671" FOLDED="true" ID="ID_52899390" MODIFIED="1525124215517" TEXT="Problem: Storage">
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
<node CREATED="1468762092660" ID="ID_361660092" MODIFIED="1468762097264" TEXT="Adapter oder Lambda"/>
|
|
<node CREATED="1468762097684" ID="ID_1049198962" MODIFIED="1468762107374" TEXT="muß länger leben als der Adapter"/>
|
|
<node CREATED="1468762118913" ID="ID_1064755787" MODIFIED="1468762128867" TEXT="Lösung: Wert / Reftyp per Spezialisierung"/>
|
|
<node CREATED="1468762138318" ID="ID_1261183393" MODIFIED="1472219338878" TEXT="Restrisiko bleibt">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
....daß ein unbedarfter client diesen Trick übershieht
|
|
</p>
|
|
<p>
|
|
und daher den Rückgabewert wegwirft.
|
|
</p>
|
|
<p>
|
|
|
|
</p>
|
|
<p>
|
|
Argument: we soweit einsteigt, die Metaprogramming-Lö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_1718572301" MODIFIED="1525124215518" TEXT="freie funktion" VSHIFT="16">
|
|
<icon BUILTIN="yes"/>
|
|
<node CREATED="1469121882782" ID="ID_1873664189" MODIFIED="1469121933463" TEXT="keine Spezialisierung notwendig">
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
<node CREATED="1469121890060" ID="ID_985582322" MODIFIED="1469121930007">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
Client soll direkt <b>mutatorBinding</b> bieten
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1469544027620" HGAP="38" ID="ID_1475348824" MODIFIED="1533608413984" TEXT="Storage-Probleme" VSHIFT="11">
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
<node CREATED="1469544055624" FOLDED="true" ID="ID_390940604" MODIFIED="1533608416320" TEXT="Beobachtung: Template-bloat">
|
|
<icon BUILTIN="stop-sign"/>
|
|
<node CREATED="1469544072709" ID="ID_16055877" MODIFIED="1469544083016" TEXT="Ursache: wir generieren die Klasse jedesmal neu"/>
|
|
<node CREATED="1469544084220" ID="ID_1247343007" MODIFIED="1469544104909" TEXT="...obwohl keinerlei Bezug zum Target-Typ vorliegt">
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
<node CREATED="1469544123271" ID="ID_1703312587" MODIFIED="1469544133675" TEXT="Funktionalität ist zu 90% generisch">
|
|
<icon BUILTIN="info"/>
|
|
</node>
|
|
<node CREATED="1469544171176" ID="ID_887400042" MODIFIED="1469544253263">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
<i>nicht</i> generisch: <b><font color="#923977">mutatorBinding</font></b>
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<arrowlink COLOR="#503382" DESTINATION="ID_48737788" ENDARROW="Default" ENDINCLINATION="8;131;" ID="Arrow_ID_579805576" STARTARROW="None" STARTINCLINATION="535;0;"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1469544264955" FOLDED="true" HGAP="35" ID="ID_366424331" MODIFIED="1533608416323" VSHIFT="16">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
Lösungsversuch: <b>extern template</b>
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="button_cancel"/>
|
|
<node CREATED="1469544293574" ID="ID_947583528" MODIFIED="1469544318455" TEXT="Template bereits in Lumiera-Lib vor-generieren">
|
|
<icon BUILTIN="info"/>
|
|
</node>
|
|
<node CREATED="1469544337408" ID="ID_1646108569" MODIFIED="1469544349252" TEXT="nur ctor ist nochmals ge-Templated">
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
<node CREATED="1469544323331" FOLDED="true" ID="ID_1924059831" MODIFIED="1533608415999" TEXT="flexibler Teil verbleibt in ctor">
|
|
<icon BUILTIN="forward"/>
|
|
<node CREATED="1469544368180" ID="ID_989521105" MODIFIED="1469544377687" TEXT="hier kann das mutatorBinding stattfinden"/>
|
|
<node CREATED="1469544385882" ID="ID_82786122" MODIFIED="1469544397396" TEXT="...in Abhängigkeit vom konkreten Zieltyp"/>
|
|
<node CREATED="1469544400544" ID="ID_1789924824" MODIFIED="1469544413058" TEXT="Resultat ist ein TreeMutator im internen Puffer"/>
|
|
</node>
|
|
<node CREATED="1469544471294" FOLDED="true" ID="ID_1306807662" MODIFIED="1533608416003" TEXT="Problem-1: Puffer-Größe">
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
<node CREATED="1469544519439" ID="ID_1173588510" MODIFIED="1469544535057" TEXT="Plan: Heuristik + Traits"/>
|
|
<node CREATED="1469544536309" ID="ID_579318822" MODIFIED="1469544546951" TEXT="hängt von konkretem Zieltyp ab"/>
|
|
<node CREATED="1469544547731" ID="ID_1296389584" MODIFIED="1469544596453" TEXT="kann nicht im generischen Teil stecken">
|
|
<icon BUILTIN="stop-sign"/>
|
|
</node>
|
|
<node CREATED="1469544575808" ID="ID_259226539" MODIFIED="1469544599880" TEXT="Problem: vom generischen Teil ansprechen">
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
</node>
|
|
<node CREATED="1469544601444" ID="ID_1593190605" MODIFIED="1469544616515" TEXT="Lösung: weitere Indirektion">
|
|
<icon BUILTIN="yes"/>
|
|
</node>
|
|
<node CREATED="1469544618738" ID="ID_324293110" MODIFIED="1472122283229" TEXT="vertretbar, da nur beim Scope-Wechsel....">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...im Klartext: diesen Zugriff von der generischen Implementierung
|
|
</p>
|
|
<p>
|
|
auf den eingebauten Stack-Mechanismus benö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ß sie uns im gegebenen Kontext umbringen...
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1469544496907" FOLDED="true" ID="ID_447935464" MODIFIED="1533608416006" TEXT="Problem-2: re-Initialisierung">
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
<node CREATED="1469544831244" ID="ID_756911810" MODIFIED="1469544838662" TEXT="bestehendes Protokoll">
|
|
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
|
|
</node>
|
|
<node CREATED="1469544839795" ID="ID_1308746305" MODIFIED="1469544858420" TEXT="Diff-Applikator kan beliebige Folge von Diffs akzeptieren"/>
|
|
<node CREATED="1469544859392" ID="ID_325998286" MODIFIED="1469544964778">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
<i>intern:</i> eingebaute <b>initDiffApplication()</b>
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...wird automatisch vor Konsumieren eines Diff aufgerufen
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1469544965890" ID="ID_443152890" MODIFIED="1469545023179">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
<i>Widerspruch:</i> TreeMutator ist <b>Wegwerf</b>-Objekt
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="broken-line"/>
|
|
</node>
|
|
<node COLOR="#f61b01" CREATED="1469545033584" ID="ID_578930155" MODIFIED="1469545058652" TEXT="Abbruch">
|
|
<icon BUILTIN="button_cancel"/>
|
|
<icon BUILTIN="stop-sign"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1469545080826" FOLDED="true" HGAP="41" ID="ID_268789302" MODIFIED="1533608416325" VSHIFT="17">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
Lösungsversuch: <b>doppelte Hülle</b>
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1469545168798" FOLDED="true" ID="ID_511952630" MODIFIED="1533608416009" TEXT="Architektur">
|
|
<node CREATED="1469545173893" ID="ID_1815808987" MODIFIED="1469545190599" TEXT="opaque: Kern == TreeMutator"/>
|
|
<node CREATED="1469545191899" ID="ID_1298718461" MODIFIED="1469545206853" TEXT="generisch: TreeMutator-Bindung"/>
|
|
<node CREATED="1469545208440" ID="ID_796164740" MODIFIED="1469545246870" TEXT="dediziert: Typ-Adapter"/>
|
|
</node>
|
|
<node CREATED="1469545401582" FOLDED="true" ID="ID_1145081121" MODIFIED="1533608416012" TEXT="konkrete Folgen...">
|
|
<node CREATED="1469545417579" ID="ID_474776082" MODIFIED="1469545427486" TEXT="alle virtuellen Methoden im generischen Teil"/>
|
|
<node CREATED="1469545428289" FOLDED="true" ID="ID_1077900797" MODIFIED="1533608415665" TEXT="generischer Teil verwendet nur Interfaces">
|
|
<node CREATED="1469545452406" ID="ID_369878659" MODIFIED="1469545455778" TEXT="TreeMutator"/>
|
|
<node CREATED="1469545456549" ID="ID_676404790" MODIFIED="1469545459401" TEXT="ScopeManager"/>
|
|
</node>
|
|
<node CREATED="1469545522445" FOLDED="true" ID="ID_1752356251" MODIFIED="1533608415669" TEXT="ScopeManager">
|
|
<node CREATED="1469545526380" ID="ID_141570709" MODIFIED="1469545535550" TEXT="Imp. wird per Zieltyp generiert"/>
|
|
<node CREATED="1469545536139" ID="ID_423387515" MODIFIED="1469545543750" TEXT="lebt in opaquem Buffer"/>
|
|
<node CREATED="1469545546209" ID="ID_229490952" MODIFIED="1469545561067" TEXT="enthält Stack,"/>
|
|
<node CREATED="1469545562151" ID="ID_1390916085" MODIFIED="1469545568130" TEXT="mit passender Puffergröße"/>
|
|
</node>
|
|
<node CREATED="1469545592171" FOLDED="true" ID="ID_1826413238" MODIFIED="1533608415688" TEXT="dedizierter Applikator">
|
|
<icon BUILTIN="idea"/>
|
|
<node CREATED="1469545598922" ID="ID_815414440" MODIFIED="1469545609733" TEXT="hällt Referenz auf Zielobjekt"/>
|
|
<node CREATED="1469545611177" ID="ID_410214862" MODIFIED="1469545670672">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
kann daher <b>TreeMutator</b> konstruieren
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1469545641644" ID="ID_1811640827" MODIFIED="1469545662506">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...und zwar per <b>mutatorBinding</b>
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1469545691349" ID="ID_239269579" MODIFIED="1469545705980">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</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_263708712" MODIFIED="1533608416015" VSHIFT="53">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
TODO: <font color="#010101">Namensgebung</font>
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<linktarget COLOR="#7c4b8e" DESTINATION="ID_263708712" ENDARROW="Default" ENDINCLINATION="-438;877;" ID="Arrow_ID_774958535" SOURCE="ID_660087752" STARTARROW="Default" STARTINCLINATION="2134;135;"/>
|
|
<icon BUILTIN="flag-yellow"/>
|
|
<node CREATED="1469545959160" ID="ID_826999251" MODIFIED="1469545961076" TEXT="DiffApplicationStrategy<DiffMutable>"/>
|
|
<node CREATED="1469545962192" ID="ID_1539721850" MODIFIED="1469545971051" TEXT="feste explizite Spezialisierung"/>
|
|
<node CREATED="1469545972470" ID="ID_996523023" MODIFIED="1469545983800" TEXT="in non-Template-Basisklasse verwandeln"/>
|
|
<node CREATED="1469545990956" ID="ID_543764775" MODIFIED="1469546010389" TEXT="oder zumindest in Trait-Template + enable_if"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1465855369239" ID="ID_1875145732" MODIFIED="1525124215221" STYLE="fork" TEXT="Architektur">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1465855402346" ID="ID_390477158" MODIFIED="1512926192122" TEXT="Grundgedanke">
|
|
<node CREATED="1465855407129" ID="ID_1269101170" MODIFIED="1472219324297" TEXT="Trennung von DiffInterpreter und TreeMutator"/>
|
|
<node CREATED="1465855418880" ID="ID_118862910" MODIFIED="1472219324297" TEXT="ersterer wird auf Basis von letzterem implementiert"/>
|
|
<node CREATED="1465855507380" ID="ID_63018388" MODIFIED="1472219324297">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
TreeMutator-<i>Binding</i> muß opaque bleiben
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1465855561877" ID="ID_1466552960" MODIFIED="1512926192123">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
Buffer-Größen-Management <i>vorsehen</i>
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<node CREATED="1465855596992" ID="ID_1925577989" MODIFIED="1472219324298" TEXT="passiert im Scope des Ctors"/>
|
|
<node CREATED="1465855605879" ID="ID_961922886" MODIFIED="1472219324298" TEXT="bzw. im Scope des MUT-Verbs"/>
|
|
<node CREATED="1465855641898" ID="ID_1420998207" MODIFIED="1472219338902" TEXT="Heuristik + Versuch&Irrtum">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
das heißt
|
|
</p>
|
|
<ul>
|
|
<li>
|
|
ein sinnvoller Startwert wird heuristisch vorgegeben
|
|
</li>
|
|
<li>
|
|
wenn die Allokation scheitert, die Exception fangen und die tatsächlich benötigte Größe merken
|
|
</li>
|
|
</ul>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1465855653265" ID="ID_1093267368" MODIFIED="1472219324298" TEXT="konfigurieren und lernen"/>
|
|
</node>
|
|
<node CREATED="1465855576187" ID="ID_1820859855" MODIFIED="1472219324298" TEXT="zunächst jedoch primitiv implementieren"/>
|
|
</node>
|
|
<node CREATED="1465856069657" ID="ID_1074974681" MODIFIED="1512926192123" TEXT="Struktur">
|
|
<node CREATED="1465856074888" ID="ID_63334235" MODIFIED="1472219324298" TEXT="TreeMutator == PImpl"/>
|
|
<node CREATED="1465856092638" ID="ID_587610953" MODIFIED="1472219324298" TEXT="BufferManager : opaque aber inline"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1465864106739" FOLDED="true" ID="ID_1139754084" MODIFIED="1533684660318" TEXT="Zugang zum Mutator-Binding">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...das heißt:
|
|
</p>
|
|
<p>
|
|
gegeben ein syntaktisch sinnvoller top-level-Aufruf ("wende das Diff an")
|
|
</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_1139754084" ENDARROW="Default" ENDINCLINATION="1028;0;" ID="Arrow_ID_10673972" SOURCE="ID_872861883" STARTARROW="None" STARTINCLINATION="978;42;"/>
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1465864167187" ID="ID_1126324374" MODIFIED="1465864171974" TEXT="Aufruf: freie Funktion"/>
|
|
<node CREATED="1465864172514" ID="ID_523639016" MODIFIED="1465864180668" TEXT="delegiert auf Template"/>
|
|
<node CREATED="1465864181193" ID="ID_214760095" MODIFIED="1465864192611" TEXT="explizite / regelbasierte Spezialisierung"/>
|
|
<node CREATED="1465864193607" ID="ID_910823091" MODIFIED="1512926192124" TEXT="Problem: Storage für die Closure">
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
<node CREATED="1465864217628" ID="ID_234805162" MODIFIED="1465864228510" TEXT="typischerweise sind alles transiente Objekte"/>
|
|
<node CREATED="1465864229170" ID="ID_1100042937" MODIFIED="1465864240501" TEXT="also muß die Closure als Wert-Objekt rausgegeben werden"/>
|
|
<node CREATED="1472495487478" ID="ID_57266631" MODIFIED="1512926192125" TEXT="Lösung...">
|
|
<node CREATED="1472495496574" ID="ID_618531871" MODIFIED="1472495510056" TEXT="auto typed return value"/>
|
|
<node CREATED="1472495510531" ID="ID_1366125392" MODIFIED="1472495513703" TEXT="keep in local scope"/>
|
|
<node CREATED="1472495514203" ID="ID_1694911368" MODIFIED="1472495529197" TEXT="tightly integrate into ctor of DiffAplicator"/>
|
|
</node>
|
|
<node CREATED="1465864247152" ID="ID_1684145985" MODIFIED="1512926192125" TEXT="gesucht: elegantes API">
|
|
<node CREATED="1472494557762" ID="ID_1916007342" MODIFIED="1472494575309" TEXT="DiffAplicator<TargetTyp>">
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
<node CREATED="1472494413960" ID="ID_1460674703" MODIFIED="1472494571740" TEXT="Erweiterungspunkt für ADL..."/>
|
|
<node CREATED="1472494432219" ID="ID_1801329518" MODIFIED="1472494446981" TEXT="...wird vom ctor des Diff-Applikators verwendet"/>
|
|
<node CREATED="1472494466926" ID="ID_1882750560" MODIFIED="1472494484296" TEXT="...und der wiederum greift nur"/>
|
|
<node CREATED="1472494485388" ID="ID_1744987934" MODIFIED="1472494501141" TEXT="...wenn TreeDiffTraits definiert sind"/>
|
|
<node CREATED="1472494501778" ID="ID_300920526" MODIFIED="1472494506323" TEXT="not too bad">
|
|
<icon BUILTIN="ksmiletris"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1465860736044" FOLDED="true" ID="ID_40337378" MODIFIED="1533684662875" TEXT="Implementierung">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1472121965308" ID="ID_292673963" MODIFIED="1472121974646" TEXT="Verb delegiert an Mutator-Primitive"/>
|
|
<node CREATED="1472121976018" ID="ID_421028989" MODIFIED="1472121995995" TEXT="Fehlerbehandlung anhand Rückgabewert dieser"/>
|
|
<node CREATED="1472122015157" ID="ID_151735071" MODIFIED="1472122038334" TEXT="sinnvolle interne Fehler-Funktionen aufbauen"/>
|
|
<node CREATED="1472141026525" ID="ID_671819323" MODIFIED="1512926192127" TEXT="Scope-Wechsel">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1472172154624" ID="ID_602990638" MODIFIED="1512926192127" TEXT="Zugang zum erzeugten Mutator....">
|
|
<node CREATED="1472172310187" ID="ID_148408930" MODIFIED="1472172362034" TEXT="via buffer-Handle">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
erscheint mir die am wenigsten überraschende Lösung.
|
|
</p>
|
|
<p>
|
|
und zwar per handle.get()
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
<node CREATED="1472172348526" ID="ID_1671229453" MODIFIED="1533608413996" TEXT="mögliche Alternativen">
|
|
<node CREATED="1472172364204" ID="ID_261496162" MODIFIED="1472172467939" TEXT="Closure gibt TreeMutator& zurück">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
erscheint mir fehleranfällig und irreführend für den Nutzer der Schnittstelle.
|
|
</p>
|
|
<p>
|
|
Denn er muß zwar das Objekt in das Handle platzieren, dann aber auch noch einen Pointer zurü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_1258020411" MODIFIED="1472172562992" TEXT="ScopeManager-Interface erweitern">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
naja, das wäre billig, aber auch wieder beliebig.
|
|
</p>
|
|
<p>
|
|
Es macht keinen Sinn vom API-Design her, sondern man müßte es halt machen,
|
|
</p>
|
|
<p>
|
|
weil die Implementierung den Zeiger auf den geschachtelen sub-Mutator umsetzen muß.
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="button_cancel"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1472172586703" ID="ID_608960091" MODIFIED="1512926192128" TEXT="prüfen">
|
|
<node CREATED="1472172593710" ID="ID_1915451499" MODIFIED="1472172608024" TEXT="geschachtelter Scope muß beim Verlassen komplett abgearbeitet sein"/>
|
|
<node CREATED="1472172608636" ID="ID_1263541514" MODIFIED="1472172634020" TEXT="wir steigen niemals über den root-Scope hinaus auf"/>
|
|
</node>
|
|
<node CREATED="1472172651974" ID="ID_807127372" MODIFIED="1512926192130" TEXT="ins-Problem">
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
<node CREATED="1472172658349" ID="ID_997769381" MODIFIED="1472172806077">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
die Diff-Sprache verlangt,
|
|
</p>
|
|
<p>
|
|
daß vor dem Öffnen des geschachtelten Scopes
|
|
</p>
|
|
<p>
|
|
dieser zumindest einmal per ins "angelegt" wurde.
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
</node>
|
|
<node CREATED="1472172711846" ID="ID_146912736" MODIFIED="1472172809794" TEXT="wir haben es hier mit objektwertigen Attributen zu tun">
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
<node CREATED="1472172723853" ID="ID_1560317945" MODIFIED="1472172732503" TEXT="das ist ein sonderbarer Grenzfall"/>
|
|
<node CREATED="1472172733307" ID="ID_26853749" MODIFIED="1472172753564" TEXT="man wird die normalerweise auf Impl-Ebene erzeugen"/>
|
|
<node CREATED="1472172754136" ID="ID_297078058" MODIFIED="1472172765458" TEXT="ein INS hat dann nichts sinnvolles zu tun"/>
|
|
<node CREATED="1472172772494" ID="ID_337827865" MODIFIED="1472172795138" TEXT="default-Implementierung absorbiert das INS stillschweigend">
|
|
<icon BUILTIN="forward"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1465860740971" ID="ID_1662787747" MODIFIED="1512926192131" TEXT="Unit-Test">
|
|
<linktarget COLOR="#a9b4c1" DESTINATION="ID_1662787747" ENDARROW="Default" ENDINCLINATION="114;0;" ID="Arrow_ID_1608349913" SOURCE="ID_1209021141" STARTARROW="None" STARTINCLINATION="114;0;"/>
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1472122365079" ID="ID_1033283113" MODIFIED="1512926192131" TEXT="Aussagekräftiges Beispiel-Diff">
|
|
<node CREATED="1472122379548" ID="ID_270981817" MODIFIED="1472122384864" TEXT="sollte alle Features vorführen"/>
|
|
<node CREATED="1472122385380" ID="ID_773660909" MODIFIED="1472122391943" TEXT="sollte wichtige Grenzfälle aktivieren"/>
|
|
<node CREATED="1472122394387" ID="ID_1262619176" MODIFIED="1472122409477" TEXT="sollte keine sinnlosen Operationen verlangen"/>
|
|
</node>
|
|
<node CREATED="1472122416040" ID="ID_644657664" MODIFIED="1472122576120" TEXT="Analog zu den Primitiven in TreeDiffBinding_test">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...das ist ein Versuch, den Code für den Leser verständlich zu halten.
|
|
</p>
|
|
<p>
|
|
Die Idee ist, daß 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üssen für jede Art von "onion-layer" (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_1932054966" MODIFIED="1472122688070" TEXT="sehr komplexes Binding auf privaten Datentyp">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</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ürzungen im Code-Pfad ausnützen. Die Gefahr schlummert aber im Zusammenspiel
|
|
</p>
|
|
<p>
|
|
der konkreten Bindings mit mehreren "onion layers"!
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1465428871136" ID="ID_1015843161" MODIFIED="1512926192131" TEXT="integration mehrerer Bindungs-Layer">
|
|
<node CREATED="1469918339329" ID="ID_1427674245" MODIFIED="1469918349660" TEXT="DiffVirtualisedApplication_test"/>
|
|
<node CREATED="1469918356432" ID="ID_55400098" MODIFIED="1469918363427" TEXT="Selector korrekt integrieren">
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1465428882150" ID="ID_1889489833" MODIFIED="1512926192132" TEXT="komplexer Integrationstest">
|
|
<node CREATED="1469918339329" ID="ID_1209021141" MODIFIED="1472219629782" TEXT="DiffVirtualisedApplication_test">
|
|
<arrowlink DESTINATION="ID_1662787747" ENDARROW="Default" ENDINCLINATION="114;0;" ID="Arrow_ID_1608349913" STARTARROW="None" STARTINCLINATION="114;0;"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1458850101524" HGAP="-22" ID="ID_780586600" MODIFIED="1512926192133" TEXT="TODO" VSHIFT="29">
|
|
<font NAME="SansSerif" SIZE="14"/>
|
|
<icon BUILTIN="flag-yellow"/>
|
|
<node CREATED="1458850122091" ID="ID_15024219" MODIFIED="1512926192134" TEXT="Collection-Binding: bessere Fehlermeldungen">
|
|
<node CREATED="1458850141920" ID="ID_428365633" MODIFIED="1472498706370" TEXT="bei Signatur-Mismatch">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...denn es ist sehr verwirrend, welche Signatur denn nun die Lambdas haben müssen
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<linktarget COLOR="#a9b4c1" DESTINATION="ID_428365633" ENDARROW="Default" ENDINCLINATION="176;0;" ID="Arrow_ID_1501436647" SOURCE="ID_338749301" STARTARROW="None" STARTINCLINATION="176;0;"/>
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node CREATED="1458850154575" ID="ID_725958518" MODIFIED="1472219338982" TEXT="wenn der Default-Matcher greift">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...denn es kann keinen Default-Matcher geben....
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1458850212503" ID="ID_321552356" MODIFIED="1472498583464" TEXT="Signaturen für Lambdas dokumentieren">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node CREATED="1465860661877" ID="ID_942624903" MODIFIED="1472498127725" TEXT="Builder-API für Attribut-Binding dokumentieren">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1465860672852" ID="ID_432641404" 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_1122881728" MODIFIED="1472498733392" TEXT="für später">
|
|
<icon BUILTIN="yes"/>
|
|
</node>
|
|
<node CREATED="1472498734359" ID="ID_888090802" MODIFIED="1472498742262" TEXT="brauchen wir das wirklich">
|
|
<icon BUILTIN="help"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1460847222865" ID="ID_362820787" MODIFIED="1472219338993" TEXT="abstrakte operationale Semantik der Diff-Anwendung dokumentieren">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...sonst wird niemand Lambdas bereitstellen können, oder gar Diff-Nachrichten erzeugen.
|
|
</p>
|
|
<p>
|
|
Das ist nun kein spezielles Problem der gewählten Implementierungs-Technik, sondern rührt daher,
|
|
</p>
|
|
<p>
|
|
daß der Client hier eigentlich ein Protokoll implementieren muß.
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1458850263688" ID="ID_555018476" MODIFIED="1512926192135" TEXT="Zusammenführen">
|
|
<node CREATED="1458850294083" ID="ID_393704697" MODIFIED="1458850302901" TEXT="der normale GenNode-Applikator"/>
|
|
<node CREATED="1458850282285" ID="ID_435722140" MODIFIED="1512926192135" TEXT="Prüfen ob sinnvoll">
|
|
<node CREATED="1458850328775" ID="ID_1736970011" MODIFIED="1458850333475" TEXT="Indirektionen"/>
|
|
<node CREATED="1458850334110" ID="ID_1313695007" MODIFIED="1458850338898" TEXT="Speicherbedarf"/>
|
|
<node CREATED="1458850339413" ID="ID_476682196" MODIFIED="1458850359702" TEXT="Aufwand bei der Verwendung"/>
|
|
</node>
|
|
<node CREATED="1458850306506" ID="ID_425272158" MODIFIED="1458850323212" TEXT="durch Binding für Tree-Applikator ersetzen"/>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1461968295826" ID="ID_693317592" MODIFIED="1512926192135" TEXT="prüfen: soll das »AFTER«-Verb aus der Sprache entfernt werden">
|
|
<linktarget COLOR="#592379" DESTINATION="ID_693317592" ENDARROW="Default" ENDINCLINATION="577;0;" ID="Arrow_ID_1115282938" SOURCE="ID_1922580473" STARTARROW="Default" STARTINCLINATION="1205;231;"/>
|
|
<icon BUILTIN="help"/>
|
|
<node CREATED="1461968428712" ID="ID_565746001" MODIFIED="1461968442674" TEXT="es ist nützlich für handgeschriegbene Diffs"/>
|
|
<node CREATED="1461968443334" ID="ID_1266765273" MODIFIED="1461968454521" TEXT="es verträgt sich nicht mit gemischten Kindern"/>
|
|
<node CREATED="1465428190234" ID="ID_1957591180" MODIFIED="1512926192136" TEXT="Kompromiß">
|
|
<linktarget COLOR="#a9b4c1" DESTINATION="ID_1957591180" ENDARROW="Default" ENDINCLINATION="-27;14;" ID="Arrow_ID_228215960" SOURCE="ID_310892577" STARTARROW="None" STARTINCLINATION="139;3;"/>
|
|
<icon BUILTIN="idea"/>
|
|
<node CREATED="1465428196730" ID="ID_117877138" MODIFIED="1465428204548" TEXT="belassen"/>
|
|
<node CREATED="1465428205352" ID="ID_887510195" MODIFIED="1465428215635" TEXT="akzeptieren, daß es nicht immer anwendbar ist"/>
|
|
<node CREATED="1465428216271" ID="ID_1296901581" MODIFIED="1465428234145" TEXT="die generische Variante "after Ref::END" ist sehr gut"/>
|
|
<node CREATED="1465428236860" ID="ID_339833424" MODIFIED="1465428248614" TEXT="speziell Attribut-Binding unterstützt zur generische Variante"/>
|
|
</node>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1469545751885" ID="ID_660087752" MODIFIED="1469545906061" TEXT="Namensgebung für generisches Mutator-Binding">
|
|
<arrowlink COLOR="#7c4b8e" DESTINATION="ID_263708712" ENDARROW="Default" ENDINCLINATION="-438;877;" ID="Arrow_ID_774958535" STARTARROW="Default" STARTINCLINATION="2134;135;"/>
|
|
<icon BUILTIN="flag-yellow"/>
|
|
</node>
|
|
<node CREATED="1472216217388" HGAP="21" ID="ID_1810727202" MODIFIED="1512926192136" TEXT="Semantik der Diff-Sprache" VSHIFT="5">
|
|
<node CREATED="1472216261102" ID="ID_1057680407" MODIFIED="1472216264937" TEXT="sinnvoll definiert"/>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1472216265486" ID="ID_1774905589" MODIFIED="1512926192137" TEXT="später re-evaluieren (Ticket #996)">
|
|
<node CREATED="1472216306208" ID="ID_310892577" MODIFIED="1512926192137" TEXT="AFTER">
|
|
<arrowlink DESTINATION="ID_1957591180" ENDARROW="Default" ENDINCLINATION="-27;14;" ID="Arrow_ID_228215960" STARTARROW="None" STARTINCLINATION="139;3;"/>
|
|
<node CREATED="1473040688153" ID="ID_979711393" MODIFIED="1473040722530" TEXT="bleibt vorerst erhalten">
|
|
<icon BUILTIN="yes"/>
|
|
</node>
|
|
<node CREATED="1473040705207" ID="ID_14067702" MODIFIED="1473040710378" TEXT="kann sinnvoll implementiert werden"/>
|
|
<node CREATED="1473040711582" ID="ID_1480176374" MODIFIED="1473040717859" TEXT="ist sehr nützlich">
|
|
<icon BUILTIN="ksmiletris"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1472219973288" ID="ID_587190582" MODIFIED="1512926192139" TEXT="Ref::THIS">
|
|
<icon BUILTIN="button_cancel"/>
|
|
<node CREATED="1472220009699" ID="ID_1534445515" MODIFIED="1472220054293">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
<i>wenn überhaupt, </i>dann im Matcher im Binding-Layer implementieren
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="yes"/>
|
|
</node>
|
|
<node CREATED="1473040485789" ID="ID_1621538037" MODIFIED="1473040633258" TEXT="nein: führt zu verworrener Implementierung bzw. ist unmöglich">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</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äß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_397737711" MODIFIED="1473040680738">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
<b>entfernt</b>, da schlechtes Design
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1472216312295" ID="ID_149667448" MODIFIED="1512926192140" TEXT="Ref::CHILD">
|
|
<icon BUILTIN="button_cancel"/>
|
|
<node CREATED="1472219981838" ID="ID_117724515" MODIFIED="1472219987506" TEXT="was genau soll das sein??"/>
|
|
<node CREATED="1472219987983" ID="ID_555190066" MODIFIED="1472219997032" TEXT="was ist der Unterschied zu Ref::THIS"/>
|
|
<node CREATED="1472219998405" ID="ID_1294425222" MODIFIED="1472220005255" TEXT="funktioniert das überhaupt noch??"/>
|
|
<node CREATED="1473040662653" ID="ID_1838404392" MODIFIED="1473040680738">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
<b>entfernt</b>, da schlechtes Design
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1458850387823" HGAP="19" ID="ID_415691337" MODIFIED="1512926192141" TEXT="allgemein" VSHIFT="13">
|
|
<node CREATED="1458850397158" ID="ID_1336568549" MODIFIED="1512926192141" TEXT="GenNode">
|
|
<node CREATED="1458850406396" ID="ID_1837583550" MODIFIED="1512926192141" TEXT="string-Repräsentation der Payload">
|
|
<icon BUILTIN="hourglass"/>
|
|
<node CREATED="1473352291785" ID="ID_1639951853" MODIFIED="1473352300715" TEXT="vorerst nicht benötigt"/>
|
|
<node CREATED="1473352306190" ID="ID_1647542723" MODIFIED="1473352310810" TEXT="wäre besser daß nicht"/>
|
|
<node CREATED="1473352312206" ID="ID_1150422227" MODIFIED="1473352316377" TEXT="Entscheidung vertagt"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1458850422587" ID="ID_1552868803" MODIFIED="1458851592866" TEXT="Metafunktion für mögliche Payload">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1458850437017" ID="ID_592865755" MODIFIED="1512926192142" TEXT="Planting-Handle">
|
|
<node CREATED="1458850456134" ID="ID_1020391699" MODIFIED="1473352276059" TEXT="Zwischenschicht einziehen im TreeMutator">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
anscheinend nicht notwendig
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="button_cancel"/>
|
|
</node>
|
|
<node CREATED="1458850463389" ID="ID_769403943" MODIFIED="1473352257250" TEXT="Generische Impl herauslösen">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1458850471228" ID="ID_167381938" MODIFIED="1473352333631" TEXT="Unit-Test hierfür">
|
|
<icon BUILTIN="bell"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1473352396906" HGAP="-48" ID="ID_392196966" MODIFIED="1518487921086" TEXT="Integration" VSHIFT="25">
|
|
<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ä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ö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="1518487921087" TEXT="...analog zur "mark"-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 <DiffStep>-Sequenz">
|
|
<icon BUILTIN="info"/>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1475251032255" ID="ID_824967618" MODIFIED="1518487921087" TEXT="paß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" HGAP="31" ID="ID_336806935" MODIFIED="1525124215230" 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=""Diff" 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="1475444176904" TEXT="Builder-Funktion nicht sinnvoll">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
....denn dann müßte der Benutzer die Mechanik sehr genau verstehen, und stets eine auto-Variable definieren.
|
|
</p>
|
|
<p>
|
|
Sinnvoll wäre dieser Ansatz nur, wenn das UI-Bus-API eine MutationMessage const& nehmen würde,
|
|
</p>
|
|
<p>
|
|
denn dann könnte man den Builder-Aufruf inline schreiben.
|
|
</p>
|
|
<p>
|
|
Da wir aber stets den Diff moven und dann iterieren, scheidet const& aus
|
|
</p>
|
|
<p>
|
|
Und für eine reine Ref erzeugt C++ niemals eine anonyme Instanz!
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1475439429055" ID="ID_1383518557" MODIFIED="1475444176904" TEXT="also: embeded Buffer">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...und diesen mit VTable bestücken.
|
|
</p>
|
|
<p>
|
|
Dafür wird die äußere Hü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öße">
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
<node CREATED="1475444135180" ID="ID_1434100612" MODIFIED="1475444176904" TEXT="sinnvoll: Spezialfall fü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="1533303965804" 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ö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ä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ß Interface sein"/>
|
|
<node CREATED="1502454136368" ID="ID_1196043940" MODIFIED="1502454138836" TEXT="IterSource"/>
|
|
<node CREATED="1502454139496" FOLDED="true" ID="ID_455247221" MODIFIED="1533608416326" TEXT="Problem: Übergabe">
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
<node CREATED="1502454152431" ID="ID_1452648004" MODIFIED="1502454163000" TEXT="Diff ü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ß 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ü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="1487275490779" TEXT="MockElm ist noncopyable">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...aus gutem Grund!
|
|
</p>
|
|
<p>
|
|
Der Nexus speichert nä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<string,string>"/>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1475449611754" HGAP="33" ID="ID_1285123321" MODIFIED="1512926192157" TEXT="Grundsatzfrage: Attribut-Map" VSHIFT="1">
|
|
<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="1475449893670" TEXT="Symptom: Compile-Fehler">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</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ügt eben <i>irgendwo</i> ein
|
|
</p>
|
|
<p>
|
|
Und es gibt nicht sowas wie das "zuletzt behandelte" Element
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
</node>
|
|
<node CREATED="1475506967550" HGAP="42" ID="ID_1112268061" MODIFIED="1475507021278" TEXT="ist aber implementierbar" VSHIFT="8">
|
|
<arrowlink COLOR="#9f96d9" DESTINATION="ID_1853473792" ENDARROW="Default" ENDINCLINATION="41;-121;" ID="Arrow_ID_503281678" 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" FOLDED="true" ID="ID_445949466" MODIFIED="1533608416327" TEXT="pro">
|
|
<icon BUILTIN="button_cancel"/>
|
|
<node CREATED="1475450042009" FOLDED="true" ID="ID_1941838908" MODIFIED="1533608416017" TEXT="man kö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="1533608416018">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</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" FOLDED="true" ID="ID_1285250844" MODIFIED="1533608416329" 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="1475450376320" TEXT="Hashmap">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...hat eine "zufällige" Reihenfolge, die von den Hash-Werten der gespeicherten Daten abhängt.
|
|
</p>
|
|
<p>
|
|
Das bricht mit unserem grundsätzlichen Konzept der <b>kongruenten</b>  Daten-Strukturen
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
</node>
|
|
<node CREATED="1475450272442" ID="ID_567969130" MODIFIED="1475450429317" TEXT="inkompatibel mit GenNode">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
Ein Diff, das von einer ETD gezogen wurde,
|
|
</p>
|
|
<p>
|
|
läß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>
|
|
|
|
</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ändigkeitshalber unterstützt">
|
|
<font NAME="SansSerif" SIZE="11"/>
|
|
</node>
|
|
<node CREATED="1475506411768" ID="ID_583086851" MODIFIED="1475506507414" TEXT="kann sinnvoll sein...">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</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ützen
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<font NAME="SansSerif" SIZE="10"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1475506514203" FOLDED="true" HGAP="45" ID="ID_1183193114" MODIFIED="1533608416331" TEXT="Begrü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änkt unterstützbar"/>
|
|
<node CREATED="1475506559309" ID="ID_1767038604" MODIFIED="1475506896798" TEXT="Objekt -> ETD -> Objekt">
|
|
<arrowlink COLOR="#807bce" DESTINATION="ID_1808149320" ENDARROW="Default" ENDINCLINATION="671;0;" ID="Arrow_ID_1677374853" STARTARROW="Default" STARTINCLINATION="994;0;"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</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="1518487921087" TEXT="muß Session referenzieren">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...was andernfalles komplett vermeidbar wäre,
|
|
</p>
|
|
<p>
|
|
da im Ü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_1679641405" ENDARROW="Default" ENDINCLINATION="604;-108;" ID="Arrow_ID_1210299906" STARTARROW="None" STARTINCLINATION="702;0;"/>
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1448658819990" FOLDED="true" ID="ID_405705528" MODIFIED="1535638840052" 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ü aufbauen"/>
|
|
<node CREATED="1448659158177" ID="ID_1496901578" MODIFIED="1518487921087" TEXT="Namen müssen matchen"/>
|
|
<node CREATED="1448659163089" ID="ID_431765107" MODIFIED="1518487921087" TEXT="man muß Korrektheit prüfen"/>
|
|
<node CREATED="1448683674443" ID="ID_1931753413" MODIFIED="1518487921087" TEXT="Einheitlichkeit gefährdet"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1448683454504" HGAP="42" ID="ID_510876193" MODIFIED="1518487921087" 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ü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="1535638813532" 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" ID="ID_1193936433" MODIFIED="1512926192187" 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="1450490504407" TEXT="fertig implementiert">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...was ich einen Monat spä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" ID="ID_1198560195" MODIFIED="1492442332396" 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<GenNode>"/>
|
|
<node CREATED="1452560897720" ID="ID_1869468443" MODIFIED="1492442561266" 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ände im UI einschlä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ür die erste Integrationsrunde vö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="1492443679390" 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>
|
|
<node CREATED="1448669332204" HGAP="76" ID="ID_329609486" MODIFIED="1518487921087" TEXT="InteractionControl">
|
|
<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="1555;-260;"/>
|
|
<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"/>
|
|
<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ü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ürstet die UI-Toolkits »gegen den Strich«"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1448669636900" HGAP="51" ID="ID_1111001545" MODIFIED="1518487921087" TEXT="Einführen einer Zwischenebene" VSHIFT="-24">
|
|
<node CREATED="1448669646474" ID="ID_1590745326" MODIFIED="1518487921087" TEXT="hyper-rä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ä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="InteractionStateManager" VSHIFT="-4">
|
|
<linktarget COLOR="#81759f" DESTINATION="ID_1679641405" ENDARROW="Default" ENDINCLINATION="604;-108;" ID="Arrow_ID_1210299906" SOURCE="ID_839961131" STARTARROW="None" STARTINCLINATION="702;0;"/>
|
|
<font BOLD="true" NAME="SansSerif" SIZE="13"/>
|
|
<node CREATED="1448669816476" ID="ID_1895677880" MODIFIED="1518487921088" TEXT="lauscht als Observer mit"/>
|
|
<node CREATED="1448669824243" ID="ID_1225519733" MODIFIED="1518487921088" TEXT="hängt sich in diverse Punkte ein"/>
|
|
<node CREATED="1448669838745" ID="ID_1663939304" MODIFIED="1518487921088" TEXT="hä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>
|
|
<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="1518487921088" TEXT="SpotLocator">
|
|
<node CREATED="1487270240084" ID="ID_1171094973" MODIFIED="1518487921088" TEXT="Erfü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=""wo sind wir"?"/>
|
|
<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="1518487921088" 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ß 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ß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önnen sich überlappen"/>
|
|
<node CREATED="1487273245421" ID="ID_1239635545" MODIFIED="1518487921088" TEXT="kö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ür Status-Ä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="1523746854594" TEXT="Koordinatensystem">
|
|
<linktarget COLOR="#a9a5cd" DESTINATION="ID_150523428" ENDARROW="Default" ENDINCLINATION="1440;-3055;" ID="Arrow_ID_1485937133" SOURCE="ID_50865654" STARTARROW="None" STARTINCLINATION="1109;-37;"/>
|
|
<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ä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="1518487921088" 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ört zum InteractionDirector"/>
|
|
<node CREATED="1487275255092" ID="ID_528280403" MODIFIED="1518487921089" TEXT="muß 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 -> UI-Bus">
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
<node CREATED="1487275806658" ID="ID_46146913" MODIFIED="1518487921089" TEXT="CoreService <-> 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ß im Modell hä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ß, was zu ihr gehö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ö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" HGAP="23" ID="ID_669457401" MODIFIED="1518487921089" TEXT="Bus-Terminal" VSHIFT="20">
|
|
<icon BUILTIN="go"/>
|
|
<node CREATED="1448070601165" ID="ID_1711137699" MODIFIED="1518487921089" TEXT="Methoden">
|
|
<node CREATED="1448407030239" ID="ID_619913132" MODIFIED="1518487921089">
|
|
<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="1518487921089">
|
|
<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="1518487921089" TEXT="Nachricht mit Subjekt == indirekt, zur Weiterleitung"/>
|
|
<node CREATED="1448560744380" ID="ID_310914031" MODIFIED="1518487921089" TEXT="Nachricht ohne Subjekt == direkt, Subjekt implizit"/>
|
|
<node CREATED="1448560790558" ID="ID_1545911136" MODIFIED="1518487921089" TEXT="Bedeutung der Nachricht ergibt sich aus ihrem Namen"/>
|
|
</node>
|
|
<node CREATED="1448070605948" ID="ID_1779744719" MODIFIED="1518487921089" TEXT="Verhalten">
|
|
<node CREATED="1448407128826" ID="ID_1974801494" MODIFIED="1518487921089" TEXT="Bus-Master ist ein speziell implementiertes BusTerm"/>
|
|
<node CREATED="1448407139441" ID="ID_392543622" MODIFIED="1518487921089" TEXT="das gewöhnliche BusTerm ist einem Tangible zugeordnet"/>
|
|
<node CREATED="1448407187035" ID="ID_1622894914" MODIFIED="1518487921089" TEXT="sowie bus-seitig an ein "upstream" BusTerm"/>
|
|
</node>
|
|
<node CREATED="1448070618434" ID="ID_1925738380" MODIFIED="1518487921089" TEXT="Zuordnung">
|
|
<node CREATED="1448406963801" ID="ID_1506114314" MODIFIED="1518487921089">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
Bus-Design is <b>selbstähnlich</b>
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1448406977350" ID="ID_1450959387" MODIFIED="1518487921089" TEXT="jedes BusTerm ist lediglich eine personalisierte Bus-Anbindung"/>
|
|
<node CREATED="1450390181806" ID="ID_61666430" MODIFIED="1518487921089" TEXT="es registriert beim Bus-Mater einen Link zum zugehörigen Tangible"/>
|
|
<node CREATED="1448406994860" ID="ID_846198635" MODIFIED="1518487921089">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
Kennzeichen ist die <b>EntryID</b> des zugehörigen Elements
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1434128059966" ID="ID_823283341" MODIFIED="1518487921089" TEXT="Connect">
|
|
<node CREATED="1434128071126" HGAP="13" ID="ID_1618124128" MODIFIED="1518487921089" TEXT="UI-Bus" VSHIFT="11">
|
|
<linktarget COLOR="#3a8df0" DESTINATION="ID_1618124128" ENDARROW="Default" ENDINCLINATION="-25;-262;" ID="Arrow_ID_539627804" SOURCE="ID_257833497" STARTARROW="Default" STARTINCLINATION="-2;35;"/>
|
|
<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ä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ät">
|
|
<node CREATED="1450390447884" ID="ID_1176145978" MODIFIED="1518487921090" TEXT="nicht Threadsafe"/>
|
|
<node CREATED="1450390454236" ID="ID_1617539841" MODIFIED="1518487921090" TEXT="läuft ausschließlich im Event-Thrad"/>
|
|
</node>
|
|
<node CREATED="1434128332277" ID="ID_33025591" MODIFIED="1518487921090" TEXT="Deregistrierung">
|
|
<node CREATED="1450390522393" ID="ID_1448879688" MODIFIED="1518487921090" TEXT="Uplink: implizit, hä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 CREATED="1481413366826" 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ö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="1518487921090" TEXT="Nexus ist zu dem Zeitpunkt schon destruiert">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
Die Lösung für diese wecheslseitige Abhängigkeit
|
|
</p>
|
|
<p>
|
|
ist, den Nexus als Member im CoreService zu haben,
|
|
</p>
|
|
<p>
|
|
weil man dann seine Addresse schon weiß, bevor er erzeugt ist.
|
|
</p>
|
|
<p>
|
|
|
|
</p>
|
|
<p>
|
|
Dummerweise rettet mich dieser Trick nicht im Shutdown,
|
|
</p>
|
|
<p>
|
|
denn hier nun läuft tatsächlicher Code aus dem Destruktor heraus!
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1481413489290" ID="ID_24882673" MODIFIED="1518487921090" TEXT="folglich lä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="1518487921090" TEXT="kann Reihenfolge nicht etablieren">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
bei einem <i>echten Downstream</i> könnte man dafür sorgen,
|
|
</p>
|
|
<p>
|
|
daß er grundsätzlich vor dem Nexus weggeht. Aber nun kommt, auf dem Umweg
|
|
</p>
|
|
<p>
|
|
ü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="1518487921090" TEXT="soll auch so bleiben">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
ich will nicht damit anfangen, daß 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öst beide" VSHIFT="6">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1481415996732" ID="ID_98181285" MODIFIED="1518487921090" TEXT="ein "circuit breaker""/>
|
|
<node CREATED="1481416013842" ID="ID_1905276259" MODIFIED="1518487921090">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
beendet Deregistrierung,
|
|
</p>
|
|
<p>
|
|
wenn ein 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 CREATED="1453546261390" HGAP="25" ID="ID_1996322416" MODIFIED="1518487921090" TEXT="Test" VSHIFT="12">
|
|
<node CREATED="1453546264638" ID="ID_975821244" MODIFIED="1518487921090" TEXT="Test-Nexus">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node CREATED="1453546268998" ID="ID_1692848170" MODIFIED="1518487921090" 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 BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1535815210288" ID="ID_1041148737" MODIFIED="1535815475299" TEXT="Problem: kein wirkliches Backtracking">
|
|
<linktarget COLOR="#ba8096" DESTINATION="ID_1041148737" ENDARROW="Default" ENDINCLINATION="-1705;-7489;" ID="Arrow_ID_1257144480" SOURCE="ID_493114230" STARTARROW="None" STARTINCLINATION="838;114;"/>
|
|
<icon BUILTIN="flag-yellow"/>
|
|
<node CREATED="1535835597691" ID="ID_218241863" MODIFIED="1535835683187" TEXT="wird relevant bei Richtungs-Wechsel">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
Beispiel:
|
|
</p>
|
|
<p>
|
|
a-b-c-a
|
|
</p>
|
|
<p>
|
|
match("a").after("b") scheitert, weil sich die Suche am ersten "a" festbeiß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ß verfügbar bleiben"/>
|
|
<node CREATED="1535836509369" ID="ID_391734023" MODIFIED="1535836566669" TEXT="wenn eine Konfiguration erschöpft (leer) ist müssen wir..."/>
|
|
<node CREATED="1535836534934" ID="ID_371785386" MODIFIED="1535836558822" TEXT="auf dem nä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ür solche Auswertungen konstruiert">
|
|
<icon BUILTIN="yes"/>
|
|
</node>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1535893431656" ID="ID_1626597975" MODIFIED="1535893590393" TEXT="Beschluß: umstellen auf TreeExplorer">
|
|
<arrowlink COLOR="#cc3e57" DESTINATION="ID_1665477644" ENDARROW="Default" ENDINCLINATION="-4110;-2852;" ID="Arrow_ID_1163013232" STARTARROW="None" STARTINCLINATION="1631;0;"/>
|
|
<icon BUILTIN="pencil"/>
|
|
</node>
|
|
<node CREATED="1536441983485" ID="ID_330124350" MODIFIED="1536442038343" TEXT="Warnung: anonymous namespace">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...ist mir nicht vö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>
|
|
                 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>
|
|
   class EventMatch
|
|
</p>
|
|
<p>
|
|
         ^~~~~~~~~~
|
|
</p>
|
|
<p>
|
|
In file included from src/lib/diff/test-mutation-target.hpp:55:0,
|
|
</p>
|
|
<p>
|
|
                 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>
|
|
   class EventMatch
|
|
</p>
|
|
<p>
|
|
         ^~~~~~~~~~
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1485548830035" 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="1518487921090" TEXT="Problem: globale Aktionen">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
Beispiel: Aktionen, die im globalen Menü stehen.
|
|
</p>
|
|
<p>
|
|
"Add Sequence"
|
|
</p>
|
|
<ul>
|
|
<li>
|
|
wer bildet daraus ein Command?
|
|
</li>
|
|
<li>
|
|
auf welchen Kontext bezieht sich das
|
|
</li>
|
|
<li>
|
|
wen kann die Menü-Registrierung konkret ansprechen (Verdrahtung ist statisch)
|
|
</li>
|
|
</ul>
|
|
</body>
|
|
</html></richcontent>
|
|
<linktarget COLOR="#824f68" DESTINATION="ID_826011549" ENDARROW="Default" ENDINCLINATION="-906;-1187;" ID="Arrow_ID_1373278707" SOURCE="ID_1122969153" STARTARROW="Default" STARTINCLINATION="877;262;"/>
|
|
<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ß 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="1518487921090" 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 CREATED="1453545812389" HGAP="43" ID="ID_202253849" MODIFIED="1518487921090" 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 DESTINATION="ID_1343270939" ENDARROW="Default" ENDINCLINATION="-197;638;" ID="Arrow_ID_1686519160" STARTARROW="Default" STARTINCLINATION="-83;-1020;"/>
|
|
<font NAME="SansSerif" SIZE="13"/>
|
|
<icon BUILTIN="prepare"/>
|
|
<node CREATED="1453545875627" ID="ID_1411740156" MODIFIED="1518487921090" TEXT="Definition »Zentral-Dienste«">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
Dienste im UI, erreichbar ü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 CREATED="1453545968166" ID="ID_399884859" MODIFIED="1518487921090" TEXT="Command-Handler">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1453546129537" ID="ID_1926242869" MODIFIED="1518487921090" TEXT="empfängt "act"-Nachrichten">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1453546381255" ID="ID_1252400934" MODIFIED="1518487921090" TEXT=""bind" -> 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="1525124215243" 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ährliche ausschließ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öst in GCC-5 -- <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ä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ö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ächlich möglichen Umwandlungen drüber
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="info"/>
|
|
</node>
|
|
<node CREATED="1453590667630" ID="ID_792450888" MODIFIED="1453590699782" TEXT="überprüft: mit -O3 und strip bleibt erstaunlich wenig übrig"/>
|
|
<node CREATED="1453590741428" ID="ID_1733557933" MODIFIED="1453590749327" TEXT="1.6MiB -> 100k"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1453546367201" ID="ID_1473684366" MODIFIED="1518487921090" TEXT=""bang" -> 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ö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="1533303593408" TEXT="Protokoll-Erweiterung" VSHIFT="8">
|
|
<arrowlink COLOR="#e9ba2d" DESTINATION="ID_242219866" ENDARROW="Default" ENDINCLINATION="-944;1604;" 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 BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1483927678318" HGAP="25" ID="ID_1324099152" MODIFIED="1518487921090" TEXT="Notification-Facade ö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="flag-yellow"/>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1483927692988" ID="ID_354422174" MODIFIED="1518487921090" TEXT="Lebenszyklus-Fragen verifizieren">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1483927735679" ID="ID_783490676" MODIFIED="1518487921090" TEXT="Integration in UI-Main verifizieren">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1483927710450" ID="ID_1085939201" MODIFIED="1522935005617" TEXT="Hochfahren des UI / Schließen des UI">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1515977616903" ID="ID_1098045534" MODIFIED="1522935492881" TEXT="TODO: einfaches Fehler-Display">
|
|
<arrowlink COLOR="#ebf0a5" DESTINATION="ID_1007296291" ENDARROW="Default" ENDINCLINATION="-3154;1704;" ID="Arrow_ID_1091720734" STARTARROW="None" STARTINCLINATION="1627;38;"/>
|
|
<icon BUILTIN="flag-pink"/>
|
|
</node>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1501778430101" ID="ID_489078622" MODIFIED="1531588554277" 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="3463;134;"/>
|
|
<linktarget COLOR="#6c5f80" DESTINATION="ID_489078622" ENDARROW="Default" ENDINCLINATION="725;-39;" 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="1518487921091" 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ängt alle <b>state mark notificatons</b>
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1455290726358" ID="ID_386120755" MODIFIED="1518487921091" TEXT="muß 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ß Auszü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" HGAP="78" ID="ID_1920838120" MODIFIED="1518487921091" TEXT="core commands" VSHIFT="21">
|
|
<icon BUILTIN="prepare"/>
|
|
<node CREATED="1488672580926" ID="ID_1920974710" MODIFIED="1518487921091" TEXT="konzeptionell">
|
|
<node CREATED="1488672621585" ID="ID_1461875887" MODIFIED="1518487921091" TEXT="Command-cycle">
|
|
<linktarget COLOR="#706a9a" DESTINATION="ID_1461875887" ENDARROW="Default" ENDINCLINATION="-923;-789;" ID="Arrow_ID_457540370" SOURCE="ID_969011841" STARTARROW="None" STARTINCLINATION="806;300;"/>
|
|
<icon BUILTIN="pencil"/>
|
|
<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ß grundsä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ür ein bestimmes Command"/>
|
|
<node CREATED="1488676629451" ID="ID_989334768" MODIFIED="1518487921091" TEXT="Problem: wie findet man den Zustä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önnte für
|
|
</p>
|
|
<p>
|
|
mehrere Commands zuständig sein
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<node CREATED="1488676210948" ID="ID_1003704499" MODIFIED="1518487921091" TEXT="verschiedene Ausprä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önnten für
|
|
</p>
|
|
<p>
|
|
ein Command zustä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="1518487921091" 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ä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="1518487921091">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
<i>muß</i> 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 "gleichzeitig" unterwegs sein könnten
|
|
</li>
|
|
</ul>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1488674659521" ID="ID_1283697108" MODIFIED="1518487921091" 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="1518487921091" 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ßerdem...
|
|
</p>
|
|
<p>
|
|
...coden wir ja nicht gegen die Implementierung,
|
|
</p>
|
|
<p>
|
|
sondern gegen eine Abstraction (Command), die eigens dafür geschaffen wurde
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
<node CREATED="1488674905160" ID="ID_1688143285" MODIFIED="1518487921091" TEXT="ungutes Gefühl">
|
|
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
|
|
<icon BUILTIN="smily_bad"/>
|
|
<node CREATED="1488674941243" ID="ID_1628081916" MODIFIED="1518487921091" TEXT="unterläuft das Interface-System"/>
|
|
<node CREATED="1488675139160" ID="ID_1466153465" MODIFIED="1518487921091" TEXT="unterlä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ür "Spezialisierungen" gedacht"/>
|
|
<node CREATED="1488936223175" ID="ID_1105962999" MODIFIED="1518487921091" TEXT="zu prüfen: overhead">
|
|
<icon BUILTIN="yes"/>
|
|
</node>
|
|
<node CREATED="1488936242413" ID="ID_1255236132" MODIFIED="1518487921091" TEXT="kö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ühl hören"/>
|
|
<node CREATED="1488936653341" ID="ID_629143054" MODIFIED="1518487921091" TEXT="Design leitet in richtige Bahnen"/>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1488936670970" ID="ID_697148715" MODIFIED="1518487921091" TEXT="die Trennung respektieren">
|
|
<arrowlink COLOR="#79d29b" DESTINATION="ID_1131387570" ENDARROW="Default" ENDINCLINATION="-48;-109;" ID="Arrow_ID_1598234794" STARTARROW="None" STARTINCLINATION="-421;-27;"/>
|
|
<icon BUILTIN="yes"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1488675785223" ID="ID_134788782" MODIFIED="1518487921091" TEXT="Aufgaben">
|
|
<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ät"/>
|
|
<node CREATED="1488936429139" ID="ID_858892843" MODIFIED="1518487921092" TEXT="gehört zum Command-System"/>
|
|
</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="1525124215246" TEXT="wer hält die Instanz (am Leben)?">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1488676827432" ID="ID_1354771185" MODIFIED="1488676881245" 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="1488676965416" 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 -> 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ührung im Dispatcher erst später"/>
|
|
<node COLOR="#338800" CREATED="1488677418087" ID="ID_644949863" MODIFIED="1488677499488" TEXT="ist doch kein Problem">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...denn das GUI läuft ja synchron.
|
|
</p>
|
|
<p>
|
|
D.h. wir wissen, wenn wir das Air-Gap überstanden haben.
|
|
</p>
|
|
<p>
|
|
Ab diesem Punkt hä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ßfolgerung">
|
|
<linktarget COLOR="#79d29b" DESTINATION="ID_1131387570" ENDARROW="Default" ENDINCLINATION="-48;-109;" ID="Arrow_ID_1598234794" SOURCE="ID_697148715" STARTARROW="None" STARTINCLINATION="-421;-27;"/>
|
|
<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ü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="1492443967658" TEXT="unterstützt einfachen Fallback">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
aufruf direkt mit Command-ID -> 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="1525124215249" 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ä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ür UI-Entitä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ö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ö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: "kann dieses Command ausgeführt werden"?"/>
|
|
<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="1492443016818" TEXT="TODO: wie werden die Parameter konkret übergeben?">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
es könnte z.B. sein, daß man vom InteractionState
|
|
</p>
|
|
<p>
|
|
direkt einen Record<GenNode> bezieht, und bei diesem Zugriff
|
|
</p>
|
|
<p>
|
|
automatisch die Kontext-Accessor-Ausdrücke ausgewertet werden
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="flag-yellow"/>
|
|
</node>
|
|
<node CREATED="1488940519518" ID="ID_1875791797" MODIFIED="1488940533992" TEXT="bei nächster Anfrage wird CmdInstanceManager daher neue Instanz anlegen"/>
|
|
</node>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1488677859619" HGAP="-15" ID="ID_827179653" MODIFIED="1518487921092" 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ß jedes Widget
|
|
</p>
|
|
<p>
|
|
mit dem InteractionDirector verdrahtet sein muß!
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<arrowlink COLOR="#9f5680" DESTINATION="ID_850989325" ENDARROW="Default" ENDINCLINATION="211;189;" ID="Arrow_ID_1007188680" STARTARROW="None" STARTINCLINATION="912;-974;"/>
|
|
<linktarget COLOR="#758ba4" DESTINATION="ID_827179653" ENDARROW="Default" ENDINCLINATION="173;83;" ID="Arrow_ID_57938013" SOURCE="ID_1621107057" STARTARROW="None" STARTINCLINATION="384;-135;"/>
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
<node CREATED="1488936835940" ID="ID_1322149090" MODIFIED="1518487921092" TEXT="separates Problem">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
hat ü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 CREATED="1488936840059" ID="ID_1305671938" MODIFIED="1518487921092" 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;"/>
|
|
<node CREATED="1488937419308" ID="ID_994813744" MODIFIED="1518487921092" TEXT="lib::Depend ausbauen"/>
|
|
<node CREATED="1488937436890" ID="ID_1184288068" MODIFIED="1518487921092" TEXT="kann auf später vertagt werden"/>
|
|
<node CREATED="1488937424996" ID="ID_1712367280" MODIFIED="1518487921092" TEXT="vorerst eigenes Front-End verwenden"/>
|
|
<node CREATED="1488937449896" ID="ID_1352702920" MODIFIED="1518487921092" 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>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</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önnte Binde-Regeln geben"/>
|
|
<node CREATED="1488937996901" ID="ID_1000532365" MODIFIED="1518487921092" TEXT="Lösungsweg vom Command vorkonfiguriert">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...nicht klar, ob das notwendig (und gut) ist
|
|
</p>
|
|
<p>
|
|
es kö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="1518487921092" 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="1518487921092" TEXT="fest hinterlegte Eintität einsetzen">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...das UI weiß,
|
|
</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önnte ein <i>Advice</i> sein
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1488937682649" ID="ID_1090053275" MODIFIED="1518487921092" 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 "aktuelle Element" wir eine Art Typ-Match gemacht.
|
|
</p>
|
|
<p>
|
|
Wenn der paß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="1518487921092" TEXT="partial application">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
eine Argumentliste mit mehreren Parametern wir Schritt für Schritt geschlossen
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1488937724867" ID="ID_231519502" MODIFIED="1518487921092" 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äß Scope "nächstgelegne" genommen
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1488937933566" ID="ID_170827087" MODIFIED="1518487921092" TEXT="das sind komplexe Pläne">
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
</node>
|
|
<node CREATED="1488937947004" ID="ID_1297081811" MODIFIED="1518487921092" TEXT="Schlußfolgerung: nur die Strategie vorsehen">
|
|
<icon BUILTIN="yes"/>
|
|
</node>
|
|
</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ü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ätzen"/>
|
|
</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" ID="ID_1805268724" MODIFIED="1518487921092" 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="842;21;" ID="Arrow_ID_726918944" SOURCE="ID_898481930" STARTARROW="None" STARTINCLINATION="1012;0;"/>
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1489191208557" ID="ID_632390561" MODIFIED="1518487921092" 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>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1489191229098" ID="ID_341428100" MODIFIED="1525124215256" TEXT="#1089 Command instance management">
|
|
<linktarget COLOR="#584d79" DESTINATION="ID_341428100" ENDARROW="Default" ENDINCLINATION="1995;-1317;" ID="Arrow_ID_879741123" SOURCE="ID_1331796226" STARTARROW="None" STARTINCLINATION="334;-13;"/>
|
|
<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ü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="1492167861240" 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="1512926192228" TEXT="zu klä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 überbügeln"/>
|
|
<node CREATED="1491495244653" ID="ID_1710448495" MODIFIED="1491495254015" TEXT="stillschweigend die bestehende Instanz verwenden"/>
|
|
<node CREATED="1491495254699" ID="ID_1848409976" MODIFIED="1491495265858" TEXT="per Fehler abweisen">
|
|
<icon BUILTIN="forward"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1491008040105" ID="ID_662216926" MODIFIED="1512926192229" 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="1491109806224" TEXT="Basisfall lä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="1491618830202" TEXT="nicht direkt">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
der Umstand, daß Commands auch ausgeführt werdern können,
|
|
</p>
|
|
<p>
|
|
gehört nicht zum Thema "Instanz-Management"
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1491499005954" ID="ID_1944400975" MODIFIED="1491618830202" 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ührt werden, während ein weiteres
|
|
</p>
|
|
<p>
|
|
schon "in der Mache ist"
|
|
</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="35" ID="ID_118278209" MODIFIED="1512926192230" TEXT="Refactoring" VSHIFT="2">
|
|
<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" 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="1491753316996" TEXT="Command-Zugriff ist by value">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...aus gutem Grund
|
|
</p>
|
|
<p>
|
|
(kann mich erinnern, daß ich mir das überlegt hatte).
|
|
</p>
|
|
<p>
|
|
Sofern Definitionen wirklich concurrent geändert oder gelöscht werden,
|
|
</p>
|
|
<p>
|
|
könnte es sein, daß jemand auf einer stale reference arbeitet,
|
|
</p>
|
|
<p>
|
|
denn das Lock schü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öht.
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1491753132377" ID="ID_1441469124" MODIFIED="1491753156451" TEXT="müßte dafü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="1491753389816" TEXT="Bus + CommandHandler + GenNode">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
aber sich mit einem Refcount verrückt machen.....
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="smiley-oh"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1491656361886" HGAP="62" ID="ID_1269299900" MODIFIED="1525124215262" 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="1491702954154" TEXT="Festlegung: CommandID wird als Symbol entgegengenommen">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
....künftige Weiterung:
|
|
</p>
|
|
<p>
|
|
auch in EntryID könnte ein Symbol-Stecken,
|
|
</p>
|
|
<p>
|
|
mithin in der GenNode::ID
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1491659382161" ID="ID_948768193" MODIFIED="1491702871022" TEXT="Performance: maybeGet">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
da dieser Zugriff wirklich für jedes Command passiert,
|
|
</p>
|
|
<p>
|
|
möchte ich mit dem Minimum an Hashtable-Zugriffen auskommen.
|
|
</p>
|
|
<p>
|
|
Daher prü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ü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" HGAP="27" ID="ID_1349137025" MODIFIED="1491753610374" TEXT="in UI-Bus" VSHIFT="6">
|
|
<icon BUILTIN="help"/>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1491692419958" ID="ID_411638678" MODIFIED="1492391112135" 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ür explizite Spezialisierungen?"/>
|
|
<node CREATED="1491692779933" ID="ID_184706664" MODIFIED="1491692783680" TEXT="Abwä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ö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="1491693419959" TEXT="CommandHandler hat keinen Rückgabewert">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
d.h. wir müß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="1491693375452" TEXT="InteractionState ist kein Tangible">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
das heißt, für das ganze Thema InteractionControl
|
|
</p>
|
|
<p>
|
|
schwebt mir eine Zwischenschicht unabhängig von den Widgets vor
|
|
</p>
|
|
<p>
|
|
|
|
</p>
|
|
<p>
|
|
Wenn nun aber das Anfordern einer neuen Instanz über den Bus laufen soll,
|
|
</p>
|
|
<p>
|
|
dann wü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="1491693514745">
|
|
<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üßte sich InteractionState irgendwo "hinten rum" an den Bus ranmachen,
|
|
</p>
|
|
<p>
|
|
z.B. über den InteractionDirector. Das ist aber nun wirklich absurrd,
|
|
</p>
|
|
<p>
|
|
da es letztlich nur darum geht ein <i>ohnehin öffentliches</i>  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="1525124215270" TEXT="Ü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ß nicht explizit eröffnet werden"/>
|
|
<node CREATED="1492293307511" ID="ID_582978700" MODIFIED="1492293317442" TEXT="Instanzen selbst für globale Commands"/>
|
|
</node>
|
|
<node CREATED="1492293359944" ID="ID_1367582526" MODIFIED="1492293429410" TEXT="Konsequenzen">
|
|
<node CREATED="1492293430689" ID="ID_1472205001" MODIFIED="1492293430689" TEXT="weitgehender Verzicht auf Konsistenzprüfungen"/>
|
|
<node CREATED="1492293588400" ID="ID_1878334690" MODIFIED="1492293883630" TEXT="Binden und Dispatch mü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önnte längerfristig wegfallen"/>
|
|
</node>
|
|
<node CREATED="1492293450067" ID="ID_1626482891" MODIFIED="1492293452767" TEXT="Fä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>ö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> 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 übergeben"/>
|
|
<node CREATED="1492294063183" ID="ID_1341000232" MODIFIED="1492294094983" TEXT="hinterläß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ü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 übergeben"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1492294356319" ID="ID_1877638479" MODIFIED="1492294363265" TEXT="Semantik-Ä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="1492350141681" TEXT="Suche zuerst in der globalen 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ä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 ü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ä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" ID="ID_1621107057" MODIFIED="1518487921092" 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üßte generalisiert werden"/>
|
|
<node CREATED="1492094161724" ID="ID_657768231" MODIFIED="1518487921092" TEXT="Refactoring notwendig">
|
|
<node CREATED="1492094294218" ID="ID_531986736" MODIFIED="1518487921092" TEXT="Komplexitä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äufig eigenständig" VSHIFT="4">
|
|
<node CREATED="1492094528370" ID="ID_1032947061" MODIFIED="1518487921092" TEXT="später mal integrieren">
|
|
<arrowlink COLOR="#8697be" DESTINATION="ID_451964727" ENDARROW="Default" ENDINCLINATION="200;-562;" ID="Arrow_ID_1211717131" STARTARROW="None" STARTINCLINATION="1387;-152;"/>
|
|
</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 Kompnente muß kooperieren"/>
|
|
<node CREATED="1492096285706" ID="ID_1257721538" MODIFIED="1518487921092" TEXT="oder externe Kompnente muß einen Adapter installieren"/>
|
|
<node CREATED="1492096269716" ID="ID_527173807" MODIFIED="1518487921092" TEXT="oder externe Komponente muß das Front-end betreiben"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1492095433567" HGAP="69" ID="ID_1208499974" MODIFIED="1525124215274" 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>
|
|
<icon BUILTIN="button_cancel"/>
|
|
<node CREATED="1492095437190" ID="ID_491978759" MODIFIED="1492095481564" TEXT="Wunsch: access(ID).<operation>(args)"/>
|
|
<node CREATED="1492096317382" ID="ID_554292510" MODIFIED="1492096319497" TEXT="möglich">
|
|
<node CREATED="1492096321341" ID="ID_543087109" MODIFIED="1492096656547" TEXT="CmdAccess::for(id).<operation>(args)"/>
|
|
<node CREATED="1492096678244" ID="ID_1032312440" MODIFIED="1492096690927" TEXT="cmdAccess(id).<operation>(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ählbare Kontext-ID">
|
|
<icon BUILTIN="idea"/>
|
|
<node CREATED="1492096925259" ID="ID_1180559929" MODIFIED="1492096943012" TEXT="müß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ä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ß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ü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="1492099546779" TEXT="gentle degradation">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
die DSL muß so konstruiert werden,
|
|
</p>
|
|
<p>
|
|
daß die Syntax-Elemente nahtlos simplifiziert werden können,
|
|
</p>
|
|
<p>
|
|
in eine Form, die sich unmittelbar jetzt implementieren läß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ß Argument-Rollen auszeichnen können"/>
|
|
<node CREATED="1492099622066" ID="ID_1927536817" MODIFIED="1492099630669" TEXT="erweiterbar auf binding rules"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1492281599624" HGAP="22" ID="ID_1089419591" MODIFIED="1518487921092" TEXT="einfache Lö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ü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>
|
|
</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>
|
|
<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>
|
|
<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=""ein UI-Element"">
|
|
<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ü-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ü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="1518487921093" TEXT="Ausführung abweisen">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...stattdessen einen Fehler-Indikator auslösen
|
|
</p>
|
|
<p>
|
|
(Beispiel "in-point fehlt")
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1489544910395" ID="ID_909938815" MODIFIED="1518487921093" TEXT="enable Action">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...das ist eine Reaktion,
|
|
</p>
|
|
<p>
|
|
die von einem managing Ui-Element ausgefü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="1518487921093" TEXT="zu klären">
|
|
<node CREATED="1491005025928" ID="ID_1805144008" MODIFIED="1525124215277" 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öglichkeiten">
|
|
<icon BUILTIN="info"/>
|
|
<node CREATED="1491005058931" ID="ID_1108733153" MODIFIED="1492391288793" TEXT="mit neuem Klon ü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ö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ß geht von Exclusivität aus"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1491005071634" ID="ID_178338289" MODIFIED="1492443389733" TEXT="zur Klärung">
|
|
<icon BUILTIN="bell"/>
|
|
<node CREATED="1491005078409" ID="ID_1515823316" MODIFIED="1492391288793" TEXT="...muß ich wissen, wie newInstance verwendet wird"/>
|
|
<node CREATED="1491005491226" ID="ID_1986906306" MODIFIED="1492443381583" TEXT="und das hängt von InvocationTrail ab">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
invocationTral wurde aufgegeben.
|
|
</p>
|
|
<p>
|
|
Insofern lö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> Instanz-ID angibt,
|
|
</p>
|
|
<p>
|
|
bleibt es bei der stringenten Fehlerbehandlung
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1491494748185" ID="ID_1589354901" MODIFIED="1518487921093" TEXT="Instanzen registrieren">
|
|
<icon BUILTIN="help"/>
|
|
<node CREATED="1491494779796" ID="ID_1437580350" MODIFIED="1518487921093" TEXT="oder nur Prototypen?">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
das heißt, es geht um die Haupt-Registry für Commands.
|
|
</p>
|
|
<p>
|
|
Wenn wir eine Instanz machen, um Parameter zu binden und sie dann schließlich auszuführen,
|
|
</p>
|
|
<p>
|
|
könnte man dieser Instanz einen Namen geben, und sie in die Haupt-Registry eintragen..
|
|
</p>
|
|
<p>
|
|
Oder man kö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ü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" ID="ID_1983035921" MODIFIED="1518487921093" TEXT="InteractionState <=> InvocationTrail">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...ist jetzt geklä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ö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" MODIFIED="1492170878863" TEXT="globale Menü-Aktion"/>
|
|
<node CREATED="1492170880371" ID="ID_594766034" MODIFIED="1492170903172" TEXT="schließe Session!"/>
|
|
</node>
|
|
<node CREATED="1492170941739" ID="ID_1680428229" MODIFIED="1533608414025" TEXT="Lö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ührt aber dann das Binden direkt aus"/>
|
|
<node CREATED="1492171547624" ID="ID_1140206188" MODIFIED="1533608414025" TEXT="Lö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ß, ob Command ausfü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ö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ührbarkeit"/>
|
|
<node CREATED="1492173787950" ID="ID_318157835" MODIFIED="1492173802664" TEXT="Command-Instanz wird erst spä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ötigt"/>
|
|
<node CREATED="1492206505907" ID="ID_427665863" MODIFIED="1492206512494" TEXT="und im Moment auch nicht abschätzbar"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1492173833368" HGAP="42" ID="ID_769512112" MODIFIED="1525124215283" TEXT="widersprü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="1492173985267" TEXT="wozu Auslösung über BusTerm eines Widgets">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...wenn es doch offenbar für den "fire-and-forget"-Fall
|
|
</p>
|
|
<p>
|
|
genauso gut möglich ist, über eine zentrale Stelle zu triggern.
|
|
</p>
|
|
<p>
|
|
Nebenläufigkeit ist kein Argument (da das UI single-threaded lä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önnte auf die bang!-Nachricht verzichten">
|
|
<icon BUILTIN="idea"/>
|
|
<node CREATED="1492205847909" ID="ID_20433747" MODIFIED="1492205860240" TEXT="entfernt eine Menge Komplexität">
|
|
<icon BUILTIN="ksmiletris"/>
|
|
</node>
|
|
<node CREATED="1492205861275" ID="ID_1520439061" MODIFIED="1492205867150" TEXT="der dämliche Visitor ist weg!"/>
|
|
<node COLOR="#338800" CREATED="1492205867738" ID="ID_1598058671" MODIFIED="1492206444561" TEXT="sofort ausgefü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önnte</i> 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ß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ü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 "hintenrum" 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" HGAP="114" ID="ID_1743832326" MODIFIED="1525124215289" TEXT="Design-Kritik" VSHIFT="-55">
|
|
<arrowlink COLOR="#f7335a" DESTINATION="ID_43582318" ENDARROW="Default" ENDINCLINATION="-123;-43;" ID="Arrow_ID_601519634" STARTARROW="Default" STARTINCLINATION="-63;109;"/>
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1492269138424" ID="ID_1682612433" MODIFIED="1492269153284" TEXT="gefä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 ü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> verwendet
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1492269433415" ID="ID_55077056" MODIFIED="1492269446161" TEXT="es würde genügen, sie beim Einfü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önnen koexistieren"/>
|
|
</node>
|
|
<node CREATED="1492269922724" ID="ID_806519829" MODIFIED="1492270008064" 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 ü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ürde fall-Back auf globale Commands beseitigen"/>
|
|
<node CREATED="1492270075064" ID="ID_814785630" MODIFIED="1492270086423" TEXT="wäre eigentlich sauberer als dieser Fall-back">
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
<node CREATED="1492270046164" ID="ID_191900745" MODIFIED="1492270058746" TEXT="das kö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 "Protokoll"">
|
|
<node CREATED="1492270115626" ID="ID_1073186006" MODIFIED="1492270139603" TEXT="...jenseits von »Binden und Ausführen«"/>
|
|
<node CREATED="1492270174242" ID="ID_884795984" MODIFIED="1492270187724" TEXT="die Varianten sind bis zur Beliebigkeit "offen""/>
|
|
<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ötige Last">
|
|
<node CREATED="1492270239793" ID="ID_1729040008" MODIFIED="1492270283358" TEXT="ist notwendig als factory fü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 »Zugriff auf Command«">
|
|
<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ß, um sie zu bekommen">
|
|
<icon BUILTIN="smily_bad"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1492270339851" ID="ID_238907164" MODIFIED="1492270358381" TEXT="suggeriert »Ausführen von Commands«">
|
|
<node CREATED="1492271004097" ID="ID_511583689" MODIFIED="1492271014907" TEXT="muß man aber selber machen, via BusTerm"/>
|
|
<node CREATED="1492271017087" ID="ID_321529761" MODIFIED="1492271024673" TEXT="dafü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ö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ü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="1492281177306" TEXT="widget-bound: overengineered">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...und kaum erkennbarer Nutzen.
|
|
</p>
|
|
<p>
|
|
Der einzige Nutzfall wäre ein "this"-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="1492281214808" TEXT="context-bound: different structure needed">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
hier müßte der InvocationTrail die aufgesammelten Argumente transportieren.
|
|
</p>
|
|
<p>
|
|
allein <i>dafür</i> genü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ßfolgerung">
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
<node COLOR="#338800" CREATED="1492281320758" ID="ID_1465764553" MODIFIED="1518487921093" TEXT="InvocationTrail fä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ür den komplexen Fall umgewidmet">
|
|
<icon BUILTIN="hourglass"/>
|
|
<node CREATED="1492281402666" ID="ID_1263822028" MODIFIED="1518487921093" TEXT="es bleibt ein Access-front-End"/>
|
|
<node CREATED="1492281417025" ID="ID_1229681605" MODIFIED="1518487921093" TEXT="der Name wird angepaßt"/>
|
|
<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ür Zugriff auf den InteractionState"/>
|
|
<node CREATED="1492281448845" ID="ID_1396633899" MODIFIED="1518487921093" TEXT="für Callback-Registrierung"/>
|
|
<node CREATED="1492281466282" ID="ID_1012579063" MODIFIED="1518487921093" TEXT="Callbacks schicken direkt eine GenNode"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node COLOR="#252298" CREATED="1489546623162" HGAP="-24" ID="ID_1622574347" MODIFIED="1533385633816" TEXT="was wird gebraucht" VSHIFT="21">
|
|
<linktarget COLOR="#352c7d" DESTINATION="ID_1622574347" ENDARROW="Default" ENDINCLINATION="-240;-3336;" ID="Arrow_ID_1512127407" SOURCE="ID_1401258681" STARTARROW="None" STARTINCLINATION="1929;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ß 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" ID="ID_1851585461" MODIFIED="1518487921094" TEXT="im Einzelnen">
|
|
<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=""leere" 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ä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.ä."/>
|
|
<node CREATED="1489716870000" ID="ID_907818022" MODIFIED="1489716875547" TEXT="Wert-Semantik"/>
|
|
<node CREATED="1489716876183" ID="ID_880911498" MODIFIED="1489716883650" TEXT="enthä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ält direkt den Zä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ö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ö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ösung ist auf den Punkt"/>
|
|
<node CREATED="1489717927279" ID="ID_845301501" MODIFIED="1489717959263" TEXT="Command-ID erfüllt keine regulierende Funktion"/>
|
|
<node CREATED="1491003369611" ID="ID_854080320" MODIFIED="1511572077393" 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 "offene" Instanz gibt.
|
|
</p>
|
|
<p>
|
|
Also genü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="1518487921094" TEXT="Aktivierung">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
gemeint ist:
|
|
</p>
|
|
<p>
|
|
Ein UI-Control wird <i>aktivierbar,</i> weil das zugrundeliegende Command
|
|
</p>
|
|
<p>
|
|
alle seine Argumente aus dem aktuellen Kontext befriedigen kann
|
|
</p>
|
|
<p>
|
|
|
|
</p>
|
|
<p>
|
|
Beispiel: Menü-Eintrag "create duplicate"
|
|
</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=""gib mir die Argumente!"">
|
|
<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äßt sich das überhaupt je realisieren?">
|
|
<icon BUILTIN="help"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1489547112255" ID="ID_270498008" MODIFIED="1511572077457" TEXT="generische Rollen">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
die Idee ist hier,
|
|
</p>
|
|
<p>
|
|
daß diese generischen Rollen bereits in der Einrichtung der Command-Definition verwendet werden.
|
|
</p>
|
|
<p>
|
|
Das heißt, für einen bestimmten Invocation-Trail legt man fest,
|
|
</p>
|
|
<p>
|
|
daß 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ß 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ö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ührbar"/>
|
|
<node CREATED="1489719200330" ID="ID_840062807" MODIFIED="1489719208197" TEXT="hat Argument-Accessor"/>
|
|
<node COLOR="#5e427f" CREATED="1489719212976" HGAP="-52" ID="ID_949699860" MODIFIED="1489719253576" TEXT="noch offen" VSHIFT="45">
|
|
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
<node CREATED="1489719257426" ID="ID_1618753270" MODIFIED="1511572077539" TEXT="wer erzeugt den InvocationTrail">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...eben!
|
|
</p>
|
|
<p>
|
|
Diese Frage hat dann dazu geführt,
|
|
</p>
|
|
<p>
|
|
daß ich das ganze Konzept "InvocationTrail"
|
|
</p>
|
|
<p>
|
|
wieder komplett zurü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ö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ür Kontext-Zugriff"/>
|
|
<node CREATED="1492281675557" ID="ID_1809773326" MODIFIED="1518487921094" TEXT="InvocationState mit Callbacks"/>
|
|
</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 BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1489781611257" ID="ID_179887792" MODIFIED="1518487921094" TEXT="brauche">
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
<node CREATED="1489781616257" ID="ID_1645536558" MODIFIED="1518487921094" TEXT="Schema fü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ü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öglichkeiten">
|
|
<node CREATED="1489785163216" ID="ID_1992894903" MODIFIED="1489785168547" TEXT="zu Fuß...">
|
|
<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="1489786660959" TEXT="spezielle Inclusion-Rituale">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
vermutlich läuft es immer darauf hinaus
|
|
</p>
|
|
<ul>
|
|
<li>
|
|
daß cmd.hpp die Implementierungs-Einheiten includiert
|
|
</li>
|
|
<li>
|
|
oder daß 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önnte const char* nehmen"/>
|
|
<node CREATED="1489790053044" ID="ID_1594786428" MODIFIED="1489790070534" TEXT="könnte dann nach Literal konvertibel sein"/>
|
|
<node CREATED="1489790158335" ID="ID_1828195626" MODIFIED="1489790166017" TEXT="Template kö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">
|
|
<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.ä"/>
|
|
<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ä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ß 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örigen Header proc/cmd.hpp im Build-Prozeß regenerieren">
|
|
<icon BUILTIN="idea"/>
|
|
</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 "später" vertagt"/>
|
|
<node CREATED="1490927702128" ID="ID_1355040899" MODIFIED="1518487921094" TEXT="wenn die händische Pflege zum Problem wird"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1490985673313" ID="ID_1705714293" MODIFIED="1518487921094" TEXT="Instanzen">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1490985683359" 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="1533608414037" TEXT="ist nur eine Registry mit etwas Funktionalität">
|
|
<node CREATED="1490986294710" ID="ID_558020871" MODIFIED="1533400457991" TEXT="Command-IDs dekorieren"/>
|
|
<node CREATED="1490986302197" ID="ID_1305641719" MODIFIED="1491004967731" TEXT="fortlaufenden Zähler verwalten">
|
|
<icon BUILTIN="button_cancel"/>
|
|
<node CREATED="1490986345879" ID="ID_1736956933" MODIFIED="1490986393723" TEXT="denn: Dispatch bedeutet Verzögerung">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...also ist eine Instanz durchaus noch am Leben,
|
|
</p>
|
|
<p>
|
|
während bereits die nächste Instanz fü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="1490986430233" 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 ü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äre gefä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äufig überschreibe ich stillschweigend">
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1490986309084" ID="ID_1432845924" MODIFIED="1490986319583" TEXT="sicher Ü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ä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="1518487921094" TEXT="explizite Instanzbildung ist optional">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...implementiert "für die Zukunft",
|
|
</p>
|
|
<p>
|
|
wenn wir context-bound -Commands verwenden
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="info"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1491694174845" ID="ID_344801148" MODIFIED="1518487921094" TEXT="Instanzbildung gehört nicht in das Tangible">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
das ist ein grundlegender Beschluß.
|
|
</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ü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öglichkeiten">
|
|
<node CREATED="1492461081978" ID="ID_1041621476" MODIFIED="1518487921094" TEXT="LuidH">
|
|
<node CREATED="1492461102167" ID="ID_541671903" MODIFIED="1518487921094" TEXT="schon unterstü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üß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>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1488672593812" ID="ID_1454459609" MODIFIED="1518487921094" TEXT="konkret"/>
|
|
</node>
|
|
<node CREATED="1448063874479" HGAP="43" ID="ID_739054690" MODIFIED="1518487921094" TEXT="UI-Modell" VSHIFT="1">
|
|
<icon BUILTIN="help"/>
|
|
</node>
|
|
<node CREATED="1434128074725" HGAP="28" ID="ID_933994138" MODIFIED="1518487921094" TEXT="Diff-System" VSHIFT="1">
|
|
<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 CREATED="1434128083878" ID="ID_937754899" MODIFIED="1518487921094" TEXT="Format">
|
|
<node CREATED="1434128153773" ID="ID_1289483934" MODIFIED="1518487921094" TEXT="Objekt-Reprä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="1518487921094" TEXT="GenNode">
|
|
<linktarget COLOR="#ff0033" DESTINATION="ID_976705384" ENDARROW="Default" ENDINCLINATION="-17;78;" 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="1525124215303" TEXT="verwende EntryID">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1435421678004" ID="ID_691179282" MODIFIED="1512926192296" TEXT="Abhä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ört in Library">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1435885214592" ID="ID_1198930165" MODIFIED="1512926192296" TEXT="sanitise stö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="1512926192297" 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>
|
|
|
|
</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&">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node CREATED="1435943214822" ID="ID_723738462" MODIFIED="1435943233983">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</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>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
eigentlich fehlte nur die get()-Operation
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1434128217645" ID="ID_1790054544" MODIFIED="1525124215315" 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>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
erledigt... ähm vertagt
|
|
</p>
|
|
<p>
|
|
aber nicht wirklich; der workaround könnte schon die Lö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>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
ich hatte damals beim Variant und zugehörigen Buffer die Sorge,
|
|
</p>
|
|
<p>
|
|
daß ich die Implikationen einer generischen Lö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>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
generische Lö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>
|
|
|
|
</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="1512926192305" 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>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
nicht klar, ob wir das überhaupt brauchen
|
|
</p>
|
|
<ul>
|
|
<li>
|
|
entweder nur die unmittelbaren Kinder -> komplexe Logik fällt auf den Client
|
|
</li>
|
|
<li>
|
|
oder nur die Blätter -> 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>
|
|
|
|
</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üßte der IterIter implementieren"/>
|
|
<node CREATED="1440984048380" ID="ID_917358570" MODIFIED="1440984080184">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</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="1512926192309" TEXT="RecursiveSelfIntegration">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</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ön!
|
|
</p>
|
|
<p>
|
|
|
|
</p>
|
|
<p>
|
|
|
|
</p>
|
|
<p>
|
|
ü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ß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" FOLDED="true" ID="ID_579146044" MODIFIED="1533608416332" 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" FOLDED="true" ID="ID_761913732" MODIFIED="1533608416333" 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="1512926192312" 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ür den Stack (deque) explizit"/>
|
|
<node CREATED="1441935708383" ID="ID_1709495985" MODIFIED="1441936067879" TEXT="Erkenntnis: Stack ist unvermeidbar">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...denn wir müssen den Weg zurü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öglich,</i> eine Traversierung mit konstantem Speicher zu machen.
|
|
</p>
|
|
<p>
|
|
Das geht nur bei einer Struktur mit Rückreferenzen -- diese enthalten dann nämlich genau den Speicher,
|
|
</p>
|
|
<p>
|
|
der wä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ährend der Traversierung.
|
|
</p>
|
|
<p>
|
|
Dies ist die Abwägung, und darunter läß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ür die Speicherung des Rückweges mitzuverwenden;
|
|
</p>
|
|
<p>
|
|
in dem Moment, wo ich mich für einen Iterator entscheide, ist diese Möglichkeit weg.
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
<node CREATED="1441936092427" ID="ID_199084223" MODIFIED="1441936126886">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</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ß 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="1512926192313">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</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ällt"/>
|
|
<node CREATED="1441936285368" ID="ID_1119180152" MODIFIED="1441936296746" TEXT="wir brauchen genauso einen maßgeschneiderten Scope-Iterator"/>
|
|
<node CREATED="1441936356831" ID="ID_1423049913" MODIFIED="1441936372500" TEXT="aber die Indirektion für die Funktion fä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" FOLDED="true" ID="ID_455233841" MODIFIED="1533608416334" 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>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
da es sich um einen disjunktiven Typ (entweder-oder-Typ) handelt,
|
|
</p>
|
|
<p>
|
|
könnte man die Storage mit beiden Bedeutungen überlagern.
|
|
</p>
|
|
<p>
|
|
|
|
</p>
|
|
<p>
|
|
Voraussetzung wäre, daß man anhand der konkreten Daten <b>gefahrlos</b>  jeweils herausfinden kann,
|
|
</p>
|
|
<p>
|
|
welcher Zweig grade gilt. Da wir aber keine Introspektion haben (und auch nicht wollen!),
|
|
</p>
|
|
<p>
|
|
würde das auf Taschenspielertricks mit der Implementierung hinauslaufen
|
|
</p>
|
|
<ul>
|
|
<li>
|
|
GenNode und Record beginnen beide fraktisch mit einem String. Man müßte diesen interpretieren kö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" FOLDED="true" ID="ID_1582043438" MODIFIED="1533608416336" 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ß den inneren Iterator liefern"/>
|
|
<node CREATED="1441937000487" ID="ID_312630797" MODIFIED="1441937028412">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
Entscheidung: <i>falls</i> 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änglich machen">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
Begrü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ä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>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
also <i>keine</i> Monade
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="yes"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1440984348699" HGAP="64" ID="ID_1327214042" MODIFIED="1518487921094" TEXT="Prädikate" VSHIFT="-26">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1440984366937" ID="ID_1806640214" MODIFIED="1518487921094">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</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>
|
|
|
|
</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="1525124215322" 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äsentation"/>
|
|
<node CREATED="1434421422582" ID="ID_1730569377" MODIFIED="1434421448187">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</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>
|
|
|
|
</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>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
Problem ist, wir definieren den Typ Record generisch,
|
|
</p>
|
|
<p>
|
|
verwenden dann aber nur die Spezialisierung Record<GenNode>
|
|
</p>
|
|
<p>
|
|
Und die Builder-Funktionen brauchen eigentlich spezielles Wissen ü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ür genNode()"/>
|
|
<node CREATED="1436042480886" ID="ID_1194557524" MODIFIED="1436042502641">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</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>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
Ergebnis move
|
|
</p>
|
|
<p>
|
|
<font size="1">pro / contra</font>
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
Move ist <b>gefährlich </b>
|
|
</p>
|
|
<p>
|
|
aber auch deutlich effizienter,
|
|
</p>
|
|
<p>
|
|
denn wir mü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>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
<i>nur</i> auf dem Mutator
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1436042520942" ID="ID_1700762999" MODIFIED="1436042539843">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
dieser ist nicht kopierbar
|
|
</p>
|
|
<p>
|
|
und muß 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" ID="ID_714336641" MODIFIED="1525124215326" 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ückgabetyp von Attribut-Gettern">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
möglicherweise schon gelöst,
|
|
</p>
|
|
<p>
|
|
denn Record ist insgesamt immutable.
|
|
</p>
|
|
<p>
|
|
Also kö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>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
was sinnvoll ist,
|
|
</p>
|
|
<p>
|
|
hängt vom Payload-Typ ab
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1439826859630" ID="ID_658403513" MODIFIED="1439826896096">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
bei einer 'key = value' -Syntax mit strings
|
|
</p>
|
|
<p>
|
|
ist nur ein Value-Rü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="-> überhaupt eine Typkonfiguration ist sinnvoll">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</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äre schö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>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
da wir einen IterAdapter verwenden, kö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ösung, daß die Typ-ID in einem weiteren Vektor gespeichert wird.
|
|
</p>
|
|
<p>
|
|
Das könnte dann ein Metadaten-Vektor sein.
|
|
</p>
|
|
<p>
|
|
|
|
</p>
|
|
<p>
|
|
Natürlich ist dieser Ansatz nur sinnvoll, <i>wenn wir wirklich Metadaten brauchen.</i>
|
|
</p>
|
|
<p>
|
|
Denn jeder Record zahlt den Preis für die komplexere (zusä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üßte jede Eingans-Collection normalisieren"/>
|
|
<node CREATED="1439826782368" ID="ID_386953463" MODIFIED="1439826789763" TEXT="man müß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="'magische' IDs als Attribute">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1439827021297" ID="ID_154339557" MODIFIED="1439827028484" TEXT="brauche ich fü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ört das in einen hö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>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
scheidet aus, wegen Wertsemantik
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="button_cancel"/>
|
|
</node>
|
|
<node CREATED="1434129204149" ID="ID_1688475597" MODIFIED="1512926192332" 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>
|
|
|
|
</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ß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ür den Aufrufer"/>
|
|
<node CREATED="1434205862449" ID="ID_1736858324" MODIFIED="1434205879837" TEXT="Konsequenz: DataCap muß 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="1518487921095" TEXT="ID-Repräs">
|
|
<arrowlink COLOR="#ff0033" DESTINATION="ID_976705384" ENDARROW="Default" ENDINCLINATION="-17;78;" ID="Arrow_ID_1285375088" STARTARROW="Default" STARTINCLINATION="-5;-77;"/>
|
|
<node CREATED="1434128393429" ID="ID_1275202366" MODIFIED="1518487921095" TEXT="muß GenNode sein">
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
<node CREATED="1434128412934" ID="ID_1319614474" MODIFIED="1525124215331" TEXT="Repräs entscheiden">
|
|
<icon BUILTIN="go"/>
|
|
<node CREATED="1434128438565" ID="ID_913220298" MODIFIED="1512926192335" TEXT="als ID erkennbar">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
heiß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=""fehlkonstruierte" ID + prüf-Prädikat">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node CREATED="1434128981381" ID="ID_101281763" MODIFIED="1436042656881" TEXT="spezielle Ref-Payload">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</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ündung">
|
|
<font NAME="SansSerif" SIZE="12"/>
|
|
<icon BUILTIN="idea"/>
|
|
<node CREATED="1436021581655" ID="ID_124352424" MODIFIED="1436021603779" TEXT="hash-identische ID sorgt für transparente Integration"/>
|
|
<node CREATED="1436021610648" ID="ID_1621632066" MODIFIED="1436021618067" TEXT="das nimmt Komplexität aus der Anwendung heraus"/>
|
|
<node CREATED="1436021623799" ID="ID_929212705" MODIFIED="1436021637115" TEXT="fü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>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
gemeint ist:
|
|
</p>
|
|
<ul>
|
|
<li>
|
|
man kann alternativ auch eine RecordRef direkt in eine elementare GenNode packen
|
|
</li>
|
|
<li>
|
|
diese verhält sich dann nicht transparent, denn sie hat eine andere Identitä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ämlich auch Ausdrucksmittel sein"/>
|
|
<node CREATED="1436021848790" ID="ID_742066846" MODIFIED="1436021874042" TEXT="problematisch ist die Implementerung des Erkennungs-Prädikates"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1434128446029" ID="ID_1779802587" MODIFIED="1512926192338" TEXT="hash-identisch">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
heiß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>
|
|
|
|
</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>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
bekomme einen
|
|
</p>
|
|
<p>
|
|
"ungenutzten" DataCap
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<node CREATED="1434128996949" ID="ID_654762061" MODIFIED="1434239007746" TEXT="kö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>
|
|
|
|
</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>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
als Ref erkennbar
|
|
</p>
|
|
<p>
|
|
<font size="1">(Prädikat)</font>
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1434130888581" ID="ID_369455584" MODIFIED="1434130912181">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</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ü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>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
Verarbeiten
|
|
</p>
|
|
<p>
|
|
von Teilbä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="1443733567706" HGAP="241" ID="ID_143203937" MODIFIED="1525124215369" TEXT="Diff-Language" VSHIFT="23">
|
|
<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öß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>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
<b>Interpreter</b> 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älle">
|
|
<node CREATED="1443733856089" ID="ID_1358940500" MODIFIED="1512926192345">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</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ß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>
|
|
|
|
</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>
|
|
|
|
</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=""type"-Attribut">
|
|
<font NAME="SansSerif" SIZE="11"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1443734030329" ID="ID_257027438" MODIFIED="1443734033052" TEXT="befü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>
|
|
|
|
</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>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
würde sagen: ja, aber auch <i>nur</i> für das after-Verb!
|
|
</p>
|
|
<p>
|
|
allgemein halte ich einen wrap-around für keine gute Idee,
|
|
</p>
|
|
<p>
|
|
weil er zu Zweideutigekeigen führt und daher Struktur oder Konsistenzfehler ü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ä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="überflüssig">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
läßt sich stets duch eine inverse Folge von <i>find</i> und <i>pick</i>  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ö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ü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ät">
|
|
<node CREATED="1443736349465" ID="ID_1312270317" MODIFIED="1525124215375" TEXT="strikt">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
vorerst verworfen, da zusätzlicher Prü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" ID="ID_1024688383" MODIFIED="1512926192355" 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="1512926192355" 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ür Attribute"/>
|
|
<node CREATED="1473353095051" ID="ID_484062615" MODIFIED="1473353096974" TEXT="fü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="1525124215375" TEXT="Modell "Liste"">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1443737510238" ID="ID_1135997794" MODIFIED="1443737510238" TEXT="Duplikate anhängen"/>
|
|
<node CREATED="1443737516852" ID="ID_636329172" MODIFIED="1443737527750" TEXT="Einfügen erlauben"/>
|
|
<node CREATED="1443737528578" ID="ID_1554159544" MODIFIED="1443737538461" TEXT="Umordnen erlauben"/>
|
|
<node CREATED="1443737570229" ID="ID_28119998" MODIFIED="1443737576392" TEXT="Löschen erfordert Ansteuern"/>
|
|
</node>
|
|
<node CREATED="1443737497870" ID="ID_113467015" MODIFIED="1525124215376" TEXT="Modell "Map"">
|
|
<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 überschreiben"/>
|
|
<node CREATED="1443737605080" ID="ID_609776485" MODIFIED="1443737739674" TEXT="Neue an Standardort anfügen"/>
|
|
<node CREATED="1443737747941" ID="ID_1552219906" MODIFIED="1443737757207" TEXT="Umordnungen verweigern/ignorieren"/>
|
|
<node CREATED="1443737769122" ID="ID_697980786" MODIFIED="1443737777276" TEXT="Löschen an beliebiger Stelle wirksam"/>
|
|
</node>
|
|
<node CREATED="1443738082216" HGAP="38" ID="ID_870184525" MODIFIED="1525124215378" TEXT="Abwägung" VSHIFT="7">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1443738097022" ID="ID_1609921484" MODIFIED="1443738178020" TEXT="Modelle schließen sich aus">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...Grund: sie werden durch einen jeweils komplett anderen Ansatz implementiert
|
|
</p>
|
|
<ul>
|
|
<li>
|
|
"Liste" beruht auf dem Attribut-Iterator und dem Aufbauen einer neuen Attribut-Sammlung
|
|
</li>
|
|
<li>
|
|
"Map" beruht darauf, alle Operationen an die Storage zu delegieren
|
|
</li>
|
|
</ul>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1443738179947" ID="ID_1249607715" MODIFIED="1533608414043" TEXT=""Liste"">
|
|
<node CREATED="1443738196336" FOLDED="true" ID="ID_855336404" MODIFIED="1533608416338" 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>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
das heißt, man kann Attribute in einer "sinnvoll lesbaren" Ordnung anschreiben
|
|
</p>
|
|
<p>
|
|
und später angefügte Attribute bleiben so erkennbar.
|
|
</p>
|
|
<p>
|
|
Vorteilhaft fü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>
|
|
|
|
</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>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
"hoch effizient", unter der Annahme, daß fast immer nur konforme Änderungen kommen.
|
|
</p>
|
|
<p>
|
|
Weil dann nämlich die in unserer Implementierung ggfs. kostspieligen Umordnungen entfallen,
|
|
</p>
|
|
<p>
|
|
kommen wir auf lineare Komplexität für die Verarbeitung
|
|
</p>
|
|
<p>
|
|
+ NlogN für den Index zur Diff-Erzeugung
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1443738199160" FOLDED="true" ID="ID_955544777" MODIFIED="1533608416338" 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>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
unsere Impl der <i>Diff-Erzeugung (!)</i>
|
|
</p>
|
|
<p>
|
|
baut einen Index auf (N*logN), um Einfügungen/Entfernungen zu erkennen und Umordnungs-Suche zu unterstützen.
|
|
</p>
|
|
<p>
|
|
Wenn wir aber von ausschließlich konformen Operationen ausgehen,
|
|
</p>
|
|
<p>
|
|
wird dieser Index nicht benötigt. Leider können wir das aber nicht garantieren, denn
|
|
</p>
|
|
<p>
|
|
es könnte ja zwischenzeitlich ein Attribut gelöscht und dann später (am Ende) wieder
|
|
</p>
|
|
<p>
|
|
angehä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=""Map"">
|
|
<node CREATED="1443738196336" FOLDED="true" ID="ID_997066012" MODIFIED="1533608416339" TEXT="Vorteile">
|
|
<node CREATED="1443738237731" ID="ID_1438410748" MODIFIED="1443738244389" TEXT="Konformität garantiert"/>
|
|
</node>
|
|
<node CREATED="1443738199160" FOLDED="true" ID="ID_571621671" MODIFIED="1533608416341" TEXT="Nachteile">
|
|
<node CREATED="1443738352419" ID="ID_439396381" MODIFIED="1443738730869" TEXT="Effizienz der Storage">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
d.h. <i>wenn</i> die Storage hoch-optimiert ist,
|
|
</p>
|
|
<p>
|
|
dann überträ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>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
da wir Attribute in einer Liste speichern,
|
|
</p>
|
|
<p>
|
|
müssen wir für jede Einfügung eine vollstä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>
|
|
|
|
</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=""Listen"-Modell"/>
|
|
<node CREATED="1443739228542" ID="ID_773218806" MODIFIED="1443739244615" TEXT="eindeutig vorzuziehen"/>
|
|
<node CREATED="1443739245483" ID="ID_1943112941" MODIFIED="1533608414046" TEXT="zwei Grü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="1533608414047" TEXT=""zwei Listen"-Modell">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1443739335823" ID="ID_860198617" MODIFIED="1443739349777" TEXT="intern führen wir zwei Listen-Diffs durch"/>
|
|
<node CREATED="1443739350869" ID="ID_464299464" MODIFIED="1443739368974" TEXT="ein Trennkriterium führt zum Umschalten"/>
|
|
<node CREATED="1443739399718" ID="ID_686887994" MODIFIED="1443739426315">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
danach noch auftretende Attribute
|
|
</p>
|
|
<p>
|
|
erfordern Sonder-Behandlung,
|
|
</p>
|
|
<p>
|
|
indem sie an die Attributs-Liste angehä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ä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ä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ährlich bei strikter Konformitä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ü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>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
wegen Entscheidung für das "Listen"-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>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
das heißt:
|
|
</p>
|
|
<ul>
|
|
<li>
|
|
es wird einfach vom zuständigen Layer (der für die Attribute) aufgegriffen
|
|
</li>
|
|
<li>
|
|
es hat keinen Einfluß auf die nach auß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ührt zum Fehler wg. "zwei Listen"-Modell">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...da das Kind in der Liste der Attribute nä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>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...wenn wir am Ende der Attribut-Zone stehen,
|
|
</p>
|
|
<p>
|
|
und die nächste Operation ein fetch eines Kindes ist, müssen wir implizit den
|
|
</p>
|
|
<p>
|
|
Wechsel in den Scope vollziehen und die Operation dort ausfü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>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
standardmäß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-Überschuß 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=""zwei Listen"-Modell"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1443741905157" HGAP="364" ID="ID_1960988662" MODIFIED="1525124215389" TEXT="Diff-Implementierung" VSHIFT="17">
|
|
<font NAME="SansSerif" SIZE="16"/>
|
|
<icon BUILTIN="go"/>
|
|
<node CREATED="1444522932841" HGAP="52" ID="ID_48288704" MODIFIED="1444522994078" TEXT="Architektur" VSHIFT="-5">
|
|
<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>
|
|
|
|
</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>
|
|
|
|
</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 -> kovariant"/>
|
|
<node CREATED="1444523091939" ID="ID_720826260" MODIFIED="1444523103670" TEXT="akzeptiert Interpreter -> 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>
|
|
|
|
</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>
|
|
|
|
</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>
|
|
|
|
</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" ID="ID_484829805" MODIFIED="1512926192375" TEXT="Baum-Diff">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1445295424277" ID="ID_1084177503" MODIFIED="1525124215397">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</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äume">
|
|
<node CREATED="1445295582392" ID="ID_243770452" MODIFIED="1445295587819" TEXT="Umhängen von Teilbäumen"/>
|
|
<node CREATED="1445295588127" ID="ID_1541079773" MODIFIED="1445295598746" TEXT="Abstieg in Teilbä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ür Callbacks vom UI">
|
|
<node CREATED="1445299235061" ID="ID_336159819" MODIFIED="1445299267675">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</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ß">
|
|
<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ört der Implementierung"/>
|
|
<node CREATED="1445389373168" ID="ID_1925613497" MODIFIED="1445389404465">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</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 ü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>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
<i>Immutablility</i> 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>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
Lö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ß die Attribut/Kinder-Listen exponieren">
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
</node>
|
|
<node CREATED="1445644203808" ID="ID_1105228896" MODIFIED="1445644221661">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
auf dem Umweg ü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="1512926192446" TEXT="Implementierung" VSHIFT="4">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1445392080175" ID="ID_341024968" MODIFIED="1445392101243">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</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" ID="ID_1143865339" MODIFIED="1525124215398" TEXT="technische Komplikation: "2 Listen"-Modell">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1445620914088" ID="ID_1919426539" MODIFIED="1445621018036" TEXT="Verhalten ä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äsentation klassifizieren"/>
|
|
<node CREATED="1473352784533" ID="ID_1907760521" MODIFIED="1473352794511" TEXT="das normale Binding fü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ä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" HGAP="29" ID="ID_563496669" MODIFIED="1525124215403" VSHIFT="8">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</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ü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ösungsansä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>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
wenn ein MUT kommt
|
|
</p>
|
|
<p>
|
|
erzeugt man lokal einen DiffApplikator für den geschachtelten Kontext
|
|
</p>
|
|
<p>
|
|
und gibt ihm rekursiv den Diff hinein. Wenn dieser Aufruf zurückkehrt
|
|
</p>
|
|
<p>
|
|
ist der gesammte Diff fü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ä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ß das Token anschauen"/>
|
|
<node CREATED="1446159999939" ID="ID_1385561919" MODIFIED="1446160014569" TEXT="nicht kompatibel mit userem "Interpreter"-Modell"/>
|
|
<node CREATED="1446159858701" ID="ID_751122481" MODIFIED="1446160039239" TEXT="Applikator muß 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>
|
|
|
|
</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ü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 "Interpreter"-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>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
Entscheidung:
|
|
</p>
|
|
<p>
|
|
interner Stack
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
....begründet duch die generische Architektur.
|
|
</p>
|
|
<p>
|
|
Die Trennung von Diff-Iteration und dem Interpreter ermöglicht verschiedene Sprach-Ebenen.
|
|
</p>
|
|
<p>
|
|
Allerdings werde ich fü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ür GenNodeBasic_test">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
Problem sind mal wieder die automatisch generierten IDs.
|
|
</p>
|
|
<p>
|
|
Die sind natürlich anders, wenn wir die ganze Testsuite ausführen...
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node CREATED="1446356588505" ID="ID_895292312" MODIFIED="1512926192454" TEXT="gründlicher Test">
|
|
<icon BUILTIN="yes"/>
|
|
<node CREATED="1473352634730" ID="ID_955392554" MODIFIED="1473352641908" TEXT="bis jetzt nur "positiv-Tests""/>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1473352642473" ID="ID_839131437" MODIFIED="1473352654368" TEXT="Abdeckung der Grenzfä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="1502452581379" HGAP="11" ID="ID_1651893758" MODIFIED="1502453059637" TEXT="Darstellung" VSHIFT="17">
|
|
<linktarget COLOR="#afb1bd" DESTINATION="ID_1651893758" ENDARROW="Default" ENDINCLINATION="-1257;0;" ID="Arrow_ID_1786455458" SOURCE="ID_1500100371" STARTARROW="None" STARTINCLINATION="1858;0;"/>
|
|
<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="1502454329405" TEXT="Problem: Pull-Prinzip">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</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ö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ür Tests">
|
|
<node CREATED="1502454398686" ID="ID_1736428769" MODIFIED="1502454409496" TEXT="Anforderung: drop-in"/>
|
|
<node CREATED="1502454410012" ID="ID_364935696" MODIFIED="1502454438242" TEXT="durch Allokations-Kette lösen">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
Dekorator-Prinzip.
|
|
</p>
|
|
<p>
|
|
Paßt hier, da IterSource genau dieses Vorgehen nahelegt
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1502550828691" ID="ID_382976334" MODIFIED="1502550873649" TEXT="fest eingebaut">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</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="1502550962642" TEXT="immer nur Rest-Sequenz sichtabar">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</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ür Systemdiagnose"/>
|
|
<node CREATED="1502454479907" ID="ID_234469818" MODIFIED="1502454491525" TEXT="lesbare Formattierung"/>
|
|
<node CREATED="1502454492162" ID="ID_983774503" MODIFIED="1502454496237" TEXT="auf später vertagt"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1460934597764" HGAP="223" ID="ID_1014666775" MODIFIED="1518487921095" TEXT="Review" VSHIFT="32">
|
|
<font NAME="SansSerif" SIZE="15"/>
|
|
<icon BUILTIN="flag-yellow"/>
|
|
<node CREATED="1460934670043" ID="ID_1299827687" MODIFIED="1518487921095" TEXT="später zu überprü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ürdig">
|
|
<icon BUILTIN="help"/>
|
|
<node CREATED="1460934726315" ID="ID_865694069" MODIFIED="1518487921095" TEXT="Immutabilitä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ü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" ID="ID_632827470" MODIFIED="1518487921095" 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ügen"/>
|
|
<node CREATED="1443741383579" ID="ID_69718214" MODIFIED="1443741387039" TEXT="Kind anfü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ä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_709688381" SOURCE="ID_534213210" 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="1448063880238" ID="ID_159570161" MODIFIED="1518487921095" TEXT="Zyklus">
|
|
<node CREATED="1448063893293" ID="ID_1135705575" MODIFIED="1518487921095" TEXT="initial"/>
|
|
<node CREATED="1448063896300" ID="ID_1403759288" MODIFIED="1518487921095" TEXT="Zuordnung"/>
|
|
<node CREATED="1448063902387" ID="ID_1822852634" MODIFIED="1518487921095" TEXT="Aktion"/>
|
|
<node CREATED="1448063908243" ID="ID_474614648" MODIFIED="1518487921095" TEXT="Update"/>
|
|
<node CREATED="1448063913618" ID="ID_1967302094" MODIFIED="1518487921095" TEXT="Ende"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1448314834155" ID="ID_1725514536" MODIFIED="1518487921095" POSITION="right" TEXT="Integral">
|
|
<node CREATED="1448315011484" ID="ID_867104544" MODIFIED="1518487921095" TEXT="generisch">
|
|
<node CREATED="1448315015107" ID="ID_1900900399" MODIFIED="1518487921095" TEXT="JSON">
|
|
<node CREATED="1448315031553" ID="ID_1177387568" MODIFIED="1518487921095" TEXT="parser">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1448315067524" ID="ID_430746611" MODIFIED="1518487921095" 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>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
<i>schmerzloses </i>C++ API
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1448318701621" ID="ID_1339095142" MODIFIED="1518487921095" TEXT="unterstützt Builder für Integration in den Parse-Vorgang"/>
|
|
<node CREATED="1448318726098" ID="ID_1386753436" MODIFIED="1518487921095" TEXT="unterstützt Kommentarte (non-Standard)"/>
|
|
<node CREATED="1448318671009" ID="ID_1620559470" MODIFIED="1518487921095" TEXT="kann als eine große CPP-Datei eingebunden werden"/>
|
|
<node CREATED="1448319454226" ID="ID_108762123" MODIFIED="1518487921095">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</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>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
hat ein DOM-API <i>und</i> ein SAX-artiges API
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="ksmiletris"/>
|
|
</node>
|
|
<node CREATED="1448320473828" ID="ID_681519615" MODIFIED="1518487921095" TEXT="header-only, self-contained, keine Abhängigkeiten!">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
das heißt: <b>nicht einmal</b> abhä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="1518487921095" TEXT="kann auch in-situ parsen">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
wie gson
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1448320545523" ID="ID_298176210" MODIFIED="1518487921095" TEXT="vollständig, incl Ersetzungen"/>
|
|
<node CREATED="1448321598848" ID="ID_1151875949" MODIFIED="1518487921095" TEXT="eigener Block-Allokator, ersetzbar"/>
|
|
</node>
|
|
<node CREATED="1448318965627" ID="ID_453761706" MODIFIED="1518487921095" TEXT="vjson / gason">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
vjson war Google Code;
|
|
</p>
|
|
<p>
|
|
nach dem Umzug auf Github heißt es gason
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<node CREATED="1448319925356" ID="ID_1589130421" MODIFIED="1520722535213" TEXT="angeblich ziemlich schnell">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
lt. eigenen Benchmakrs deutlich schneller als rapidjson, welches eigentlich immer als der "schnelle" 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="1518487921095" TEXT="Parser ist destruktiv">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</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="1518487921096" TEXT="Veröffentlichung undurchsichtig">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</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 CREATED="1448320963067" ID="ID_824752283" MODIFIED="1518487921096" TEXT="rapidjson">
|
|
<icon BUILTIN="info"/>
|
|
</node>
|
|
<node CREATED="1448320987776" ID="ID_545245790" MODIFIED="1518487921096" TEXT="Begründung...">
|
|
<node CREATED="1448321001518" ID="ID_671858484" MODIFIED="1518487921096">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
ich will nicht <i>noch ein</i> 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ßerdem klein und schmerzlos"/>
|
|
<node CREATED="1448321614174" ID="ID_1319618589" MODIFIED="1518487921096" TEXT="schö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" ID="ID_1208981523" MODIFIED="1521843769399" TEXT="Microbenchmarks">
|
|
<node CREATED="1521843772026" ID="ID_1334641753" MODIFIED="1521843776448" TEXT="selber schreiben">
|
|
<icon BUILTIN="ksmiletris"/>
|
|
</node>
|
|
<node CREATED="1521843783161" ID="ID_1151208744" MODIFIED="1521843819176" TEXT="mehrere Threads unterstützen"/>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1521843822020" ID="ID_1862348515" MODIFIED="1521844094107" TEXT="Library-Funktion">
|
|
<icon BUILTIN="pencil"/>
|
|
<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<double>">
|
|
<icon BUILTIN="info"/>
|
|
<node CREATED="1521843873173" ID="ID_952548619" MODIFIED="1521843938941" TEXT="mißt micro-Ticks"/>
|
|
<node CREATED="1521843880155" ID="ID_1245721460" MODIFIED="1521843938941" TEXT="Ergebnis fällt in Sekunden"/>
|
|
</node>
|
|
<node CREATED="1521843959433" ID="ID_133306105" MODIFIED="1521844083428" TEXT="verwendet Lumiera's Threading-Framework">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
man hätte genausogut std::future und std::async verwenden können.
|
|
</p>
|
|
<p>
|
|
Vorteil von unseren Framework:
|
|
</p>
|
|
<ul>
|
|
<li>
|
|
wir haben es schon, und wir werden es verwenden, wegen den Thradpools
|
|
</li>
|
|
<li>
|
|
man baut ein Objekt für einen Thread. Das ist explizit und sauber
|
|
</li>
|
|
<li>
|
|
wir haben eine eingebaute Barriere und können unseren Objekt-Monitor nutzen
|
|
</li>
|
|
</ul>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="yes"/>
|
|
</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="1521844284174" TEXT="Korrektheit der Zeitangaben verifiziert">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</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="1521844108488" TEXT="Erfahrungen">
|
|
<node CREATED="1521844121043" ID="ID_1041692639" MODIFIED="1521844128201" TEXT="Optimizer">
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
<node CREATED="1521844504174" ID="ID_318676926" MODIFIED="1521844520954" TEXT="Optimierung per -O3 ist sehr deutlich meßbar">
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
<node CREATED="1521844130561" ID="ID_1541346658" MODIFIED="1521844139739" TEXT="übergebene Lambdas werden tatsächlich ge-inlined"/>
|
|
<node CREATED="1521844157909" ID="ID_1833250915" MODIFIED="1521844656552" TEXT="wenn wir in der Loop messen, messen wir die Aufrufe von chrono::system_clock mit">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
daher messen wir die Loop als Ganzes.
|
|
</p>
|
|
<p>
|
|
Es gibt daher keine Mö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ß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ächlich verifiziert">
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
<node CREATED="1521844204015" ID="ID_188310893" MODIFIED="1521844251027" TEXT="Größenordnung 10 ns">
|
|
<icon BUILTIN="info"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1521844141248" ID="ID_328319936" MODIFIED="1521844156769" TEXT="wenn man nicht aufpaßt, wird die ganze Loop wegoptimiert"/>
|
|
<node CREATED="1521844306601" ID="ID_126627605" MODIFIED="1521844338425" TEXT="Beste Lösung">
|
|
<node CREATED="1521844339269" ID="ID_1885600326" MODIFIED="1521844361265">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
volatile Variable <i>außen,</i> 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="1521844482141" TEXT="konkurrentes Inkrementieren auf globale Volatile: Faktor 100 !!!!">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...was sehr schön beweist,
|
|
</p>
|
|
<p>
|
|
daß x86_64 tatsächlich cache-kohärent ist
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1535890757430" ID="ID_3793753" MODIFIED="1535890759705" TEXT="Iterator">
|
|
<node CREATED="1535890775651" ID="ID_333704322" MODIFIED="1535890780919" TEXT="Lumiera Forward Iterator">
|
|
<node CREATED="1535890788898" ID="ID_474606436" MODIFIED="1535890793189" TEXT="IterAdapter"/>
|
|
<node CREATED="1535891020739" ID="ID_7899831" MODIFIED="1535891025742" TEXT="IterStateWrapper">
|
|
<node CREATED="1535891026946" ID="ID_958757780" MODIFIED="1535891031093" TEXT="sehr wichtiges Konzept"/>
|
|
<node CREATED="1535891031609" ID="ID_1246882752" MODIFIED="1535891037564" TEXT="leider zwei Ausprägungen">
|
|
<node CREATED="1535891041376" ID="ID_1943507267" MODIFIED="1535891049739" TEXT="Core ist opaque (private)"/>
|
|
<node CREATED="1535891050566" ID="ID_89731232" MODIFIED="1535891054746" TEXT="von Core erben">
|
|
<node CREATED="1535895093066" ID="ID_1894277171" MODIFIED="1535895094494" TEXT="IterableDecorator"/>
|
|
<node CREATED="1535895095322" ID="ID_1368242997" MODIFIED="1535895100037" TEXT="gehört zu TreeExplorer"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1535890793825" ID="ID_582282005" MODIFIED="1535890799468" TEXT="Itertool">
|
|
<node CREATED="1535893017063" ID="ID_859634605" MODIFIED="1535893023178" TEXT="zunächst naiv-direkt implementiert"/>
|
|
<node CREATED="1535893024102" ID="ID_1514691517" MODIFIED="1535893032345" TEXT="Sandwich-Design">
|
|
<node CREATED="1535893036132" ID="ID_827990682" MODIFIED="1535893040736" TEXT="nicht besonders schön"/>
|
|
<node CREATED="1535893041324" ID="ID_1175882215" MODIFIED="1535893044215" TEXT="aber soweit wartbar"/>
|
|
</node>
|
|
<node CREATED="1535893048363" ID="ID_794436728" MODIFIED="1535893082084" TEXT="Frage: ablösen durch Pipeline-Builder?">
|
|
<arrowlink COLOR="#afa9c1" DESTINATION="ID_114091640" ENDARROW="Default" ENDINCLINATION="-503;-426;" ID="Arrow_ID_956211493" STARTARROW="None" STARTINCLINATION="238;0;"/>
|
|
<icon BUILTIN="help"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1535890810111" ID="ID_677938944" MODIFIED="1535890812763" TEXT="IterSource">
|
|
<node CREATED="1535890823613" ID="ID_1227701237" MODIFIED="1535890829752" TEXT="Lumiera Iterator als Abstraktion"/>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1535890830772" ID="ID_1558484735" MODIFIED="1535890859471" TEXT="bestehendes Design ist ungeschickt">
|
|
<icon BUILTIN="stop-sign"/>
|
|
<node CREATED="1535890890980" ID="ID_1370634828" MODIFIED="1535890896359" TEXT="unterstellt einen Pos-Pointer"/>
|
|
<node CREATED="1535890915576" ID="ID_8718412" MODIFIED="1535890938281" TEXT="Semantik der Abbruchbedingung ist verwirrend"/>
|
|
</node>
|
|
<node CREATED="1535890958987" ID="ID_71109348" MODIFIED="1535890964438" TEXT="alternatives Design">
|
|
<node CREATED="1535890965170" ID="ID_1363636315" MODIFIED="1535890968798" TEXT="was geht hier?">
|
|
<node CREATED="1535890972609" ID="ID_1586923063" MODIFIED="1535890985339" TEXT="wie state core?"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1535891065189" ID="ID_1233342893" MODIFIED="1535891073512" TEXT="Iterator-Monade">
|
|
<node COLOR="#435e98" CREATED="1512925265295" HGAP="103" ID="ID_1502143527" MODIFIED="1535892901782" VSHIFT="-66">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</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="-522;742;" ID="Arrow_ID_616092581" SOURCE="ID_513357674" STARTARROW="None" STARTINCLINATION="238;0;"/>
|
|
<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>
|
|
|
|
</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ä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>
|
|
<node COLOR="#435e98" CREATED="1512927162098" HGAP="93" ID="ID_1774532014" MODIFIED="1535892928429" 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ö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>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...bindet die Betrachtung auf einen technischen Level,
|
|
</p>
|
|
<p>
|
|
und führt dazu, daß 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ützlich">
|
|
<node CREATED="1512928114707" ID="ID_21920250" MODIFIED="1518487921098" TEXT="um Zustand auszukoppeln">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
genau der Umstand,
|
|
</p>
|
|
<p>
|
|
daß funktionale Sprachen von einer Zustands-Phobie getrieben sind,
|
|
</p>
|
|
<p>
|
|
macht Monaden nützlich, um inhä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 »Monaden-Motiv« 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>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1535891101400" ID="ID_673846521" MODIFIED="1535891107371" TEXT="IterExplorer">
|
|
<node CREATED="1535891108199" ID="ID_1302968576" MODIFIED="1535891111234" TEXT="erster Anlauf">
|
|
<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äßlich">
|
|
<icon BUILTIN="smily_bad"/>
|
|
</node>
|
|
<node CREATED="1535891125877" ID="ID_131112709" MODIFIED="1535891129432" TEXT="nur einmal verwendet">
|
|
<node CREATED="1535891130164" ID="ID_1396398506" MODIFIED="1535891135892" TEXT="für das Job-Planning">
|
|
<icon BUILTIN="info"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1512925334501" FOLDED="true" ID="ID_409327286" MODIFIED="1535892997921" 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ärenz"/>
|
|
<node CREATED="1512925366562" ID="ID_581707193" MODIFIED="1518487921098" TEXT="daher wie ein Gestrü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>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
gehört zu dem Themenkomplex "itertools"
|
|
</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-Ü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äre aber eine reine Komponente"/>
|
|
<node CREATED="1512925599402" ID="ID_551236508" MODIFIED="1518487921098" TEXT="Bauprinzip wie in UI-Coord">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</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> 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ürde
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1512925864774" ID="ID_1543264108" MODIFIED="1535891440192" TEXT="verwendet für JobPlanning">
|
|
<arrowlink COLOR="#5379b5" DESTINATION="ID_181262071" ENDARROW="Default" ENDINCLINATION="-150;-386;" ID="Arrow_ID_1786254694" STARTARROW="Default" STARTINCLINATION="-1298;0;"/>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1512925959074" ID="ID_30857289" MODIFIED="1518487921098" TEXT="TODO: ablösen durch IterTreeExplorer">
|
|
<arrowlink COLOR="#83dfc7" DESTINATION="ID_845080696" ENDARROW="Default" ENDINCLINATION="-1109;3887;" ID="Arrow_ID_1645152965" STARTARROW="None" STARTINCLINATION="2051;-176;"/>
|
|
<icon BUILTIN="flag-yellow"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1535891140563" ID="ID_1503014369" MODIFIED="1535891144430" TEXT="TreeExplorer">
|
|
<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ällt"/>
|
|
<node CREATED="1535939111640" ID="ID_1649632412" MODIFIED="1535939115932" TEXT="war bisher gut wartbar">
|
|
<node CREATED="1537050257419" HGAP="27" ID="ID_1397772054" MODIFIED="1537050286364" TEXT="naja...." VSHIFT="5">
|
|
<arrowlink DESTINATION="ID_913930564" ENDARROW="Default" ENDINCLINATION="-274;-41;" ID="Arrow_ID_1572610374" STARTARROW="None" STARTINCLINATION="-127;28;"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1514328717684" ID="ID_137835978" MODIFIED="1535892401183" 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="1535893082084" TEXT="Itertool-Funktionalität">
|
|
<linktarget COLOR="#afa9c1" DESTINATION="ID_114091640" ENDARROW="Default" ENDINCLINATION="-503;-426;" ID="Arrow_ID_956211493" SOURCE="ID_794436728" STARTARROW="None" STARTINCLINATION="238;0;"/>
|
|
<node CREATED="1535891222952" ID="ID_1544390501" MODIFIED="1535891230659" TEXT="Ü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 "explore"-Funktion"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1514328741687" ID="ID_1056450433" MODIFIED="1514328755457" TEXT="expandChildren() auf dem Iterator-API auslösbar"/>
|
|
<node CREATED="1514328757725" ID="ID_1835412332" MODIFIED="1514328766544" TEXT="auch ü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ß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änzungen">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node COLOR="#338800" CREATED="1535894221015" FOLDED="true" ID="ID_977007729" MODIFIED="1535898215661" 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>
|
|
|
|
</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 übersehen">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...hatte die Notwendigkeit hierfür seinerzeit während der Tests entdeckt,
|
|
</p>
|
|
<p>
|
|
und im Unit-Test nur fü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="1536533157472" 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ösen">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
sofern längerfristig Itertools durch TreeExplorer abgelöst werden kö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ß 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äht"/>
|
|
<node CREATED="1535904153353" ID="ID_1229789568" MODIFIED="1535904403272" TEXT="ganz nah am Segfault vorbei">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...und das hängt an einem hauchdü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->predicate_ verwendet,
|
|
</p>
|
|
<p>
|
|
dann wird this gecaptured (und das ist effektiv per Referenz). Wenn ich dann den
|
|
</p>
|
|
<p>
|
|
konstruierten Funktor an this->predicate_ zuweise, haben wir eine Endlos-Rekursion.
|
|
</p>
|
|
<p>
|
|
|
|
</p>
|
|
<p>
|
|
Lösung: man muß im lokalen Frame eine Referenz auf this->predicate definieren und binden.
|
|
</p>
|
|
<p>
|
|
Diese wird dann per Value gecaptured, was die gewünschte Kopie bewirkt.
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1535904168943" ID="ID_1486081044" MODIFIED="1535904249188" TEXT="eine unnötige Kopie">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...muß 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ür ist die Syntax grausam)
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1535904461720" FOLDED="true" ID="ID_1122890797" MODIFIED="1535932207865" TEXT="will ich das wirklich.....?">
|
|
<node CREATED="1535904470670" ID="ID_1319028134" MODIFIED="1535904516890" TEXT="natürlich nicht">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...es soll bloß einfach funktionieren!!!!!!!!!!!
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="ksmiletris"/>
|
|
</node>
|
|
<node CREATED="1535906366785" ID="ID_772195469" MODIFIED="1535906388442" TEXT="Komplexität entsteht aus der Flexibilitä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>
|
|
|
|
</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äbe.
|
|
</p>
|
|
<p>
|
|
|
|
</p>
|
|
<p>
|
|
Außerdem habe ich immer noch die Hoffnung, irgendwann mal
|
|
</p>
|
|
<p>
|
|
die Itertools komplett durch den TreeExplorer ablösen zu kö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" FOLDED="true" ID="ID_949648101" MODIFIED="1535932222887" TEXT="speziellen Filter-Layer nur hierfü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ürde aber sehr speziellen Fall markieren"/>
|
|
<node CREATED="1535909145091" ID="ID_1036104765" MODIFIED="1535909185418">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
Name: <b>mutableFilter</b>()
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1535906283948" FOLDED="true" ID="ID_1882070577" MODIFIED="1535932223855" TEXT="Chain-Filter-Bau in HIlfsfunktion">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1535906394646" ID="ID_1941257576" MODIFIED="1535906399057" TEXT="wünschenswert"/>
|
|
<node CREATED="1535906399621" ID="ID_1167561151" MODIFIED="1535906407632" TEXT="nicht klar, ob überhaupt mö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³">
|
|
<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>
|
|
|
|
</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ä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ß 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" FOLDED="true" ID="ID_1859852045" MODIFIED="1536516302967" TEXT="heterogene Prä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ädikat legt den Typ fest">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...für das dort hineingereichte Funktor-Objekt wird der Argument-Accessor ausgewählt (Metaprogrammierung).
|
|
</p>
|
|
<p>
|
|
Er ist dann im Typ des Wrappers == _Traits::Functor codiert.
|
|
</p>
|
|
<p>
|
|
|
|
</p>
|
|
<p>
|
|
Wir können zwar den im Wrapper enthaltenen Funktor neu zuweisen (in gewissen Grenzen),
|
|
</p>
|
|
<p>
|
|
aber er wird stets den zu Beginn gewä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ä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" FOLDED="true" ID="ID_1128977501" MODIFIED="1536516280898" 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>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
Problem: std::function <b>in</b> FilterPredicate
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<node CREATED="1536368354288" ID="ID_1161186805" MODIFIED="1536368384597" TEXT="muß die richtige "Kategorie" haben">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
entweder Val -> bool oder Iter -> 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ö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" FOLDED="true" ID="ID_1436344296" MODIFIED="1536717497148" TEXT="Explorer: rootCurrent()">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1536713813792" ID="ID_255912594" MODIFIED="1536713903337" TEXT="Hilfsmittel fü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üngliche Root-Sequenz"/>
|
|
</node>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1536958962984" FOLDED="true" ID="ID_686602920" MODIFIED="1537052569433" TEXT="custom Layer ermö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>
|
|
|
|
</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 übergeben">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node CREATED="1536958994212" ID="ID_1735239890" MODIFIED="1537050791509" TEXT="flexible zusä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>
|
|
<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="1536533103811" TEXT="heterogene Prä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ädikat legt den Typ fest">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...für das dort hineingereichte Funktor-Objekt wird der Argument-Accessor ausgewählt (Metaprogrammierung).
|
|
</p>
|
|
<p>
|
|
Er ist dann im Typ des Wrappers == _Traits::Functor codiert.
|
|
</p>
|
|
<p>
|
|
|
|
</p>
|
|
<p>
|
|
Wir können zwar den im Wrapper enthaltenen Funktor neu zuweisen (in gewissen Grenzen),
|
|
</p>
|
|
<p>
|
|
aber er wird stets den zu Beginn gewä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" FOLDED="true" ID="ID_619686338" MODIFIED="1536514373005" TEXT="1.Lösung: doppelt wrappen?">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1535923167297" ID="ID_1635196754" MODIFIED="1535923219590" TEXT="Basis-Filter sieht unspezifische Form des Prä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>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
der Aufruf vom äuß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ö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ß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üßte von selber funktionieren...">
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1536514257510" FOLDED="true" ID="ID_1708992184" MODIFIED="1536533099331" TEXT="2.Lösung: type erasure auf dem Funktor">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1536514274780" ID="ID_767166560" MODIFIED="1536514286353" TEXT="lä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="1537050286364" TEXT="extrem komplexe Typen">
|
|
<linktarget COLOR="#a9b4c1" DESTINATION="ID_913930564" ENDARROW="Default" ENDINCLINATION="-274;-41;" ID="Arrow_ID_1572610374" SOURCE="ID_1397772054" STARTARROW="None" STARTINCLINATION="-127;28;"/>
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1536409316172" ID="ID_1468538186" MODIFIED="1536409340127" TEXT="Call-Traces sind nahezu unlesbar">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</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" FOLDED="true" ID="ID_610904065" MODIFIED="1536516268555" TEXT="Untersuchung">
|
|
<icon BUILTIN="info"/>
|
|
<node CREATED="1536409726421" ID="ID_1705785900" MODIFIED="1536409738318" TEXT="welche Typen werden wirklich benö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&)"/>
|
|
</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öglich"/>
|
|
<node CREATED="1536421023732" ID="ID_293881968" MODIFIED="1536421035374" TEXT="in beiden Baumuster-Fällen"/>
|
|
</node>
|
|
<node CREATED="1536421204268" ID="ID_1225988621" MODIFIED="1536421235479">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
Konsequenz: brauche <b>Template</b> Funktions-Operator
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1536499557658" ID="ID_1939855291" MODIFIED="1536499572569" TEXT="dafü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ö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ü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>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
der Funktor für den Expander wird <i>explizit als Sonderfall</i>  aufgefaßt
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
das <i>eigentliche Problem </i>mit der bestehenden Lösung ist,
|
|
</p>
|
|
<p>
|
|
daß ich ausgerechnet mit diesem Sonderfall angefangen habe.
|
|
</p>
|
|
<p>
|
|
Daher ist jetzt das gesamte Design "anders herum"
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1536441367354" ID="ID_1778093460" MODIFIED="1536441424596" TEXT="welcher eine gegebene Funktion in eine vorgegebene function<SIG> einpasst"/>
|
|
</node>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1536451222025" HGAP="9" ID="ID_389572303" MODIFIED="1536515885403" 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" FOLDED="true" ID="ID_645889218" MODIFIED="1536533082014" 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 -> Sig"/>
|
|
<node CREATED="1536451313778" ID="ID_439029617" MODIFIED="1536451336475" TEXT="man kann sie mit Sig aufrufen -> Arg, Ret"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1536451345998" FOLDED="true" ID="ID_1853688774" MODIFIED="1536533080566" TEXT="Funktor-Konstruktor-Funktion">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1536451365731" ID="ID_552359289" MODIFIED="1536451394878" TEXT="für Aufruf aus dem Konstruktor-Kontext">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</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<Ret(SRC&)> ab"/>
|
|
<node CREATED="1536451473013" ID="ID_1179844665" MODIFIED="1536451543886" TEXT="in die der eigentliche Funktor geeignet adaptiert ist">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</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> 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" FOLDED="true" ID="ID_1071395763" MODIFIED="1536533075831" 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="äuß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" FOLDED="true" ID="ID_63715215" MODIFIED="1536515929401" 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" ID="ID_35307754" MODIFIED="1536508637902" 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" ID="ID_1992478190" MODIFIED="1536508652494" 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üssen"/>
|
|
<node CREATED="1536507960432" ID="ID_164121163" MODIFIED="1536507962403" TEXT="im Stack"/>
|
|
</node>
|
|
<node CREATED="1536508021816" ID="ID_1317784150" MODIFIED="1536508682562" TEXT="mü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>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
da sich die Iteratoren <i>wirklich</i> unterscheiden können dü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" ID="ID_220313082" MODIFIED="1536508708301" TEXT="äuß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ösung"/>
|
|
<node CREATED="1536508268765" ID="ID_1221492112" MODIFIED="1536508288165" TEXT="aber genauso viel wie für die anderen Fälle (neue Lösung)"/>
|
|
<node CREATED="1536508292026" ID="ID_775504670" MODIFIED="1536508307124" TEXT="verwendet gleichen Code, Funktor-struct fä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ösung ist etwas aufwendiger zur Laufzeit">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...wobei der konkrete Overhead noch nicht wirklich klar ist;
|
|
</p>
|
|
<p>
|
|
hä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öglicherweise eine zusä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ür einfacheren Code und klarere Template-Argumente">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
und <b>das</b> 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ösung würde zwei redundante Code-Pfade erfordern">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...will sagen, wenn schon eine neue Lö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" FOLDED="true" ID="ID_564310637" MODIFIED="1536533077535" TEXT="vereinfachen">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1536515844176" ID="ID_1550470066" MODIFIED="1536515856523" TEXT="nested Functor fällt weg"/>
|
|
<node CREATED="1536515857230" ID="ID_1234982362" MODIFIED="1536515868816" TEXT="zugehörige Builder fallen weg"/>
|
|
<node CREATED="1536515869405" ID="ID_1548641638" MODIFIED="1536515881255" TEXT="alle darauf aufbauenden Typen sind überflüssig"/>
|
|
</node>
|
|
</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>
|
|
|
|
</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" ID="ID_637460742" MODIFIED="1535893326431" TEXT="Such-Prädikate auf EventLog">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
EventLog ist ein Test-Hilfsmittel,
|
|
</p>
|
|
<p>
|
|
um Unit-Tests über UI-Bus-Interaktionen schreiben zu kö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 BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1535893353955" ID="ID_1665477644" MODIFIED="1535893590393" TEXT="bestehende Lösung umstellen">
|
|
<linktarget COLOR="#cc3e57" DESTINATION="ID_1665477644" ENDARROW="Default" ENDINCLINATION="-4110;-2852;" ID="Arrow_ID_1163013232" SOURCE="ID_1626597975" STARTARROW="None" STARTINCLINATION="1631;0;"/>
|
|
<icon BUILTIN="pencil"/>
|
|
<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ä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ür die Such-Konfiguration einführen">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...so daß 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 -> 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>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
TreeExplorer macht das Wrappen für uns automatisch,
|
|
</p>
|
|
<p>
|
|
und außerdem haben wir nun ein direktes API für die Laufrichtung
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1535938028929" ID="ID_1910123172" MODIFIED="1535938091638" 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="flag-yellow"/>
|
|
<node CREATED="1535939763441" ID="ID_132867774" MODIFIED="1535939780642" TEXT="muß "nur noch" Cursor gegen neue State-Core austauschen"/>
|
|
<node CREATED="1535939781302" ID="ID_285459121" MODIFIED="1535939796824" TEXT="diese hält den Cursor plus einen Stack mit den Filtern"/>
|
|
<node CREATED="1537058259201" ID="ID_1249469718" MODIFIED="1537058264460" TEXT="Anpassungen">
|
|
<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>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...denn durch das Backtracking
|
|
</p>
|
|
<p>
|
|
würde man nun ziemlich undurchsichtige Misch-Zustände bekommen.
|
|
</p>
|
|
<p>
|
|
Und: jeder direkt gesetzte Filter könnte die Invariante im Expander verletzen
|
|
</p>
|
|
<p>
|
|
(weil er einen Kind-Iterator leer machen könnte, ohne daß 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>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...um "Hängenbleiben" auf dem gleichen Element auszuschließen.
|
|
</p>
|
|
<p>
|
|
Vorsicht: um sauber genau einen Schritt machen zu können, müssen wir explizit vorü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äztliche Lösungen">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
weil wir uns bisher bei allen vorausgegangenen Bedingungen
|
|
</p>
|
|
<p>
|
|
auf den ersten Match "festgebissen" haben, und nur über den Iterator mit der
|
|
</p>
|
|
<p>
|
|
zuletzt gesetzen Bedingung weiter iteriert haben.
|
|
</p>
|
|
<p>
|
|
|
|
</p>
|
|
<p>
|
|
|
|
</p>
|
|
<p>
|
|
Kü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>
|
|
|
|
</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ß zusätzlichen overhead bei NOT-Match-Tests bewirken"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1537059388025" ID="ID_1276869558" MODIFIED="1537059394146" TEXT="Tests scheitern...">
|
|
<icon BUILTIN="flag-pink"/>
|
|
<node COLOR="#338800" CREATED="1537059395184" ID="ID_77123611" MODIFIED="1537316730803" TEXT="EventLog_test">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
est-event-log-test.cpp:228:  verify_callLogging: (log.ensureNot("fun").after("fun").after("fun2"))
|
|
</p>
|
|
</body>
|
|
</html>
|
|
</richcontent>
|
|
<icon BUILTIN="info"/>
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1537059455216" ID="ID_318014472" MODIFIED="1537309403475">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</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>
|
|
|
|
</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 überraschend"/>
|
|
<node COLOR="#435e98" CREATED="1537230108686" ID="ID_256131209" MODIFIED="1537316863454" TEXT="sollten wir das ä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" ID="ID_2590903" MODIFIED="1537308991177" TEXT="aber...">
|
|
<icon BUILTIN="button_cancel"/>
|
|
<node CREATED="1537230132898" ID="ID_595305834" MODIFIED="1537230142973" TEXT="manche Tests haben das ausgenützt">
|
|
<node CREATED="1537230371514" ID="ID_1967930414" MODIFIED="1537230375734" TEXT="real world?"/>
|
|
</node>
|
|
<node CREATED="1537230143633" ID="ID_1378112667" MODIFIED="1537230158723" 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="1537312895344" 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 BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1537316714860" ID="ID_84746570" MODIFIED="1537316725828" TEXT="Tests zur Klarstellung ergänzen">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1537059402359" ID="ID_1670401833" MODIFIED="1537059407506" TEXT="BusTerm_test"/>
|
|
<node COLOR="#435e98" CREATED="1537230718644" ID="ID_1760678465" MODIFIED="1537315480594" TEXT="Fix">
|
|
<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>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
und zwar mit <i>abgeschaltetem </i>Filter
|
|
</p>
|
|
</body>
|
|
</html>
|
|
</richcontent>
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
für diesen einen Schritt
|
|
</p>
|
|
<p>
|
|
muß die Filter-Funktion vorübergehend deaktiviert werden,
|
|
</p>
|
|
<p>
|
|
damit wir exakt das nä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" FOLDED="true" ID="ID_1776084088" MODIFIED="1537315479388" 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" ID="ID_83896289" MODIFIED="1537230950961" 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ür den Einstieg verwenden">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1536368106394" ID="ID_1324169393" MODIFIED="1536368114930" TEXT="in eigene Translation-Unit verschieben">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
<node CREATED="1537059357301" ID="ID_1501687281" MODIFIED="1537059360761" TEXT="Beobachtungen">
|
|
<node CREATED="1536368121224" ID="ID_684768731" MODIFIED="1536368139195">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
die Search-Engine bläht die Debug-Infos <b>gewaltig</b> 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="1537059319775" TEXT="BusTerm_test = 14.3 MB">
|
|
<icon BUILTIN="smiley-oh"/>
|
|
</node>
|
|
<node CREATED="1536368166242" ID="ID_1222359374" MODIFIED="1537059337516" TEXT="EventLog_test = 7.4 MB">
|
|
<icon BUILTIN="smiley-angry"/>
|
|
</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ß 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ädikate sind Lambdas -> Template Argumente"/>
|
|
<node CREATED="1537059905107" ID="ID_133126017" MODIFIED="1537059924085" TEXT="d.h. auch die Such-Funktionen müssen nach hinten in das CPP gedrückt werden"/>
|
|
<node CREATED="1537059925313" ID="ID_1283278546" MODIFIED="1537059940483" TEXT="Problem Var-Arg">
|
|
<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 BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1537059994048" ID="ID_1556879726" MODIFIED="1537059997529" TEXT="Umbau">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1537060007341" ID="ID_137118669" MODIFIED="1537060024165" TEXT="eigene Translation-Unit EventLog.cpp anlegen">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1537060024891" ID="ID_416527676" MODIFIED="1537060038043" TEXT="Ctor nach hinten schieben">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1537060040409" ID="ID_440163527" MODIFIED="1537060051953" TEXT="Auswerte-Logik nach hinten schieben">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1537060054767" ID="ID_1081334498" MODIFIED="1537060092467" TEXT="Problem: private Matcher-Builder">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1537060094809" ID="ID_442340693" MODIFIED="1537060104954" TEXT="in freie Template-Funktionen verwandeln?">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1537060267290" ID="ID_1006625301" MODIFIED="1537060278162" TEXT="auch die direkten Filter-Konfigurier-Funktionen">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
</node>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1537060121158" ID="ID_1857002867" MODIFIED="1537060136293" TEXT="Such-Funktionen nach hinten reichen">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
</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ßt Suchposition ein"/>
|
|
</node>
|
|
<node CREATED="1535893989214" ID="ID_875812160" MODIFIED="1535894010499">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</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" FOLDED="true" ID="ID_1801538785" MODIFIED="1537050317551" 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ürzung für direkten Wert-equality-Match"/>
|
|
<node CREATED="1536018276593" ID="ID_1222260775" MODIFIED="1536018287299" TEXT="prekonfigurierte Builder-Funktionen für Standardfälle"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1536018364845" ID="ID_1351452920" MODIFIED="1537050037422" 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öpft">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1536340043113" FOLDED="true" ID="ID_1162927294" MODIFIED="1536353155727" 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="überflü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& auf eine Kopie"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1536342792784" ID="ID_363834044" MODIFIED="1536342806527" TEXT="doppeltes Wrappen unnötig">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1536342807526" ID="ID_1490056918" MODIFIED="1536342900054" TEXT="stattdessen im vector<Step> wrappen">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...d.h. die <i>einzelnen</i> Steps in der Pipeline direkt wrappen.
|
|
</p>
|
|
<p>
|
|
Dann ist auß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&">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</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ährend das Original auf dem Auswertungs-Stack liegen bleibt,
|
|
</p>
|
|
<p>
|
|
für spä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ßern herumgewickelt">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</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>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
weil wir <i>diesen</i> 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="1537022182370" 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->depth()"/>
|
|
<node CREATED="1536857336620" ID="ID_1691329557" MODIFIED="1536857806626" TEXT="this->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ößeres">
|
|
<node CREATED="1536882781354" ID="ID_1998865921" MODIFIED="1536882788421" TEXT="weil daran die Abbruchbedingung hängt"/>
|
|
<node CREATED="1536882789057" ID="ID_170176785" MODIFIED="1536882873905" TEXT="und depth sich aber automatisch ergibt -> Backtracking"/>
|
|
</node>
|
|
<node CREATED="1536882920310" ID="ID_1625878480" MODIFIED="1536882937553" TEXT="eigentlich müßte...">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...nach der »reinen Lehre«
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<node CREATED="1536882938955" ID="ID_475907399" MODIFIED="1536882951373" TEXT="der Baum entweder sich selber entfalten kö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" ID="ID_563964508" MODIFIED="1536882961539" TEXT="oder von außerhalb entfaltet werden">
|
|
<node CREATED="1536883544846" ID="ID_224633668" MODIFIED="1536883607066" TEXT="dann aber auch die Entfaltung von auß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ü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ür" VSHIFT="8">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...insofern wir nämlich zwingend auf den jeweilign Kind-<i>Iterator</i> zugreifen mü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" FOLDED="true" ID="ID_1330264339" MODIFIED="1537050129790" TEXT="Schritte als Funktoren">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node COLOR="#338800" CREATED="1536018684754" FOLDED="true" ID="ID_1076606298" MODIFIED="1536326570743" TEXT="geeignete Signatur fü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ürde genügen, wenn der Werttyp kompatibel ist">
|
|
<icon BUILTIN="info"/>
|
|
</node>
|
|
<node CREATED="1536184383689" ID="ID_1457889497" MODIFIED="1536184509943">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
wir <i>müssen </i>hier eine Festlegung treffen
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</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ü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>
|
|
|
|
</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önnten diese Kopie-Semantik sogar <i>erzwingen,</i>
|
|
</p>
|
|
<p>
|
|
indem wir als Argument-Typ des Schritt-Funktors eine const& 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 -> Filter als Funktor vorgeben"/>
|
|
<node COLOR="#338800" CREATED="1536194368432" FOLDED="true" ID="ID_665607293" MODIFIED="1536274950954" TEXT="kniffelig in der Praxis">
|
|
<icon BUILTIN="smiley-angry"/>
|
|
<node CREATED="1536194407802" ID="ID_752443094" MODIFIED="1536194421332" TEXT="der "Filter"-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>
|
|
|
|
</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ührt dazu, daß der innere Funktor ein Template ist"/>
|
|
<node CREATED="1536194582411" ID="ID_427362932" MODIFIED="1536194600916" TEXT="und deshalb mit IterableDecorator& 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 -> IterableDecorator mö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äre)"/>
|
|
</node>
|
|
<node CREATED="1536195694269" ID="ID_260759561" MODIFIED="1536273228593" TEXT="Lö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" ID="ID_730902625" MODIFIED="1536270305176" 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 -> IterableDecorator greift trotzdem">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
....und fä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ä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" ID="ID_618430280" MODIFIED="1536273236978" TEXT="Fehl-Konvertierung gezielt unterbinden">
|
|
<icon BUILTIN="forward"/>
|
|
<node CREATED="1536271169845" ID="ID_481868916" MODIFIED="1536271374301">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
sofern eine Initialisierung ausidem Source-Iterator <i>möglich ist</i>
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1536271209768" ID="ID_1767817102" MODIFIED="1536271396476" TEXT="...weil es dann grundsätzch nicht notwendig ist, eigens etwas zu tun"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1536273280517" ID="ID_422856174" MODIFIED="1536273415840">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
und sonst ist das <i>nicht wirklich</i> "kniffelig"
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...bloß sind die zig-fach geschachtelten Template-Typen,
|
|
</p>
|
|
<p>
|
|
die dann die Intantiierungs-Call-Hierarchie bevö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<Filter(Filter const&)> als Signatur" VSHIFT="5">
|
|
<icon BUILTIN="info"/>
|
|
<node CREATED="1536273527418" ID="ID_180233427" MODIFIED="1536273554776">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
Konsequenz: jede Argument-Funktion wird <i>nochmal</i> 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" FOLDED="true" ID="ID_1163666446" MODIFIED="1537050128222" TEXT="Pipeline konstruieren">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node COLOR="#338800" CREATED="1536018931433" ID="ID_1532889609" MODIFIED="1536717484882" 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" FOLDED="true" HGAP="33" ID="ID_1163131751" MODIFIED="1536717615755" 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ügt für "leeren" 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" FOLDED="true" ID="ID_967254721" MODIFIED="1536717612628" TEXT="Problem: clearFilter()">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1536353286739" ID="ID_1451254899" MODIFIED="1536353295077" TEXT="bauchen wir das überhaupt">
|
|
<icon BUILTIN="help"/>
|
|
<node CREATED="1536353310976" ID="ID_809196267" MODIFIED="1536353322688" TEXT=""Filter komplett abschalten"">
|
|
<icon BUILTIN="info"/>
|
|
</node>
|
|
<node CREATED="1536353297546" ID="ID_1841672356" MODIFIED="1536353306185" TEXT="war erst mal nur für Test">
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1536353335500" ID="ID_698525366" MODIFIED="1536717475219" TEXT="muß Stack der partiellen Auswertungen verwerfen">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</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ützen">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1536115852336" ID="ID_1044191557" MODIFIED="1536281849860" TEXT="muß 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ürzung fü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ü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" FOLDED="true" ID="ID_886527146" MODIFIED="1537050144836" 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>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...denn
|
|
</p>
|
|
<ul>
|
|
<li>
|
|
es ist praktisch, zunächst "leer" zu konstruieren
|
|
</li>
|
|
<li>
|
|
es ist verständlicher, wenn alle Bedingungen symmetrisch angegeben werden
|
|
</li>
|
|
<li>
|
|
es ist natürlich, daß ein "leerer" Filter alles durchläß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>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
Filter leer == alles durchlassen
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1536357878006" ID="ID_1225195123" MODIFIED="1537050011562" TEXT="Aufräumen und nachrüsten">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node COLOR="#338800" CREATED="1536357891412" FOLDED="true" ID="ID_942897075" MODIFIED="1536717539462" 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 "leer"-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ü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" ID="ID_639133520" MODIFIED="1536632455687" 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ö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" FOLDED="true" ID="ID_1288939799" MODIFIED="1536717548060" 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" FOLDED="true" ID="ID_634133289" MODIFIED="1536717583623" TEXT="clearFilter()">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1536357973769" ID="ID_33678789" MODIFIED="1536358316984" TEXT="brauche Unterstü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ädikat">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...d.h. direkt das Prä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ä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 "universelle referenz" 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" ID="ID_372370252" MODIFIED="1536845455950" 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>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...habe ich noch gar nicht gemerkt, daß 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ü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ß 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" FOLDED="true" ID="ID_1572201908" MODIFIED="1537043844149" TEXT="zwei Layer verwenden">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node COLOR="#338800" CREATED="1536958702987" ID="ID_1313964418" MODIFIED="1536977597184" 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" ID="ID_374374485" MODIFIED="1537043822570" TEXT="Dekorator == Steuer-Logik">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node COLOR="#338800" CREATED="1536958744325" ID="ID_151094681" MODIFIED="1536977615339" TEXT="hält den stepChain_">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1536958772594" FOLDED="true" ID="ID_365283571" MODIFIED="1537043830287" TEXT="klinkt sich in iterNext ein">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node COLOR="#435e98" CREATED="1536958792215" ID="ID_519507996" MODIFIED="1536973216960" 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>
|
|
|
|
</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" ID="ID_700598895" MODIFIED="1537022064594" TEXT="Vorsicht: brauche nochmal IterableDecorator">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
denn: TreeExplorer == IterableDecorator< Pipeline >
|
|
</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>
|
|
|
|
</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ä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++ überschreiben">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1536958815668" ID="ID_327461551" MODIFIED="1536977621476">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
konfiguriert <i>danach direkt</i> 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ür im Explorer-Layer">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node CREATED="1536969537728" ID="ID_1955805225" MODIFIED="1536969691123" TEXT="kann/darf diese nicht für Basis-Iterator nutzen">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...weil der Basis-Iterator (also der Template-Parameter SRC)
|
|
</p>
|
|
<p>
|
|
explizit und absichtlich einen anderen Typ haben <i>könnte,</i> als der expandierte Kind-Iterator.
|
|
</p>
|
|
<p>
|
|
Das ist ein wesentliches Feature dieses Expander-Designs, würde aber leider eine
|
|
</p>
|
|
<p>
|
|
komplett generische Accessor-Funktion unmöglich machen (das Template würde in
|
|
</p>
|
|
<p>
|
|
einem Solchen Fall insgesamt vom Compiler zurü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" FOLDED="true" ID="ID_983878679" MODIFIED="1537050008982" TEXT="mit komplexem Funktor">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node COLOR="#338800" CREATED="1537022226504" ID="ID_1825074472" MODIFIED="1537024319743" TEXT="faul?">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</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ß 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>
|
|
|
|
</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="1536015470477" TEXT="utils">
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1536015471377" ID="ID_1732583592" MODIFIED="1536015487230" TEXT="regex-Iteratoren">
|
|
<icon BUILTIN="hourglass"/>
|
|
<node CREATED="1536015489143" ID="ID_979562288" MODIFIED="1536015508744" TEXT="std::sregex_token_itertor"/>
|
|
<node CREATED="1536015509308" ID="ID_1011220828" MODIFIED="1536015512488" TEXT="geschickt verpacken"/>
|
|
<node CREATED="1536015513076" ID="ID_849722427" MODIFIED="1536015521862" TEXT="den Regex-Include opaque halten"/>
|
|
<node CREATED="1536015525154" ID="ID_1039059758" MODIFIED="1536015533853" TEXT="soll mal in util.hpp"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1482524641484" ID="ID_1651495185" MODIFIED="1518487921096" TEXT="Architektur">
|
|
<node CREATED="1531419748046" ID="ID_1791265013" MODIFIED="1531419752937" TEXT="Lebenszyklus">
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1531419790153" ID="ID_1605635763" MODIFIED="1531419796673" TEXT="#1145 define startup sequence">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1531419814485" ID="ID_373568821" MODIFIED="1531419818710" TEXT="#1146 complete application startup sequence">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1531419837826" ID="ID_719335579" MODIFIED="1531419844130" TEXT="#1147 establish UI start-up sequence">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1531420231598" ID="ID_1997153046" MODIFIED="1531583568734" TEXT="#1148 populate initial session">
|
|
<arrowlink COLOR="#665692" DESTINATION="ID_1392317817" ENDARROW="Default" ENDINCLINATION="-2067;188;" ID="Arrow_ID_609042013" STARTARROW="Default" STARTINCLINATION="2055;91;"/>
|
|
<icon BUILTIN="flag-yellow"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1482524498822" ID="ID_431883229" MODIFIED="1518487921096" TEXT="Datenstrom"/>
|
|
<node CREATED="1482524516371" ID="ID_396707258" MODIFIED="1518487921096" TEXT="Event-Sourcing"/>
|
|
<node CREATED="1482524530842" ID="ID_606738640" MODIFIED="1520718477944" TEXT="Dependency-Injection">
|
|
<node CREATED="1515975589922" ID="ID_367021032" MODIFIED="1515975593045" TEXT="Architektur">
|
|
<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 CREATED="1515975593614" ID="ID_79714950" MODIFIED="1515975595605" TEXT="Technik">
|
|
<node CREATED="1515975596673" ID="ID_1304673048" MODIFIED="1515975599660" TEXT="fü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="1515975645478" TEXT="einfache Lösungen">
|
|
<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" HGAP="36" ID="ID_451964727" MODIFIED="1531584013605" 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="1521433923249" 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="1525124215414" TEXT="Design-Schlußfolgerungen" VSHIFT="11">
|
|
<icon BUILTIN="info"/>
|
|
<node CREATED="1521081661071" ID="ID_500707872" MODIFIED="1533608414048" TEXT="Lösung-1">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
war im Einsatz seit Beginn der Lumiera-Projektes.
|
|
</p>
|
|
<p>
|
|
Wurde aufgegeben da
|
|
</p>
|
|
<ul>
|
|
<li>
|
|
die Policies komplexe Lösungsvarianten implementierten, die nie gebraucht wurden
|
|
</li>
|
|
<li>
|
|
die Implementierung einen tü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ösung-2">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</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äßt,
|
|
</p>
|
|
<p>
|
|
welche auf einem Service mit explizitem Lebenszyklus beruht.
|
|
</p>
|
|
<p>
|
|
Außerdem stellte sich diese Lösung als ziemlich fragil heraus
|
|
</p>
|
|
<p>
|
|
und benö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ö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ängig"/>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1521082621363" ID="ID_1344462005" MODIFIED="1533608414049" TEXT="Lösung-NEU">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
<node COLOR="#338800" CREATED="1521082670076" ID="ID_916083959" MODIFIED="1521160630521" TEXT="geeignete Technik gesucht">
|
|
<icon BUILTIN="yes"/>
|
|
</node>
|
|
<node CREATED="1521082703384" FOLDED="true" ID="ID_510028220" MODIFIED="1533608416343" TEXT="Anforderungen / Wü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är global schattierbar für Test-Mocking"/>
|
|
<node CREATED="1521083598077" ID="ID_1129579564" MODIFIED="1521083604836" TEXT="Problem Konsistenz">
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1521158992344" FOLDED="true" ID="ID_985106186" MODIFIED="1533608416345" TEXT="Fazit">
|
|
<icon BUILTIN="forward"/>
|
|
<node CREATED="1521159000968" ID="ID_1381648131" MODIFIED="1521159186533">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
Bei <i>diesem</i> Wunsch-Profil bleibt nur eine Variante von <b>Lösung-2</b>
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...denn nur eine dynamische Laufzeit-Factory ermöglicht, <i>jederzeit</i>  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>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...denn nur ein Instanz-Pointer kann umgebogen oder auf NULL zurückgesetzt werden.
|
|
</p>
|
|
<p>
|
|
Der einzige Ausweg aus diesem Dilemma wäre eine statische Lösung,
|
|
</p>
|
|
<p>
|
|
in der bereits durch den #include von lib/depend.hpp endgültig klar wäre,
|
|
</p>
|
|
<p>
|
|
was für eine Art von Dependency-Factory zum Einsatz kommen soll. Denn nur auf <i>diesem</i>
|
|
</p>
|
|
<p>
|
|
Weg könnte der Optimiser unmittelbar auf eine Singleton-Instanz im statischen Speicher
|
|
</p>
|
|
<p>
|
|
zugreifen, nach einem Check auf ein atomic<bool>.
|
|
</p>
|
|
<p>
|
|
|
|
</p>
|
|
<p>
|
|
Eine solche statische Lösung allerdings widerspricht nicht nur meinen Wünschen,
|
|
</p>
|
|
<p>
|
|
sondern wäre auch architektonisch ungünstig, denn dadurch
|
|
</p>
|
|
<ul>
|
|
<li>
|
|
entsteht eine zentrale DI-Konfiguration
|
|
</li>
|
|
<li>
|
|
erfolgt eine Rü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>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...denn er muß komplett generisch sein, und lib/depend.hpp darf keinerlei Kenntnis
|
|
</p>
|
|
<p>
|
|
über die konkrete DependencyFactory voraussetzen. Denn sonst wü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>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...denn ein Lambda kann in dieser Lage grundsätzlich keinen optimierungs-Vorteil bringen,
|
|
</p>
|
|
<p>
|
|
und die konventionelle Lösung hat demgegenüber den Vorteil, daß 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>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...denn es läuft darauf hinaus, daß die Nutzung eines Dienstes zwar <i>on demand</i> erfolgt,
|
|
</p>
|
|
<p>
|
|
jedoch <i>stets erst nach</i> seiner Bereitstellung. So etwas läßt sich niemals über einzelne
|
|
</p>
|
|
<p>
|
|
technische Einrichtungen lösen, denn es ist eine Frage des Aufbaues der gesamten Applikation.
|
|
</p>
|
|
<p>
|
|
Es gibt hierfür nur zwei Lösungswege
|
|
</p>
|
|
<ul>
|
|
<li>
|
|
dynamisch: man definiert alle Abhängigkeiten durch Regeln und zieht das System nach Bedarf konsistent hoch, was bedingt, daß <i>alle </i>Abhängigkeiten über diesen Mechanismus laufen müssen
|
|
</li>
|
|
<li>
|
|
statisch: man strukturiert das System so, daß Nutzer erst nach dem Hochfahren der von ihnen benötigten Subsysteme aktiv sein kö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="1522421599316" 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ö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>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
<i>scheidet</i> für unser Nutzungsmuster aus
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...denn es bedutet effektiv, daß viele Instanz-Zeiger "herumfliegen",
|
|
</p>
|
|
<p>
|
|
welche man in einer zentralen Registry erfassen müßte, um sie bei Bedarf
|
|
</p>
|
|
<p>
|
|
wieder auf NULL zurücksetzen zu kö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" ID="ID_1475127406" MODIFIED="1525124215421" 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<Bla> instance"/>
|
|
<node CREATED="1521161130050" ID="ID_1706757665" MODIFIED="1521161170232" TEXT="instance().doIt()"/>
|
|
<node CREATED="1521161171324" ID="ID_744864215" MODIFIED="1521330199058" TEXT="DependInject<Bla>::useSingleton<UnterBla>"/>
|
|
<node CREATED="1521161572133" ID="ID_1327949928" MODIFIED="1521330165247" TEXT="DependInject<Bla>::ServiceInstance<UnterBla> service{p1, p2, p3}"/>
|
|
<node CREATED="1521161634205" ID="ID_619508229" MODIFIED="1521330190739" TEXT="DependInject<Bla>::Local<UnterBla> mock"/>
|
|
<node CREATED="1521161919893" ID="ID_1606842354" MODIFIED="1521161929704" TEXT="mock->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" FOLDED="true" ID="ID_1933406851" MODIFIED="1533608416347" TEXT="Singleton">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node COLOR="#338800" CREATED="1521208339124" ID="ID_287433738" MODIFIED="1521696567487" TEXT="Closure ü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ü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<Bla> 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" FOLDED="true" ID="ID_1129640741" MODIFIED="1533608416349" 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<Bla> injizieren">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1521208889297" ID="ID_214019029" MODIFIED="1521335434588" TEXT="Lebenszyklus-Koppelung">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</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 übergebener Service-Impl ü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="1533608416020" TEXT="(optional)Closure über konkreten Ctor">
|
|
<icon BUILTIN="button_cancel"/>
|
|
<node CREATED="1521688310369" ID="ID_1697840327" MODIFIED="1521688369496" TEXT="sinnlos">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</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" FOLDED="true" ID="ID_384054163" MODIFIED="1533608416352" 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ü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<Bla> beiseite speichern">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1521209547606" ID="ID_1693604174" MODIFIED="1521411853636" TEXT="temporär neuen Service-Zugang in Depend<Bla> installieren, an erzeugte Closure delegierend">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1521209759585" FOLDED="true" ID="ID_267047467" MODIFIED="1533608416021" TEXT="Lebenszyklus-Koppelung">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node COLOR="#338800" CREATED="1521209811802" ID="ID_1712617923" MODIFIED="1521411860363" TEXT="für die UnterBla-Instanz">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1521209827775" ID="ID_280216675" MODIFIED="1521411861265" TEXT="für den temporä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="1533608416024" 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="1533608415691" TEXT="Erzeugen/Zerstö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" FOLDED="true" ID="ID_1734833663" MODIFIED="1533608416354" 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 ü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="1533608416026" 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>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
<b>aber</b> 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änger"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1521237050866" FOLDED="true" ID="ID_306994173" MODIFIED="1533608416355" TEXT="die Factory">
|
|
<node CREATED="1521237057169" FOLDED="true" ID="ID_1684411297" MODIFIED="1533608416027" 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önnte generisch sein"/>
|
|
</node>
|
|
<node CREATED="1521238550267" FOLDED="true" ID="ID_722062331" MODIFIED="1533608416356" TEXT="Ort für Storage">
|
|
<node CREATED="1521238557210" FOLDED="true" ID="ID_674365093" MODIFIED="1533608416029" TEXT="fü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="1533608415697" TEXT="in DependInject">
|
|
<icon BUILTIN="button_cancel"/>
|
|
<node CREATED="1521238764190" ID="ID_1859795284" MODIFIED="1521238777840" TEXT="für zwei Fälle ist das die natü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="1533608415699" 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ür komplexe closure">
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1521238641935" FOLDED="true" ID="ID_1638918713" MODIFIED="1533608416031" 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="1533608415701" 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ß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 "Maschinerie" vermeiden"/>
|
|
<node CREATED="1521239771475" ID="ID_658740954" MODIFIED="1521239917171" TEXT="Storage ist wenn möglich statisch"/>
|
|
<node BACKGROUND_COLOR="#e3d49b" COLOR="#990000" CREATED="1521238998374" ID="ID_1505788760" MODIFIED="1521239221405" TEXT="keine Architektur-Fragen technisch "lösen"">
|
|
<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ä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>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
Folgendes Szenario ignorieren wir:
|
|
</p>
|
|
<ul>
|
|
<li>
|
|
eine Dependency ist als Service konfiguriert
|
|
</li>
|
|
<li>
|
|
für einen Testmock wird eine Local-Konfiguration darübergelegt
|
|
</li>
|
|
<li>
|
|
der Service wechselt seinen Lebenszyklus-Status (aktiv/inaktiv)
|
|
</li>
|
|
</ul>
|
|
<p>
|
|
⟹ der Service zerschieß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" FOLDED="true" ID="ID_711335043" MODIFIED="1533608416358" TEXT="Dependency-Factory">
|
|
<node CREATED="1521240317600" FOLDED="true" ID="ID_1626104494" MODIFIED="1533608416034" 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="1533608416036" 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="1533608415703" 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ö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="1533608416038" 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="übernimmt das Managen der Objekte"/>
|
|
<node CREATED="1522389243868" ID="ID_104693188" MODIFIED="1522389252479" TEXT="ist interne Schnittstelle zur Konfiguration"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1521242246702" FOLDED="true" ID="ID_650712800" MODIFIED="1533608416359" 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" FOLDED="true" ID="ID_1052722676" MODIFIED="1533608416361" 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" FOLDED="true" ID="ID_1183392158" MODIFIED="1533608416361" TEXT="DependencyFactory-Rahmenklasse">
|
|
<icon BUILTIN="button_cancel"/>
|
|
<node CREATED="1521416462342" ID="ID_1333178845" MODIFIED="1521418281285" TEXT="fä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ür den Implementierungs-Pointer">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1521169130251" ID="ID_1252056818" MODIFIED="1521418281285" TEXT="Zugang für DependInject">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1521324229082" FOLDED="true" ID="ID_1398878858" MODIFIED="1533608416363" TEXT="Storage">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1521324240124" ID="ID_1099103129" MODIFIED="1521418281285">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</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="1533608416040" TEXT="sehe aber auch keinen wirklichen Vorteil">
|
|
<icon BUILTIN="smiley-neutral"/>
|
|
<node CREATED="1521324529228" ID="ID_1786667023" MODIFIED="1521418281285" TEXT="man muß sich nicht um die de-Allokation kü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>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
das gilt im Besonderen für eine default-Storage als Singleton.
|
|
</p>
|
|
<p>
|
|
Wofern wir dynamisch konfigurieren (wollen), muß dieser Default stets statisch bereitgestellt werden,
|
|
</p>
|
|
<p>
|
|
selbst wenn die dynamische Konfiguration so angelegt ist, daß die Storage nie benötigt wird
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1521324883035" ID="ID_1438637057" MODIFIED="1521418281285" TEXT="Heap-Allokation kö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" FOLDED="true" ID="ID_961824675" MODIFIED="1533608416365" TEXT="Meyers Singleton oder explizit ausprogrammieren?">
|
|
<icon BUILTIN="help"/>
|
|
<node CREATED="1521303577633" ID="ID_1665490706" MODIFIED="1521418281285" TEXT="das wäre die "Standard-Lösung" für Singletons"/>
|
|
<node CREATED="1521303616675" FOLDED="true" ID="ID_135579041" MODIFIED="1533608416043" TEXT="hier aber nicht sinnvoll...">
|
|
<node CREATED="1521303634705" FOLDED="true" ID="ID_433169847" MODIFIED="1533608415704" TEXT="weil wir explizit ein Lock halten mü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ür Meyers Singleton nochmal ein Lock generiert"/>
|
|
</node>
|
|
<node CREATED="1521303775845" ID="ID_1256913997" MODIFIED="1521418281286" TEXT="weil wir unsere Singletons ggfs explizit zerstören wollen"/>
|
|
<node CREATED="1521303816879" ID="ID_1463480909" MODIFIED="1521418281286" TEXT="weil wir eine Closure für den Konstruktor erzeugen wollen"/>
|
|
<node CREATED="1521303847923" ID="ID_917362189" MODIFIED="1521418281286" TEXT="weil wir Abstrakte Typen explizit ausschließen müssen"/>
|
|
</node>
|
|
<node CREATED="1521303869768" ID="ID_712811337" MODIFIED="1521418281286" TEXT="all das wäre auch mit Meyers Singleton irgendwie hinzubekommen....">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</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" FOLDED="true" ID="ID_1640990866" MODIFIED="1533608416367" 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="1533608416046" 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ückisch">
|
|
<icon BUILTIN="broken-line"/>
|
|
</node>
|
|
<node CREATED="1521253867787" ID="ID_662728746" MODIFIED="1521418281286" TEXT="Lifecycle-Handle existiert erst viel später">
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
</node>
|
|
<node CREATED="1521385652999" FOLDED="true" ID="ID_1974848336" MODIFIED="1533608415707" TEXT="statischer Schutz">
|
|
<icon BUILTIN="button_cancel"/>
|
|
<node CREATED="1521385660206" FOLDED="true" ID="ID_200575604" MODIFIED="1525124215518" 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="1525124215436" 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ä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>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
Und das hängt nur von den Umstä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önnten Compiler/Linker noch "schlauer" 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ß 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="1533608416049" 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ückisches Problem">
|
|
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
|
|
<icon BUILTIN="broken-line"/>
|
|
</node>
|
|
<node CREATED="1522557575925" FOLDED="true" ID="ID_1228603701" MODIFIED="1533608415710" 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="1533608415714" TEXT="Untersuchung: statische Init">
|
|
<icon BUILTIN="idea"/>
|
|
<node CREATED="1522557739071" ID="ID_1920814871" MODIFIED="1522557754025" TEXT="verhält sich tatsä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>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
daher <b>muß</b> sein dtor <b>vor</b> dem dtor von DependencyFactory laufen
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1522557924661" FOLDED="true" ID="ID_1965837896" MODIFIED="1525124215518" TEXT="konsistent?">
|
|
<node CREATED="1522557833985" ID="ID_449005089" MODIFIED="1522557848371" TEXT="Bis zum dtor-Aufruf ist alles kohä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="1533608415717" TEXT="Fazit">
|
|
<icon BUILTIN="forward"/>
|
|
<node COLOR="#338800" CREATED="1522558005906" ID="ID_1914654214" MODIFIED="1522558192841" TEXT="re-entrance während dem dtor-Aufruf eigens behandeln">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
denn während dem dtor existiert das Lock nicht mehr.
|
|
</p>
|
|
<p>
|
|
Man kann aber die Logik so umordnen, daß 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äuft ü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" ID="ID_53329830" MODIFIED="1525193221025" TEXT="Implementierung ausführen">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node COLOR="#338800" CREATED="1521418559868" ID="ID_592269917" MODIFIED="1521688403021" TEXT="Depend<SRV> Front-End">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1521418571594" ID="ID_1432227459" MODIFIED="1521688407751" TEXT="DependInject<SRV> 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ä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" FOLDED="true" ID="ID_1627167666" MODIFIED="1533608416368" TEXT="gefällt mir nicht wirklich">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
denn nun wird das "singleton" schon ziemlich gehaltlos,
|
|
</p>
|
|
<p>
|
|
und es ist einigermaßen undurchsichtig, wo nun die Instanz erzeugt wird.
|
|
</p>
|
|
<p>
|
|
|
|
</p>
|
|
<p>
|
|
Allerdings gibt es auch kein stichhaltiges Argument, dieses Feature<i> nicht</i> zu implementieren.
|
|
</p>
|
|
<p>
|
|
Es ist halt einfach nahheliegend, daß man mal eine Subklasse mit abweichenden Parametern
|
|
</p>
|
|
<p>
|
|
konstruieren wollen könnte, und es ist von der Implementierung her "quasi geschenkt".
|
|
</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" FOLDED="true" ID="ID_1772115642" MODIFIED="1533608416369">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</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>
|
|
|
|
</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" FOLDED="true" ID="ID_992901826" MODIFIED="1533608416371" TEXT="use-cases">
|
|
<font NAME="SansSerif" SIZE="12"/>
|
|
<icon BUILTIN="forward"/>
|
|
<node CREATED="1521788428588" FOLDED="true" ID="ID_1454492096" MODIFIED="1533608416050" TEXT="lazy init">
|
|
<node CREATED="1521788443562" ID="ID_699722245" MODIFIED="1521788611886" TEXT="acquire-release ist "ausreichend"">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...das meint zweierlei
|
|
</p>
|
|
<ul>
|
|
<li>
|
|
wir brauchen keine volle sequentielle Konsistenz
|
|
</li>
|
|
<li>
|
|
eigentlich würde <i>consume</i> statt <i>acquire</i> genügen,<br />aber wir verzichten auf diesen ehr theoretischen Performance-Gewinn,<br />welcher nur relevant wä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>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
essentiell ist, im Mutex-geschützten Bereich
|
|
</p>
|
|
<p>
|
|
auf einer temporä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="1533608416054" 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ürde sogar ein nicht-atomic genügen"/>
|
|
<node CREATED="1521788825341" ID="ID_984179535" MODIFIED="1521788870307" TEXT="memory_order_relaxed wäre korrekt"/>
|
|
<node CREATED="1521788871702" ID="ID_1445815040" MODIFIED="1521789034029" TEXT="aber seq_cst ist tolerierbar und lesbarer">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
warum?
|
|
</p>
|
|
<p>
|
|
weil per Definitionem dieses gesamte Konfigurations-Thema
|
|
</p>
|
|
<p>
|
|
als <i>nicht performance-kritisch</i> 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="1533608416057" TEXT="start Service">
|
|
<node CREATED="1521789241116" FOLDED="true" ID="ID_1521979010" MODIFIED="1533608415720" 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="1525124215518" TEXT=""Ja" würde bedeuten....">
|
|
<node CREATED="1521789292172" ID="ID_1709140060" MODIFIED="1521789340386" TEXT="daß Konkurrenz zwischen Singleton und Service vorgesehen ist"/>
|
|
<node CREATED="1521789342638" ID="ID_1682448407" MODIFIED="1521789361687" TEXT="und wir müßten in diesem Fall mit CAS den Service veröffentlichen"/>
|
|
</node>
|
|
<node CREATED="1521789364195" ID="ID_603083662" MODIFIED="1521789452318" TEXT="die Antwort ist eindeutig "Nein"">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</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ß per memory_order_release veröffentlicht werden">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...denn sonst kö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="1533608416058" TEXT="stop Service">
|
|
<node CREATED="1521789943683" ID="ID_128133787" MODIFIED="1521790025755" TEXT="völlig analog: instance = nullptr braucht release-Semantik"/>
|
|
<node CREATED="1521790091662" FOLDED="true" ID="ID_1518955379" MODIFIED="1533608415723" 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>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...d.h. das ganze Locking und die memory-order schützt uns hier <b>überhaupt nicht</b>!
|
|
</p>
|
|
<p>
|
|
Es kann sehr wohl passieren, daß ein anderer Thread grade eben noch
|
|
</p>
|
|
<p>
|
|
sicht den Pointer auf den Service geholt hat, und wir dann den Service zerstören, wä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>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
unsere Architektur stellt aber sicher,
|
|
</p>
|
|
<p>
|
|
daß dieser Fall nicht relevant ist
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
warum?
|
|
</p>
|
|
<p>
|
|
Weil der "andere Thread" 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ängt
|
|
</li>
|
|
</ul>
|
|
<p>
|
|
In beiden Fällen stellen unsere Prinzipien zum Betreiben von Subsystemen sicher,
|
|
</p>
|
|
<p>
|
|
daß dieser "andere Thread" nicht (mehr) aktiv sein darf, wenn der Shutdown erfolgt.
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1521790458636" FOLDED="true" ID="ID_1895342635" MODIFIED="1525124215518" 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>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
hier ist ein <b>Segfault</b> möglich
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1521791102683" FOLDED="true" ID="ID_1344381807" MODIFIED="1533608416060" TEXT="Mock">
|
|
<node CREATED="1521791122872" FOLDED="true" ID="ID_236648459" MODIFIED="1533608415725" TEXT="Generell unterstellen wir hier gutmütige Verhä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 überhaupt) nur sehr kontrolliert auf"/>
|
|
</node>
|
|
<node CREATED="1521791233344" ID="ID_1474658967" MODIFIED="1521791269115" TEXT="auch hier erschlä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ügig langsamer">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...denn wir sind auf x86_64 -- und diese Plattform ist per default <i>fast überall</i> 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" FOLDED="true" ID="ID_565916879" MODIFIED="1533608416372" TEXT="drei Fälle">
|
|
<icon BUILTIN="forward"/>
|
|
<node COLOR="#338800" CREATED="1521791790172" ID="ID_995415475" MODIFIED="1521882801672" TEXT="Mutex für jeden Zugriff">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1521791805930" ID="ID_1036499157" MODIFIED="1521882803656" TEXT="Lösung ohne Atomics (inkorrekt)">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1521791823055" ID="ID_1820322207" MODIFIED="1521882806238" TEXT="Lösung mit Atomics">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1521791837014" ID="ID_1625592637" MODIFIED="1521882823105" TEXT="Messwerte als Verhältniszahl angeben">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1522110414912" ID="ID_1861060212" MODIFIED="1531584013624" TEXT="Singleton-Erzeugung zusammenfü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ührend">
|
|
<icon BUILTIN="idea"/>
|
|
<node CREATED="1522110568307" ID="ID_311971109" MODIFIED="1522110579069" TEXT="Depend<SUB>"/>
|
|
<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<SUB> wird zum Synonym"/>
|
|
<node CREATED="1522111399080" FOLDED="true" ID="ID_753159927" MODIFIED="1533608416373" TEXT="kaskadierend">
|
|
<node CREATED="1522110724165" ID="ID_879974852" MODIFIED="1522110749614" TEXT="acquire Lock<SUB>"/>
|
|
<node CREATED="1522110842845" ID="ID_12886357" MODIFIED="1522110920894" TEXT="store into Depend<SUB>::instance"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1522110508507" ID="ID_789229743" MODIFIED="1533608414090" TEXT="Fälle">
|
|
<node CREATED="1522110513930" FOLDED="true" ID="ID_752814721" MODIFIED="1533608416374" 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ür nicht-instantiierbare Typen"/>
|
|
</node>
|
|
<node CREATED="1522110520777" FOLDED="true" ID="ID_336202422" MODIFIED="1533608416375" 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>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...man <i>könnte</i> 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ächtigt.
|
|
</p>
|
|
<p>
|
|
Sollte Depend<SUB> bereits instantiiert sein, dann auch gut.
|
|
</p>
|
|
<p>
|
|
Der kaskadierende Aufruf liest dann einfach <i>dessen</i> Instanz-Pointer
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1522110531344" FOLDED="true" ID="ID_1376369013" MODIFIED="1533608416376" TEXT="custom-ctor">
|
|
<node CREATED="1522112368219" ID="ID_774074460" MODIFIED="1522112375518" TEXT="konkreten Typ feststellen"/>
|
|
<node CREATED="1522112376154" FOLDED="true" ID="ID_1394042003" MODIFIED="1533608416062" TEXT="für diesen...">
|
|
<node CREATED="1522113449575" ID="ID_644735948" MODIFIED="1522113456734" TEXT="acquire Lock<SUB>"/>
|
|
<node CREATED="1522112395280" ID="ID_995036578" MODIFIED="1522113339076" TEXT="Instantiierungs-Check">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
hier notwendig, weil wir eine neue Factory-Funktion ablegen.
|
|
</p>
|
|
<p>
|
|
Das kö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" FOLDED="true" ID="ID_284894079" MODIFIED="1533608416377" TEXT="bisher">
|
|
<node CREATED="1522200106373" ID="ID_1981188993" MODIFIED="1522200226028" TEXT="was die Factory zurü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" FOLDED="true" ID="ID_929047067" MODIFIED="1533608416379" TEXT="gewü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ört werden">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1522200189706" ID="ID_302642427" MODIFIED="1522382084962" TEXT="möglichst alle instance-Pointer zurücksetzen">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1522384942847" ID="ID_1152640572" MODIFIED="1522387791802" TEXT="Fehlermeldung beim Zugriff nach Zerstö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ä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 übriggebliebener Destruktor in einem Mock" VSHIFT="12">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
zwar wird beim Löschen des Mock
|
|
</p>
|
|
<p>
|
|
die ursprüngliche Factory wieder an ihren Platz zurückgeschoben,
|
|
</p>
|
|
<p>
|
|
aber niemand sagt, daß ein Move auch wirklich ein Move (swap) ist.
|
|
</p>
|
|
<p>
|
|
Muß daher diese leer gewordene temporäre Factory explizit auf Default-Zustand zurücksetzen,
|
|
</p>
|
|
<p>
|
|
damit nicht doch noch der Deleter läuft.
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="ksmiletris"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1522387936585" ID="ID_1922190351" MODIFIED="1522388778471" TEXT="es wäre besser, wenn Factory überhaupt nicht assignable wäre">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...und man stattdessen explizit eine <i>gefährliche Funktion</i>  aufrufen muß
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1522334796724" ID="ID_1080992734" MODIFIED="1531584013626" TEXT="Funktoren zusammenführen">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node COLOR="#338800" CREATED="1522334843062" ID="ID_1526236017" MODIFIED="1533608414095" TEXT="DependencyFactory fü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" FOLDED="true" ID="ID_136231234" MODIFIED="1533608416379" TEXT="Klasse ohne Default-ctor">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1522384796267" FOLDED="true" ID="ID_1913154173" MODIFIED="1533608416063" 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<X> kann das nicht unterscheiden"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1522384848011" ID="ID_834547191" MODIFIED="1522384870993" TEXT="Lö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" FOLDED="true" ID="ID_615466863" MODIFIED="1533608416381" TEXT="Use-cases">
|
|
<node CREATED="1522367601081" FOLDED="true" ID="ID_1594593457" MODIFIED="1533608416065" 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="1533608416066" 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<SUB>">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1522367617999" FOLDED="true" ID="ID_1310241568" MODIFIED="1533608416068" 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" FOLDED="true" ID="ID_272084666" MODIFIED="1533608416382" TEXT="grundsä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'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ä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ährlich, aber nicht sauber">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...da es sich ja nur um die <i>Factory</i> 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ß irgend etwas mit der
|
|
</p>
|
|
<p>
|
|
Initialisierung von Statics "faul" 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ö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="1531584013629" 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ü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ä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>
|
|
|
|
</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ü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="überlegen, wo das Architektur-Thema dargestellt werden sollte">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1521962966238" ID="ID_1724029235" MODIFIED="1521962976832" TEXT="gehört in die Architektur-Sektion"/>
|
|
<node COLOR="#338800" CREATED="1521962977140" ID="ID_1121275609" MODIFIED="1521962995498" TEXT="Neue Seite "Subsystems" 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ü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ä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="1531584013633" 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ährend der re-Implementirung"/>
|
|
<node CREATED="1521419657356" ID="ID_1381265753" MODIFIED="1521419674957" TEXT="der alte Test muß 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="ü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ür subclass-Singleton">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1521696547161" ID="ID_413219021" MODIFIED="1521696551785" TEXT="für Test-Mock">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1521433852660" ID="ID_1581010755" MODIFIED="1521433857543" TEXT="lä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>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
die von der alten DependencyFactory abhä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" ID="ID_1512641426" MODIFIED="1531584013635" 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="1531584013638" TEXT="Konfig-Aufrufe anpassen">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node COLOR="#338800" CREATED="1522033578207" HGAP="18" ID="ID_252429770" MODIFIED="1525124215470" TEXT="Name für Freunschaft+" VSHIFT="-20">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1522033614743" ID="ID_1110690522" MODIFIED="1533608414101" TEXT="friend class lib::InstanceHolder<TargetObj>;">
|
|
<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<TargetObj> auch noch">
|
|
<icon BUILTIN="smiley-angry"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1522033635991" ID="ID_321432260" MODIFIED="1533608414102" TEXT="könnte das Depend selber sein?">
|
|
<icon BUILTIN="button_cancel"/>
|
|
<node CREATED="1522388820751" ID="ID_721931573" MODIFIED="1522388962542" TEXT="ist doch ehr ein irreführender Name">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...wenn man nämlicht Lumiera's Lösung nicht genau kennt,
|
|
</p>
|
|
<p>
|
|
könnte sich das so lesen, als wäre Depend<X> ein Mixin,
|
|
</p>
|
|
<p>
|
|
welches einer Klasse <i>magisch</i> eine Dependency als protected-Feld zugänglich macht.
|
|
</p>
|
|
<p>
|
|
Und dann wäre es ziemlich pervasiv, sowas zum Freund zu erklären.
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1522388857786" ID="ID_1151074517" MODIFIED="1522389011363">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
<b>DependencyFactory</b> 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üß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" ID="ID_302686020" MODIFIED="1525124215477" TEXT="aufrä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ö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ösung fü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ä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" FOLDED="true" ID="ID_893221959" MODIFIED="1533608416383" 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>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
den habe ich <b>nicht mehr</b> über das Interface-System gemappt
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
weil mir das ganze C-gefrickel zu blö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" FOLDED="true" ID="ID_885178924" MODIFIED="1533608416384" TEXT="komplett auf lib::Depend umstellen">
|
|
<icon BUILTIN="yes"/>
|
|
<node CREATED="1522712083659" ID="ID_1397345256" MODIFIED="1522712851333" TEXT="das heiß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" FOLDED="true" ID="ID_965836148" MODIFIED="1533608416387" TEXT="wie funktioniert's?">
|
|
<icon BUILTIN="info"/>
|
|
<node CREATED="1522640064852" ID="ID_1332360368" MODIFIED="1522640101606">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
der Interface-<i>Anbieter</i> 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ür den Proxy als Meyer's Singleton"/>
|
|
<node CREATED="1522640235676" FOLDED="true" ID="ID_1807301195" MODIFIED="1533608416070" TEXT="der Holder hat statische open/close">
|
|
<node CREATED="1522640247947" ID="ID_1019392965" MODIFIED="1522640254990" TEXT="diese erzeugen/zerstö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="1533608416071" TEXT="dieser ist ein RAII-Handle fü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" FOLDED="true" ID="ID_312762900" MODIFIED="1533608416388" TEXT="Plan zum Umschreiben">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1522640706787" FOLDED="true" ID="ID_1205995335" MODIFIED="1533608416074" 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="1533608416078" 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ällt komplett weg">
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1522642882751" FOLDED="true" ID="ID_1084473697" MODIFIED="1533608415728" TEXT="Gute Idee -- zukunftsfä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önnte per SWIG generiert werden"/>
|
|
</node>
|
|
<node CREATED="1522640881187" FOLDED="true" ID="ID_1419416708" MODIFIED="1533608415730" TEXT="Frage: wie konstruiert man einen Proxy">
|
|
<icon BUILTIN="help"/>
|
|
<node CREATED="1522641344691" ID="ID_1154911224" MODIFIED="1522641358813" TEXT="gegenwärtig: bekommt das InstanceHandle"/>
|
|
<node CREATED="1522641378263" ID="ID_1762905192" MODIFIED="1522641389641" TEXT="könnte aber direkt eine Interface-Ref sein"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1522641405299" FOLDED="true" ID="ID_676190433" MODIFIED="1533608415734" TEXT="Proxy">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1522641413586" FOLDED="true" ID="ID_1187300065" MODIFIED="1525124215518" 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ä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="1525124215519" TEXT="Ort der Definition">
|
|
<icon BUILTIN="help"/>
|
|
<node CREATED="1522696074226" FOLDED="true" ID="ID_1811816913" MODIFIED="1525124215487" TEXT="Güterabwä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ät der Implementierung"/>
|
|
</node>
|
|
<node CREATED="1522697094565" FOLDED="true" ID="ID_407823709" MODIFIED="1525124215488" TEXT="Wertung">
|
|
<node CREATED="1522697098420" ID="ID_640748324" MODIFIED="1522697195082" TEXT="Entkoppelung ist verpflichtend fü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ät ist eine Folge der führenden Belange">
|
|
<icon BUILTIN="full-3"/>
|
|
</node>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1522697220012" FOLDED="true" ID="ID_153609314" MODIFIED="1525124215488" 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ür jedes Binding soll eine TranslationUnit frei wählbar sein"/>
|
|
<node COLOR="#338800" CREATED="1522697350106" ID="ID_138544872" MODIFIED="1522724906505" TEXT="Technik zur Entkoppelung benötigt">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#0e0099" CREATED="1522649812255" FOLDED="true" ID="ID_624985973" MODIFIED="1525124215519" STYLE="fork">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</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="1525124215488" 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="1525124215488" 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>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...wir müssen immer, für jeden Proxy
|
|
</p>
|
|
<p>
|
|
explizit eine Template-Instaniierung triggern, und zwar fü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="1525124215519" TEXT="Technologie">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1522697675229" FOLDED="true" ID="ID_1605136526" MODIFIED="1525124215488" 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ö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="1522733898797" TEXT="mögliche Lö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ä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ß Methoden (ctor/dtor und operator) separat definieren"/>
|
|
<node CREATED="1522698295719" ID="ID_381014397" MODIFIED="1522698339173" TEXT="das ist effektiv die Lösung "separat definieren" + 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ösung">
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
<node CREATED="1522698013526" ID="ID_712885279" MODIFIED="1522698021465" TEXT="können selber komplett generisch sein"/>
|
|
<node CREATED="1522698022005" ID="ID_518407557" MODIFIED="1522698033855" TEXT="müssen jeweils explizit von einem Template instantiiert werden"/>
|
|
<node CREATED="1522698034563" ID="ID_1793485859" MODIFIED="1522698091426">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
brauchen eigenen Zugriffs-Mechanismus auf ein <i>weiteres</i> 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ß"/>
|
|
<node CREATED="1522729383029" ID="ID_212849140" MODIFIED="1522729398784" TEXT="Vorteil: erzeugen "nebenbei" 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ür sorgen, daß die Definitionen nur in der Proxy-Instantiierung (TU) sichtbar sind"/>
|
|
<node CREATED="1522698386810" ID="ID_1773412414" MODIFIED="1522733895572" TEXT="diese Definitionen mü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ß (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<IHA> + Template Instanz dieser">
|
|
<icon BUILTIN="forward"/>
|
|
<node CREATED="1522699225239" ID="ID_894223806" MODIFIED="1522733778687" TEXT="das ist praktisch die bestehende Lösung">
|
|
<icon BUILTIN="info"/>
|
|
</node>
|
|
<node CREATED="1522699240684" ID="ID_600377865" MODIFIED="1522733778687" TEXT="wird dort nur indirekt über die Instanz der freinen Funktionen ausgelö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 überhaupt?">
|
|
<icon BUILTIN="help"/>
|
|
</node>
|
|
<node CREATED="1522702931486" ID="ID_2039076" MODIFIED="1522702953351" TEXT="CRTP-Klasse muß in allen anderen TU abstrakt bleiben"/>
|
|
<node CREATED="1522703026153" FOLDED="true" ID="ID_1981862674" MODIFIED="1525124215488" TEXT="Mö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ß per Lambda erzeugt werden"/>
|
|
<node CREATED="1522704033950" ID="ID_1313113320" MODIFIED="1522704041464" TEXT="muß virtuellen dtor haben"/>
|
|
<node CREATED="1522704194912" ID="ID_317190411" MODIFIED="1522704592454" TEXT="Problem: konkrete Proxy-Klasse muß in ServiceInstance::activate">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...oder sogar den ctor, das ist egal --
|
|
</p>
|
|
<p>
|
|
denn das Problem ist, ctor (oder activate) werden aus <i>demjenigen</i> 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)…
|
|
</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> ist nun, diese umgeleiteten Funktionsdefinitionen können <i>nur einen Typ</i> (Template-Parameter) bekommen, und dieser Typ wiederum muß -- 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ö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ö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äßlich und umstä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ö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>
|
|
|
|
</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& an den ctor von Binding ü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ö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ösung erscheint adäquat">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
sie ist zwar nicht schön -- aber was ist an einem Interface-Binding schon "schön"?
|
|
</p>
|
|
<p>
|
|
|
|
</p>
|
|
<p>
|
|
Sie ist hinreichend wartbar, sofern man sie per copy-n-pate vervielfältigt.
|
|
</p>
|
|
<p>
|
|
Es wäre sogar denkbar, in diesen Rump eine generierte Proxy-Klasse zu kleben,
|
|
</p>
|
|
<p>
|
|
da nur wenige Variable erstetzt werden müßten.
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1522649565217" FOLDED="true" ID="ID_1192073765" MODIFIED="1533608416390" TEXT="Probleme bei der Realisierung">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1522649583511" ID="ID_709785832" MODIFIED="1522649600993" TEXT="Instancehandle muß jetzt die Proxy-Implementierung sehen"/>
|
|
<node CREATED="1522649601916" FOLDED="true" ID="ID_114261035" MODIFIED="1533608416079" TEXT="die beiden Seiten des Bindings sind damit fest verkoppelt">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
das ist ein konzeptionelles Problem.
|
|
</p>
|
|
<p>
|
|
Eigentlich möchte man durch ein Interface Entkoppelung erreichen.
|
|
</p>
|
|
<p>
|
|
|
|
</p>
|
|
<p>
|
|
Nun ist es so, daß
|
|
</p>
|
|
<ul>
|
|
<li>
|
|
das Binding BusinessInterface -> InterfaceSystem
|
|
</li>
|
|
<li>
|
|
InterfaceSystem -> 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ür das GUI">
|
|
<icon BUILTIN="flag-pink"/>
|
|
</node>
|
|
<node CREATED="1522649711165" ID="ID_1651731483" MODIFIED="1522649729254" TEXT="erzeugt zyklische ABI-Abhängigkeiten">
|
|
<icon BUILTIN="broken-line"/>
|
|
</node>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1522649763142" ID="ID_1212106242" MODIFIED="1522649902016" TEXT="aber der Rest würde schö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ösung zum Entkoppeln der Proxy-Definition">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1522709654308" FOLDED="true" ID="ID_1059248114" MODIFIED="1533608416392" TEXT="bestehenden Code umschreiben">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node COLOR="#338800" CREATED="1522709669498" FOLDED="true" ID="ID_9288802" MODIFIED="1533608416082" 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="1533608416085" 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="1533608415735" TEXT="Play(Facade)">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1522711269948" ID="ID_153188000" MODIFIED="1522711287118" TEXT="hä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ü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" ID="ID_1294295502" MODIFIED="1531584013645" 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" FOLDED="true" ID="ID_1012349550" MODIFIED="1533608416393" TEXT="unklare statische Abhängigkeiten">
|
|
<node CREATED="1522454074760" FOLDED="true" ID="ID_1884600051" MODIFIED="1533608416086" 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="1533608416089" 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ützt">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1522557456894" ID="ID_627428103" MODIFIED="1522557498811">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...und lib::Depend so umarrangiert,
|
|
</p>
|
|
<p>
|
|
daß re-entrant-Aufrufe während dem dtor erlaubt sind
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1522454146645" FOLDED="true" ID="ID_818640049" MODIFIED="1533608416091" TEXT="Advice-System">
|
|
<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="info"/>
|
|
<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="1533608415740" 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<X>::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="1533608415742" 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>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
so wie das Advice-System geschrieben ist,
|
|
</p>
|
|
<p>
|
|
kann und muß man das "durchwinken"
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
denn grundsätzlich ist das ganze Advice-System bewußt "billig" implementiert;
|
|
</p>
|
|
<p>
|
|
Verbesserungen später willkommen....
|
|
</p>
|
|
<p>
|
|
|
|
</p>
|
|
<p>
|
|
Der Destructor räumt alle AdviceProvisions weg.
|
|
</p>
|
|
<p>
|
|
Diese werden in einen statischen Kontext geschoben, damit sie unabhängig vom Advisor weiterleben.
|
|
</p>
|
|
<p>
|
|
Daher müssen wir aus diesem statischen Kontext heraus wieder zurück in's AdviceSystem kommen.
|
|
</p>
|
|
<p>
|
|
|
|
</p>
|
|
<p>
|
|
Alternative wä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ßverhältnis
|
|
</p>
|
|
<p>
|
|
zum Level der gesamten übrigen Implementierung (welche nämlich um einiges
|
|
</p>
|
|
<p>
|
|
elaborierter sein kö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" FOLDED="true" ID="ID_1823464628" MODIFIED="1533608416394" 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="1533608416092" 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="1533608416094" 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" FOLDED="true" ID="ID_1054219137" MODIFIED="1533608416397" 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="1533608416095" TEXT="fü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="1533608416097" TEXT="wie?">
|
|
<node CREATED="1522455656181" FOLDED="true" ID="ID_1878626771" MODIFIED="1533608415744" 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'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ß 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" FOLDED="true" ID="ID_1367664577" MODIFIED="1533608416398" 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ä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'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ß Meyer's Singleton bleiben">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...weil Nobug-Init ON_BASIC_INIT braucht,
|
|
</p>
|
|
<p>
|
|
und lib::Depend wiederum von Nobug-Init abhängig ist.
|
|
</p>
|
|
<p>
|
|
|
|
</p>
|
|
<p>
|
|
Also würde DependencyFactory<LifecycleRegistry> 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ö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>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
und heute würde ich den Code <i>so</i> 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>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
genauer:
|
|
</p>
|
|
<p>
|
|
er ist nicht kaputt, sondern hat sehr gut funktioniert und diesen Unfug festgestellt.
|
|
</p>
|
|
<p>
|
|
Nämlich daß unser lib::Depend ein ClassLock braucht, um einen Fehler zu melden.
|
|
</p>
|
|
<p>
|
|
Das ist, für sich betrachtet, eigentlich unvermeidlich, aber verlangt dann auch
|
|
</p>
|
|
<p>
|
|
nach einer grundlegenden Lösung. D.h. einem <i>echten</i> 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" ID="ID_367925099" MODIFIED="1531584013647" TEXT="System lä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ä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="<atomic> 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ÜÜÜÜÜÜÜ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ön aber OK">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...es ruft sich selbst rekursiv auf, via Depend<AdviceSystem>
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="yes"/>
|
|
</node>
|
|
<node CREATED="1522597604367" ID="ID_1036644185" MODIFIED="1522597629034" TEXT="Alternative wäre aufwendig">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...nämlich eine ganz spezielle, dedzierte Aufrä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ü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="1515975649630" TEXT="Singleton">
|
|
<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" ID="ID_775751243" MODIFIED="1515976453931" 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ü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<I>::Local<MOC>">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node COLOR="#990000" CREATED="1522457000411" FOLDED="true" ID="ID_736034555" MODIFIED="1535892458078" 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ü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ür einen Payload-Typ"/>
|
|
<node CREATED="1522506518348" ID="ID_1014457759" MODIFIED="1522547692821" TEXT="gemeinsame statische Storage für diesen Typ"/>
|
|
<node CREATED="1522506636907" ID="ID_662985730" MODIFIED="1522547695756" TEXT="ctor/dtor fü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ötigt wird"/>
|
|
</node>
|
|
<node CREATED="1522511829358" ID="ID_509925407" MODIFIED="1522511830546" TEXT="dtor">
|
|
<node CREATED="1522518935777" ID="ID_1823418824" MODIFIED="1522518941700" TEXT=""möglichst spät""/>
|
|
<node CREATED="1522518942263" ID="ID_203967064" MODIFIED="1522518945211" TEXT="aber zuverlä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 überhaupt möglich?"/>
|
|
<node CREATED="1522518882744" ID="ID_1818509600" MODIFIED="1522518901851" TEXT="läuft wieder auf ein Template-generiertes Static hinaus">
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1522514056835" ID="ID_1693314028" MODIFIED="1522514067974" TEXT="fü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ü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ägen aus shared libs">
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
</node>
|
|
<node CREATED="1522541153861" ID="ID_1598087575" MODIFIED="1522541200548" TEXT="Problem: muß auch jeden einzelnen ctor tracken">
|
|
<icon BUILTIN="stop-sign"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1522506685708" ID="ID_172729748" MODIFIED="1522547698341" TEXT="...allerdings über einen Refcount fü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 "sollten" lokal funktionieren"/>
|
|
<node CREATED="1522519025972" ID="ID_714585131" MODIFIED="1522519142036" TEXT="das Problem ist, wenn man sich auf externe Statics abstützt">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</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ür</i> 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ützt"/>
|
|
<node CREATED="1522541280331" ID="ID_296029834" MODIFIED="1522541319853">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
C++ hällt die Erzeugungs/Zerstörungs-Reihenfolge <b>exakt</b> ein
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1522541321043" ID="ID_966332775" MODIFIED="1522541356223">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
d.h. wenn das local static <i>später erzeugt</i> wird, wird es <b>vor</b>  dem Hauptobjekt zerstört
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1522519161785" ID="ID_608910503" MODIFIED="1522519198800" TEXT="aus Grü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ösung ist komplex bis unmöglich"/>
|
|
<node CREATED="1522519269002" ID="ID_1313794115" MODIFIED="1522519283292" TEXT="und statt einer halb-wasserdichten Lösung könnte man ja einfache Statics verwenden"/>
|
|
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1522519308709" ID="ID_1997666438" MODIFIED="1522547255792" TEXT="Beschluß">
|
|
<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>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
Statische Initialisierung funktioniert <b>präzise</b>, korrekt und <b>zuverlä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ß es nur erst mal verstehen">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
Der Aufruf von Konstrukturen statischer Objekte konstituiert eine (dynamische) Reihenfolge.
|
|
</p>
|
|
<p>
|
|
Desktuktoren werden exakt rückwärts in dieser Reihenfolge aufgerufen.
|
|
</p>
|
|
<p>
|
|
Statische Objektfelder werden vor der ersten Verwendung der Klassen<b>definition</b>  initialisiert
|
|
</p>
|
|
<p>
|
|
Dagegen Funktions-lokale statische Variablen werden initialisiert, wenn der Kontrollfluß sie zum ersten mal berü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ä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ört, <i>bevor</i> der Destruktor des aufrufenden Objekts lä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ö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="1518487921096" TEXT="Extension-System"/>
|
|
<node CREATED="1482524569705" ID="ID_1815572475" MODIFIED="1518487921096" TEXT="Parametrisierung"/>
|
|
</node>
|
|
<node CREATED="1448314890907" ID="ID_411012156" MODIFIED="1518487921096" POSITION="right" TEXT="Session">
|
|
<icon BUILTIN="go"/>
|
|
<node CREATED="1481688464060" ID="ID_53574817" MODIFIED="1518487921096" TEXT="Architektur">
|
|
<node CREATED="1481688469507" ID="ID_1691953889" MODIFIED="1518487921096" TEXT="Session-Subsystem">
|
|
<node CREATED="1481688478057" ID="ID_1082882066" MODIFIED="1518487921096" TEXT="äquivalent zum ProcDispatcher"/>
|
|
<node CREATED="1481688490000" ID="ID_579694361" MODIFIED="1518487921096" TEXT="koordiniert die Abläufe in Proc"/>
|
|
</node>
|
|
<node CREATED="1481688500943" ID="ID_1821833408" MODIFIED="1518487921096" 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="1518487921096" TEXT="Logik" VSHIFT="5">
|
|
<icon BUILTIN="hourglass"/>
|
|
</node>
|
|
<node CREATED="1481688517437" HGAP="24" ID="ID_241232196" MODIFIED="1518487921096" TEXT="Lifecycle" VSHIFT="8">
|
|
<icon BUILTIN="info"/>
|
|
<node CREATED="1481688521532" ID="ID_1825349679" MODIFIED="1518487921096" TEXT="Session startet on demand"/>
|
|
<node CREATED="1481688529539" ID="ID_1972961763" MODIFIED="1518487921096" TEXT="SessionManager ist zuständig"/>
|
|
<node CREATED="1481688544921" ID="ID_1934560784" MODIFIED="1518487921096" TEXT="wenn Session geladen, ist ProcDispatcher freigegeben"/>
|
|
<node CREATED="1481688562830" ID="ID_708961458" MODIFIED="1518487921096" TEXT="SessionSubsystem startet processing loop im ProcDispatcher"/>
|
|
<node CREATED="1481777252497" ID="ID_1789585729" MODIFIED="1518487921096" 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="1518487921096" TEXT="Deadlock-Gefahr">
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
</node>
|
|
<node CREATED="1481777308978" ID="ID_1380229085" MODIFIED="1518487921096" TEXT="Lebensdauer der Session-Datenstruktur">
|
|
<node CREATED="1481777328479" ID="ID_1668359018" MODIFIED="1518487921096" TEXT="unabhängig vom Session-Subsystem">
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
</node>
|
|
<node CREATED="1481777343548" ID="ID_354877994" MODIFIED="1518487921096" TEXT="irgendwann post main()"/>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1534025083017" ID="ID_1484082332" MODIFIED="1534025124521" 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="1518487921096" TEXT="Subsystem->end">
|
|
<node CREATED="1481777368330" ID="ID_1933237483" MODIFIED="1518487921096" TEXT="Halte-Nachricht"/>
|
|
<node COLOR="#338800" CREATED="1481777374801" ID="ID_1844558240" MODIFIED="1518487921096" TEXT="sicherstellen, daß Loop anhält">
|
|
<arrowlink COLOR="#f70841" DESTINATION="ID_1748096848" ENDARROW="Default" ENDINCLINATION="-353;-77;" ID="Arrow_ID_506637666" STARTARROW="None" STARTINCLINATION="-200;38;"/>
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1483654823454" ID="ID_397283548" MODIFIED="1518487921096" TEXT="shutdown -> requireAction"/>
|
|
<node CREATED="1483654831773" ID="ID_911489519" MODIFIED="1518487921096" TEXT="shutdown-Trigger macht Notify"/>
|
|
<node CREATED="1483654846083" ID="ID_1926442698" MODIFIED="1518487921096" TEXT="Loop-Thread wacht auf"/>
|
|
<node CREATED="1483654853850" ID="ID_934617670" MODIFIED="1518487921096" TEXT="...und fällt aus der Loop heraus"/>
|
|
</node>
|
|
<node CREATED="1481777397542" ID="ID_1147135932" MODIFIED="1518487921096" TEXT="DispatcherLoop stirbt"/>
|
|
<node CREATED="1481777410972" ID="ID_457965735" MODIFIED="1518487921096" TEXT="sigTerm"/>
|
|
<node CREATED="1483927907096" ID="ID_1366384241" MODIFIED="1518487921096" TEXT="destruktor setzt auch PImpl auf NULL">
|
|
<icon BUILTIN="idea"/>
|
|
<node CREATED="1483927920718" ID="ID_409709261" MODIFIED="1518487921096" TEXT="niemand sonst faßt den PImpl an"/>
|
|
<node CREATED="1483927929773" ID="ID_1082393310" MODIFIED="1518487921096" TEXT="atomar wg. Lock auf ProcDispatcher"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1533401481917" HGAP="31" ID="ID_1634540822" MODIFIED="1533401493385" TEXT="Struktur" VSHIFT="-19">
|
|
<icon BUILTIN="hourglass"/>
|
|
<node CREATED="1533918273704" ID="ID_1490841818" MODIFIED="1533918278281" TEXT="Modell">
|
|
<node CREATED="1533918279368" ID="ID_90099848" MODIFIED="1533918281339" TEXT="Assets">
|
|
<node CREATED="1533918370708" ID="ID_1044798440" MODIFIED="1533918385590" TEXT="Arten">
|
|
<node CREATED="1533918396480" ID="ID_1371207426" MODIFIED="1533918398572" TEXT="Media"/>
|
|
<node CREATED="1533918387145" ID="ID_421009475" MODIFIED="1533918399497" TEXT="Proc"/>
|
|
<node CREATED="1533918391201" ID="ID_1099238975" MODIFIED="1533918401792" TEXT="Struct"/>
|
|
<node CREATED="1533918403071" ID="ID_277977903" MODIFIED="1533918404515" TEXT="Meta"/>
|
|
</node>
|
|
<node CREATED="1533918425908" ID="ID_1069430929" MODIFIED="1533918430743" TEXT="Einordnung">
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1534001954612" ID="ID_1527156035" MODIFIED="1534001972543" TEXT="Probleme">
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1534001984536" ID="ID_1186986383" MODIFIED="1534002025741" 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="1534002083668" TEXT="Asymetrie in asset::Category">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
<node CREATED="1534002102456" ID="ID_101543995" MODIFIED="1534002106435" TEXT="benutzer-orientiert"/>
|
|
<node CREATED="1534002106999" ID="ID_354946108" MODIFIED="1534002112546" TEXT="GUI ist aber noch nicht gebaut"/>
|
|
<node CREATED="1534002113086" ID="ID_1894075831" MODIFIED="1534002172804" TEXT="Audio und Video werden eigens unterschieden">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...obwohl die betreffenden Assets in die Kategorie "Medien" 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="1534002196087" TEXT="dafür erscheint die Unterscheidung STRUCT vs. META schwammig"/>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1534002037961" ID="ID_95419141" MODIFIED="1534002049833" TEXT="Erzeugung und Lebenszyklus">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
<node CREATED="1534002202098" ID="ID_1411648485" MODIFIED="1534002215541" TEXT="diese Auto-Regisierung"/>
|
|
<node CREATED="1534002225888" ID="ID_138566211" MODIFIED="1534002272126" TEXT="smart-Ptr als Handle nicht immer sinnvoll">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...nämlich genau <i>nicht</i> für alle Assets,
|
|
</p>
|
|
<p>
|
|
die Aufgrund von Klassifikationen automatisch bereits existieren
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1534024950739" ID="ID_1395279965" MODIFIED="1534024969582" TEXT="Races und mögliche Kollisionen überall">
|
|
<icon BUILTIN="clanbomber"/>
|
|
</node>
|
|
<node CREATED="1534025017601" ID="ID_1126518975" MODIFIED="1534025124521" 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="1533918772587" 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ßt soweit schon"/>
|
|
<node CREATED="1533920004719" ID="ID_402802807" MODIFIED="1533994722201" TEXT="was heißt hier "immutable"?">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
Meta-Assets sind per Definition <i>"immutable"</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önnen bei bestehendem Log nicht geä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>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
<i>das</i> ErrorLog
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<node CREATED="1533997846989" ID="ID_1324960272" MODIFIED="1533997854911" TEXT="zunächst nur Platzhalter">
|
|
<node CREATED="1533997938232" ID="ID_40537012" MODIFIED="1533997995641" TEXT="brauche EntryID<ErrorLog>">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
....weil hier ein allgemeines Schema entsteht:
|
|
</p>
|
|
<p>
|
|
jede Aktion, die in das UI "reflektiert" wird, erfolgt, indem man eine Nachricht
|
|
</p>
|
|
<p>
|
|
über den UI-Bus schickt, an einen Empfänger mit bekannter ID.
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1533997855707" ID="ID_663263517" MODIFIED="1533997862414" TEXT="nomineller Empfä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>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
dort gibt es eine <b>ErrorLogView</b>
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1533997901765" ID="ID_361019548" MODIFIED="1535891607125">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</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="803;-67;"/>
|
|
</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="1533997703292" TEXT="selbstreferentielle Struktur">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
das ist diese Idee, daß eine Struktur sich selbst meta-reprä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="1533997832361" TEXT="die Command und Event-Logs könnten repräsentiert sein">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...und dadruch wü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ürden ihrerseits geloggt und historisiert
|
|
</p>
|
|
<p>
|
|
und verlieren ihren <i>magischen Charakter</i> außerhalb der Event-Sourcing-Struktur
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1533918281880" ID="ID_1584868520" MODIFIED="1533918285603" TEXT="MObject"/>
|
|
</node>
|
|
<node CREATED="1533401497075" ID="ID_598742497" MODIFIED="1533401504734" TEXT="Struktur-Änderungen">
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1533401543765" ID="ID_1439915831" MODIFIED="1533401547605" TEXT="erkennen">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
<node CREATED="1533401549900" ID="ID_98267055" MODIFIED="1533401551919" TEXT="Builder?"/>
|
|
</node>
|
|
<node CREATED="1533401523656" ID="ID_1710492737" MODIFIED="1533401528187" TEXT="Diff-Generierung">
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1533401384155" ID="ID_1106740084" MODIFIED="1533401881035" TEXT="#1153 define foundation for live diff updates Session -> 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="1533401583168" TEXT="populationDiff">
|
|
<icon BUILTIN="hourglass"/>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1533401584887" ID="ID_181123777" MODIFIED="1533401594767" TEXT="aktuellen Zustand reflektieren">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1533401596470" ID="ID_1892595651" MODIFIED="1533401601990" TEXT="vorläufig: hart gecodet">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1533400671533" HGAP="45" ID="ID_1357977461" MODIFIED="1533400691312" TEXT="Command-Ausführung" VSHIFT="-27">
|
|
<icon BUILTIN="hourglass"/>
|
|
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1533400693522" ID="ID_217032156" MODIFIED="1533400704106" 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="1533401017012" 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="1533400739265" TEXT="wartet auf Storage-Backend-Entscheidung">
|
|
<icon BUILTIN="info"/>
|
|
</node>
|
|
<node CREATED="1533400742979" HGAP="21" ID="ID_748308949" MODIFIED="1533400756058" TEXT="vorläufiger Hack" VSHIFT="15">
|
|
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
|
|
<icon BUILTIN="idea"/>
|
|
<node CREATED="1533400757737" ID="ID_1656760024" MODIFIED="1533400786323" TEXT="Präfix "test" vor CommandID">
|
|
<icon BUILTIN="info"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1533400770320" ID="ID_1945470515" MODIFIED="1533400781431" TEXT="solche Commands werden vom Dispatcher direkt ausgeführt">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1481778538165" HGAP="37" ID="ID_522398894" MODIFIED="1518487921096" 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="1518487921096" TEXT="allow to wait for disabled state">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</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="1518487921096" TEXT="manage entries">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</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" HGAP="74" ID="ID_190109346" MODIFIED="1518487921096" TEXT="operational..." VSHIFT="-27">
|
|
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
|
|
<node CREATED="1481917612602" ID="ID_567971228" MODIFIED="1518487921096" TEXT="Loop läuft stets, aber blockt ggfs"/>
|
|
<node CREATED="1481917641910" ID="ID_1157396234" MODIFIED="1518487921096" TEXT="anfänglich idle --> schlafen"/>
|
|
<node CREATED="1481918441020" ID="ID_584625018" MODIFIED="1518487921096" TEXT="Command-Queue wird ohne Verzö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ängerer Command-Abarbeitung"/>
|
|
</node>
|
|
<node CREATED="1481917691047" ID="ID_714937554" MODIFIED="1518487921096" TEXT="Änderung der Umstände">
|
|
<node CREATED="1481917700998" ID="ID_470084004" MODIFIED="1518487921096" TEXT="kommt stets über Interface"/>
|
|
<node CREATED="1481917726683" ID="ID_962119246" MODIFIED="1518487921096" TEXT="weckt den Loop-Thread auf"/>
|
|
<node CREATED="1481917766837" ID="ID_1794908304" MODIFIED="1518487921097" TEXT="ist atomar (locking)">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
Guard beim Zugang über das Interface
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1481918074269" ID="ID_1984339005" MODIFIED="1518487921097">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
<i>nur sie</i> 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>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
<b>nur ein Thread</b> fü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ür Konsitenz der Session"/>
|
|
<node CREATED="1481918181254" ID="ID_1313994065" MODIFIED="1518487921097" TEXT="stellt bereits sicher, daß der Builder blockt"/>
|
|
</node>
|
|
<node CREATED="1481918194356" ID="ID_1233041580" MODIFIED="1518487921097" TEXT="einfügen neuer Commands"/>
|
|
<node CREATED="1481918273490" ID="ID_1214851922" MODIFIED="1518487921097" TEXT="nä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äufe werden noch abgeschlossen">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1481920722100" ID="ID_1378897740" MODIFIED="1531584182083" TEXT="SessionManager muß 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>
|
|
|
|
</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öglich">
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
<node CREATED="1482197292263" ID="ID_669497196" MODIFIED="1518487921097" TEXT="jeder Lumiera-Thread speichert "self" in thread local storage">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...und "self" == LumieraThrea* == "handle" (im Wrapper).
|
|
</p>
|
|
<p>
|
|
|
|
</p>
|
|
<p>
|
|
D.h. solange der Wrapper lebt (!), kann er selber leicht feststellen, ob die aktuelle Ausfü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öne bei diesem Ansatz ist, daß man dafür weder das Handle exponieren muß,
|
|
</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ür Schleifen-Logik"/>
|
|
<node CREATED="1481828639584" ID="ID_1344182776" MODIFIED="1518487921097" TEXT="CommandQueue"/>
|
|
</node>
|
|
<node CREATED="1481778549940" HGAP="50" ID="ID_676848252" MODIFIED="1518487921097" TEXT="DispatcherLoop" VSHIFT="1">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1481778741546" ID="ID_684867533" MODIFIED="1518487921097" TEXT="ö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ß...">
|
|
<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ässig anhalten zu kö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ßt">
|
|
<icon BUILTIN="info"/>
|
|
<node CREATED="1482712227048" ID="ID_172281578" MODIFIED="1518487921097" TEXT="keine schwebenden Zustandsänderungen"/>
|
|
<node CREATED="1482712235016" ID="ID_943771142" MODIFIED="1518487921097" TEXT="Alle zustands-Relevanten Änderungen sind ausgewertet"/>
|
|
<node CREATED="1482712250461" ID="ID_610930154" MODIFIED="1518487921097" TEXT="alle Prädikate spiegeln den wirklichen Zustand wider"/>
|
|
<node CREATED="1482712261876" ID="ID_47966817" MODIFIED="1518487921097">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
Kontrollfluß ist <i>nicht</i> in einer Arbeitsfunktion
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1481831747042" ID="ID_134003952" MODIFIED="1518487921097" TEXT="sperrbar sein">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</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="1518487921097" TEXT="Anhalten">
|
|
<linktarget COLOR="#f70841" DESTINATION="ID_1748096848" ENDARROW="Default" ENDINCLINATION="-353;-77;" 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" HGAP="50" ID="ID_1311208726" MODIFIED="1518487921097" 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ö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ß">
|
|
<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 ü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äße Implementierung">
|
|
<icon BUILTIN="help"/>
|
|
</node>
|
|
<node CREATED="1482365613228" ID="ID_1195899391" MODIFIED="1518487921097">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
<i>billig:</i> unsere Zeit-Lib nutzen
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1482430715396" ID="ID_1005651794" MODIFIED="1518487921098" TEXT="nicht besonders schö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ösungnsansatz" VSHIFT="16">
|
|
<icon BUILTIN="help"/>
|
|
<node CREATED="1482202080675" ID="ID_12774028" MODIFIED="1518487921098" TEXT="CommandQueue muß helfen und dirty-state verwalten">
|
|
<icon BUILTIN="button_cancel"/>
|
|
<node CREATED="1482202099752" ID="ID_434677221" MODIFIED="1518487921098" TEXT="geht, weil sie weiß, wann ein Command wirklich läuft"/>
|
|
<node CREATED="1482202114630" ID="ID_1833945556" MODIFIED="1518487921098" TEXT="unschö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ö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 ü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>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
Logik im Looper auf Basis
|
|
</p>
|
|
<p>
|
|
generischer Überlegungen implementiert
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node CREATED="1482202243253" ID="ID_1342399342" MODIFIED="1518487921098" TEXT="verhä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="1533401645668" TEXT="Builder" VSHIFT="9">
|
|
<icon BUILTIN="hourglass"/>
|
|
<node COLOR="#435e98" CREATED="1533401646479" ID="ID_305001887" MODIFIED="1533401662043" TEXT="das große wartende MEGA-Integrations-Thema">
|
|
<font NAME="SansSerif" SIZE="12"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1448314932726" ID="ID_669869188" MODIFIED="1518487921098" POSITION="right" TEXT="Render">
|
|
<icon BUILTIN="stop"/>
|
|
<node CREATED="1512923568305" ID="ID_1329323311" MODIFIED="1518487921098" TEXT="Player">
|
|
<node CREATED="1512923658341" ID="ID_1855109590" MODIFIED="1518487921098" TEXT="Interface"/>
|
|
<node CREATED="1512923661892" ID="ID_1580804608" MODIFIED="1518487921098" TEXT="Control"/>
|
|
<node CREATED="1512923672275" ID="ID_1369059082" MODIFIED="1518487921098" TEXT="Wiring"/>
|
|
<node CREATED="1512923682530" ID="ID_1204903801" MODIFIED="1518487921098" TEXT="Planning">
|
|
<node CREATED="1512925214070" ID="ID_491842947" MODIFIED="1518487921098" TEXT="1.Entwurf">
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1512925217693" ID="ID_704714253" MODIFIED="1518487921098" TEXT="steckengeblieben">
|
|
<icon BUILTIN="smily_bad"/>
|
|
</node>
|
|
<node CREATED="1512925253328" ID="ID_922277724" MODIFIED="1518487921098" TEXT="JobTicket"/>
|
|
<node CREATED="1512925246057" FOLDED="true" ID="ID_181262071" MODIFIED="1535892981517" 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;"/>
|
|
<node CREATED="1535892806131" ID="ID_513357674" MODIFIED="1535892890103" TEXT="könnte eine Monade sein.....?">
|
|
<arrowlink COLOR="#6c79a2" DESTINATION="ID_1502143527" ENDARROW="Default" ENDINCLINATION="-522;742;" ID="Arrow_ID_616092581" STARTARROW="None" STARTINCLINATION="238;0;"/>
|
|
<icon BUILTIN="help"/>
|
|
</node>
|
|
<node CREATED="1535891554587" ID="ID_185594200" MODIFIED="1535891663091" TEXT="entwerfe einen IterExplorer">
|
|
<arrowlink COLOR="#625975" DESTINATION="ID_409327286" ENDARROW="Default" ENDINCLINATION="-843;1771;" ID="Arrow_ID_86323098" STARTARROW="None" STARTINCLINATION="-493;-1123;"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1512923592590" ID="ID_540019681" MODIFIED="1518487921098" TEXT="Engine"/>
|
|
<node CREATED="1512923605740" ID="ID_319280946" MODIFIED="1518487921098" TEXT="Fixture"/>
|
|
<node CREATED="1512923629577" ID="ID_617347424" MODIFIED="1518487921098" TEXT="Backend"/>
|
|
<node CREATED="1512923647255" ID="ID_1800845122" MODIFIED="1518487921099" TEXT="Plug-in"/>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#c9d1da" COLOR="#2d2198" CREATED="1439664045448" HGAP="240" ID="ID_21531707" MODIFIED="1518487921099" POSITION="left" TEXT="Info" VSHIFT="-500">
|
|
<edge COLOR="#b4a9e3"/>
|
|
<font NAME="SansSerif" SIZE="16"/>
|
|
<node CREATED="1439664217489" ID="ID_104059794" MODIFIED="1518487921099" TEXT="GTK-3">
|
|
<node CREATED="1439664230168" ID="ID_235548644" LINK="https://wiki.gnome.org/Projects/GTK%2B/Inspector" MODIFIED="1518487921099" TEXT="GKT+ Inspector">
|
|
<icon BUILTIN="idea"/>
|
|
<node CREATED="1439664318604" ID="ID_1327496126" MODIFIED="1518487921099" TEXT="keyboard shortcut">
|
|
<node CREATED="1439664330354" ID="ID_257893375" MODIFIED="1518487921099" TEXT="SHIFT-Ctrl I"/>
|
|
<node CREATED="1439664339353" ID="ID_559550607" MODIFIED="1518487921099" TEXT="aktivieren via dconf">
|
|
<node CREATED="1439664358287" ID="ID_1044303564" MODIFIED="1518487921099" TEXT="apt-get install dconf-editor"/>
|
|
<node CREATED="1439664574202" ID="ID_1254903463" MODIFIED="1518487921099" TEXT="org > gtk > settings > debug"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1439664638857" ID="ID_1095180651" MODIFIED="1518487921099">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</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="1534635461322" TEXT="Konzepte" VSHIFT="-22">
|
|
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
|
|
<icon BUILTIN="info"/>
|
|
<node CREATED="1534635219848" ID="ID_1769333890" MODIFIED="1534635235608" TEXT="show / hide">
|
|
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
|
|
<node CREATED="1534635236910" ID="ID_1635567005" MODIFIED="1534635253280" TEXT="das zentrale Konzept in GTK">
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
<node CREATED="1534635271809" ID="ID_545450309" MODIFIED="1534635282636" TEXT="GTK == Event-Framework">
|
|
<node CREATED="1534635363429" ID="ID_1102578851" MODIFIED="1534635379942" TEXT="GTK interessiert sich nur indirekt für den Lebenszyklus"/>
|
|
<node CREATED="1534635380794" ID="ID_121089426" MODIFIED="1534635399627" TEXT="...insofern Callbacks nicht in toten Speicher zeigen dürfen"/>
|
|
<node CREATED="1534635400479" ID="ID_1808051725" MODIFIED="1534635411242" TEXT="was aber sonst mit den "Objekten" passiert, ist GTK egal"/>
|
|
<node CREATED="1534635412070" ID="ID_1070513169" MODIFIED="1534635425784" TEXT="am Ende gehen alle Refcounts ohnehin auf Null"/>
|
|
<node CREATED="1534635426684" ID="ID_995597401" MODIFIED="1534635433703" TEXT="und wenn nicht, drof jeschissen"/>
|
|
</node>
|
|
<node CREATED="1534635260267" ID="ID_287252267" MODIFIED="1534635295432" TEXT="was verborgen ist, bekommt keine Events">
|
|
<icon BUILTIN="back"/>
|
|
</node>
|
|
<node CREATED="1534635309500" ID="ID_717136118" MODIFIED="1534635316303" TEXT="Container">
|
|
<node CREATED="1534635317179" ID="ID_921739364" MODIFIED="1534635322366" TEXT="verbergen rekursiv"/>
|
|
<node CREATED="1534635322938" ID="ID_1532459469" MODIFIED="1534635328573" TEXT="show_all zeigt rekursiv an"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1534634259498" ID="ID_1900017952" MODIFIED="1534635809110" TEXT=""Schließen"">
|
|
<linktarget COLOR="#6f7ab9" DESTINATION="ID_1900017952" ENDARROW="Default" ENDINCLINATION="-2264;0;" ID="Arrow_ID_1220603071" SOURCE="ID_146943890" STARTARROW="None" STARTINCLINATION="-6278;0;"/>
|
|
<node CREATED="1534634292477" ID="ID_1867321008" MODIFIED="1534634310281">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</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>
|
|
|
|
</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>
|
|
|
|
</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ö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="1534635211504" TEXT="keinerlei Auswirkung auf die Sichtbarkeit">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</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="1535629113123" TEXT="Layout">
|
|
<font NAME="SansSerif" SIZE="14"/>
|
|
<node CREATED="1535629144783" ID="ID_603397185" MODIFIED="1535629149074" TEXT="Phasen">
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1535629169164" ID="ID_1301809885" MODIFIED="1535629197406" TEXT="realized">
|
|
<icon BUILTIN="help"/>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1535629172787" ID="ID_1666976097" MODIFIED="1535629187584" TEXT="mapped">
|
|
<icon BUILTIN="help"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1535629240762" ID="ID_860094095" MODIFIED="1535630624000" 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ürliche Größe"/>
|
|
<node CREATED="1535629328246" ID="ID_1797361390" MODIFIED="1535630246025" TEXT="Widget wird niemals kleiner gemacht"/>
|
|
</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="1535630246025" TEXT="nur wenn es zusätzlichen Platz gibt">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...was der Fall sein kann in einer Box oder einem Grid,
|
|
</p>
|
|
<p>
|
|
sofern das Widget mit entsprechendem Modus eingefügt wurde
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1535629439847" ID="ID_1925784750" MODIFIED="1535630246025" TEXT="Widget dehnt sich aus, um verfü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ür eine Richtung"/>
|
|
<node CREATED="1535630147960" ID="ID_701726630" MODIFIED="1535630246025" TEXT="diese haben Getter/Setter"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1535632661385" ID="ID_1021079796" MODIFIED="1535632664916" TEXT="Hierarchie">
|
|
<node CREATED="1535632673655" ID="ID_849385989" MODIFIED="1535632684721" TEXT="Gdk::Window">
|
|
<node CREATED="1535632686045" ID="ID_20909674" MODIFIED="1535632722095">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
ein Widget <i>kann</i> einem G<b>D</b>K-Window zugeordnet sein
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1535632728343" ID="ID_1087443097" MODIFIED="1535632737794" TEXT="dieses repräsentiert den low-level Screen-Space"/>
|
|
<node CREATED="1535632754900" ID="ID_1804383493" MODIFIED="1535632762415" TEXT="diese Zuordnung heißt "mapping""/>
|
|
<node CREATED="1535632903512" ID="ID_653149380" MODIFIED="1535632929956" TEXT="Gtk::Widget::get_parent_window ()">
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1535632766298" ID="ID_651213437" MODIFIED="1535632770166" TEXT="Container">
|
|
<node CREATED="1535632771490" ID="ID_54072996" MODIFIED="1535632787931" TEXT="machen sich beim Hinzufügen den Kindern bekannt"/>
|
|
<node CREATED="1535632789207" ID="ID_1814287136" MODIFIED="1535632918202" TEXT="Gtk::Widget::get_parent ()">
|
|
<node CREATED="1535632854135" ID="ID_1093554517" MODIFIED="1535632859610" TEXT="Gtk::Container *"/>
|
|
<node CREATED="1535632860126" ID="ID_710254808" MODIFIED="1535632864913" TEXT="kann NULL sein"/>
|
|
</node>
|
|
<node CREATED="1535633353996" ID="ID_1722614856" MODIFIED="1535633359215" 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="1535633492092" TEXT="Widget * Gtk::Widget::get_ancestor(GType widget_type)"/>
|
|
</node>
|
|
<node CREATED="1535633140424" ID="ID_293762905" MODIFIED="1535633144596" TEXT="WidgetPath">
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1535633147295" ID="ID_14373153" MODIFIED="1535633217669" TEXT="Konzept ist mir nicht klar">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</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ür das CSS-Styling benötigt wird?
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="help"/>
|
|
</node>
|
|
<node CREATED="1535633221189" ID="ID_623946936" MODIFIED="1535633238637" TEXT="beachte: hier werden Typen (GType) gespeichert">
|
|
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
|
|
</node>
|
|
<node CREATED="1535633267727" ID="ID_168272548" MODIFIED="1535633287322" TEXT="Gtk::Widget::get_path()">
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1477523681978" HGAP="14" ID="ID_400257229" MODIFIED="1534634566726" TEXT="Richtlinien" VSHIFT="11">
|
|
<node CREATED="1477523701544" ID="ID_1802991794" MODIFIED="1518487921099" TEXT="empfohlen">
|
|
<node CREATED="1477523709342" ID="ID_781118281" MODIFIED="1518487921099" TEXT="Box">
|
|
<node CREATED="1477524273619" ID="ID_216152004" MODIFIED="1518487921099" 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="1518487921099" TEXT="packing options">
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1477523710854" ID="ID_1520577996" MODIFIED="1518487921099" TEXT="Grid"/>
|
|
</node>
|
|
<node CREATED="1477523714526" ID="ID_654535915" MODIFIED="1534510412708" TEXT="Application verwenden">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...nicht mehr das <i>klassische</i> gtk::Main
|
|
</p>
|
|
<p>
|
|
|
|
</p>
|
|
<p>
|
|
Wozu das?
|
|
</p>
|
|
<ul>
|
|
<li>
|
|
Design: Main war ein Singleton; aber sein dtor hat auch Plattform-Aufräum-Arbeiten gemacht
|
|
</li>
|
|
<li>
|
|
Framework: anscheinend ist hier eine Tendenz in Richtung auf ein integriertes Framework im Gange; im Besonderen will man "Aktionen" direkt aus dem Desktop aufrufen können<br />
|
|
</li>
|
|
</ul>
|
|
</body>
|
|
</html></richcontent>
|
|
<arrowlink COLOR="#627292" DESTINATION="ID_185528211" ENDARROW="Default" ENDINCLINATION="58;-164;" ID="Arrow_ID_390519319" STARTARROW="None" STARTINCLINATION="135;0;"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1495221220040" HGAP="43" ID="ID_782313223" MODIFIED="1533306068667" 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" ID="ID_1973994334" MODIFIED="1533608414131" TEXT="main context">
|
|
<node CREATED="1533388053839" ID="ID_970610402" MODIFIED="1533388063674" TEXT="abstrahierte "main loop"">
|
|
<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 "gepullt""/>
|
|
</node>
|
|
<node CREATED="1533388113350" ID="ID_1546795729" MODIFIED="1533388208027" TEXT="Glib::signal_idle()">
|
|
<node CREATED="1533388147720" ID="ID_1897188155" MODIFIED="1533388158218" TEXT="übergebene Closure läuft erst in der Event-Loop"/>
|
|
<node CREATED="1533388162662" ID="ID_1573817854" MODIFIED="1533388168352" TEXT="kann aber schon vorher hinzugefügt werden"/>
|
|
<node CREATED="1533388185290" ID="ID_1158890484" MODIFIED="1533388238450" TEXT="verwendet main_context_default">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</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="1533388506937" 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äzises Timing">
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1495221242285" ID="ID_185528211" MODIFIED="1534510402108" TEXT="Applikation">
|
|
<linktarget COLOR="#627292" DESTINATION="ID_185528211" ENDARROW="Default" ENDINCLINATION="58;-164;" ID="Arrow_ID_390519319" SOURCE="ID_654535915" STARTARROW="None" STARTINCLINATION="135;0;"/>
|
|
<node CREATED="1495221272545" ID="ID_624250153" MODIFIED="1533608414132" 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->show"/>
|
|
<node CREATED="1495223513438" ID="ID_1178606368" MODIFIED="1518487921099" TEXT="allerdings im activate-Callback">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
warum?
|
|
</p>
|
|
<p>
|
|
nur wegen ApplictationWindow!
|
|
</p>
|
|
<p>
|
|
Denn dieses setzte eine "Registrierung" 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="1518487921099" 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->local_command_line"/>
|
|
<node CREATED="1533307886653" ID="ID_322984790" MODIFIED="1533307918597" TEXT="wird auch von Gtkmm so erhalten">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...allerdings eingepackt in eine vfunc,
|
|
</p>
|
|
<p>
|
|
welche ggfs C++ - Exceptions fä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&)"/>
|
|
</node>
|
|
<node CREATED="1533311444004" ID="ID_1806268533" MODIFIED="1533311614570" TEXT="notwendig weil....">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...nur wegen dem ganzen Registrierungs-Glump.
|
|
</p>
|
|
<p>
|
|
Ein "GTK-Application-Window" ist auch irgendwie registriert und hä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> das ist der Grund. Es <i>geht gar nicht</i> 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="1533309401924" TEXT="Stand 8/2018 keine anderen Treffer">
|
|
<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 "Activation"-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="1533309561611">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
nicht durch <b>gtk_main</b>
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</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>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
beachte: <b>ruft nicht gtk_main</b> sondern macht das Ä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ä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" HGAP="33" ID="ID_1924897671" MODIFIED="1518487921099" 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>
|
|
|
|
</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="1533305616608" TEXT="gtk_init_check">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
gboolean
|
|
</p>
|
|
<p>
|
|
gtk_init_check (int    *argc,
|
|
</p>
|
|
<p>
|
|
                char ***argv)
|
|
</p>
|
|
<p>
|
|
{
|
|
</p>
|
|
<p>
|
|
  gboolean ret;
|
|
</p>
|
|
<p>
|
|
|
|
</p>
|
|
<p>
|
|
  if (!gtk_parse_args (argc, argv))
|
|
</p>
|
|
<p>
|
|
    return FALSE;
|
|
</p>
|
|
<p>
|
|
|
|
</p>
|
|
<p>
|
|
  ret = GDK_PRIVATE_CALL (gdk_display_open_default) () != NULL;
|
|
</p>
|
|
<p>
|
|
|
|
</p>
|
|
<p>
|
|
  if (gtk_get_debug_flags () & GTK_DEBUG_INTERACTIVE)
|
|
</p>
|
|
<p>
|
|
    gtk_window_set_interactive_debugging (TRUE);
|
|
</p>
|
|
<p>
|
|
|
|
</p>
|
|
<p>
|
|
  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="1533608414142" TEXT="Main::init_gtkmm_internals">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
void Main::init_gtkmm_internals()
|
|
</p>
|
|
<p>
|
|
{
|
|
</p>
|
|
<p>
|
|
  static bool init_done = false;
|
|
</p>
|
|
<p>
|
|
|
|
</p>
|
|
<p>
|
|
  if(!init_done)
|
|
</p>
|
|
<p>
|
|
  {
|
|
</p>
|
|
<p>
|
|
    Glib::init();
|
|
</p>
|
|
<p>
|
|
    Gio::init();
|
|
</p>
|
|
<p>
|
|
|
|
</p>
|
|
<p>
|
|
    // Populate the map of GTypes to C++ wrap_new() functions.
|
|
</p>
|
|
<p>
|
|
    Pango::wrap_init();
|
|
</p>
|
|
<p>
|
|
#ifdef GTKMM_ATKMM_ENABLED
|
|
</p>
|
|
<p>
|
|
    Atk::wrap_init();
|
|
</p>
|
|
<p>
|
|
#endif //GTKMM_ATKMM_ENABLED
|
|
</p>
|
|
<p>
|
|
    Gdk::wrap_init();
|
|
</p>
|
|
<p>
|
|
    Gtk::wrap_init();
|
|
</p>
|
|
<p>
|
|
|
|
</p>
|
|
<p>
|
|
    init_done = true;
|
|
</p>
|
|
<p>
|
|
  }
|
|
</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ür Gtk+-"Objekte" 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ä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" HGAP="18" ID="ID_381583771" MODIFIED="1518487921099" TEXT="Verhältnis beider" VSHIFT="9">
|
|
<icon BUILTIN="idea"/>
|
|
<node CREATED="1495225019502" ID="ID_1829681403" MODIFIED="1518487921099" TEXT="beide machen in etwas das Gleiche"/>
|
|
<node CREATED="1495225006920" ID="ID_1631847350" MODIFIED="1518487921099" TEXT="Application ist generischer"/>
|
|
<node CREATED="1495226503104" ID="ID_1991720691" MODIFIED="1518487921099" TEXT="es geht dabei um Desktop-Integration"/>
|
|
<node CREATED="1533308053493" ID="ID_281791270" MODIFIED="1533308091691" TEXT="Gio::Application ruft g_application_run">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...und das ist <i>nicht</i> gtk_main,
|
|
</p>
|
|
<p>
|
|
aber macht in etwa die gleichen Operationen
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1495225050138" ID="ID_1077152710" MODIFIED="1518487921099" TEXT="gtk_main beruht heute auf Gio">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...das heißt, es wurde "retrofitted".
|
|
</p>
|
|
<p>
|
|
die Lib Gio bietet ein generisches "Main-Loop-Framework",
|
|
</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" ID="ID_1830965770" MODIFIED="1518487921099" TEXT="Threading">
|
|
<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="1518487921099" TEXT="Vorsicht: Desktuktoren">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
der springende Punkt mit sigc::trackable ist,
|
|
</p>
|
|
<p>
|
|
daß Desktuktoren automatisch die Signale abkoppeln.
|
|
</p>
|
|
<p>
|
|
Dieser Vorgang ist <b>nicht threadsafe</b>. Folglich müssen
|
|
</p>
|
|
<p>
|
|
auch die <b>Destruktoen</b> 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>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
alles was von sigc::<b>trackable</b> 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="1518487921099">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
für <b>alles</b> aus GTKmm zu verwenden
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</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 -> 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="1518487921100" TEXT="event handling">
|
|
<node CREATED="1477785727469" ID="ID_129787833" LINK="https://developer.gnome.org/gtkmm-tutorial/stable/chapter-signals.html.en" MODIFIED="1518487921100" TEXT="Guide: Kapitel "Signals""/>
|
|
<node CREATED="1477785747138" ID="ID_4618201" LINK="https://developer.gnome.org/gtkmm-tutorial/stable/sec-xeventsignals.html.en" MODIFIED="1518487921100" TEXT="speziell Details zu event Handlern: X event signals">
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
<node CREATED="1477785807338" ID="ID_80062368" MODIFIED="1518487921100" TEXT="wie">
|
|
<icon BUILTIN="info"/>
|
|
<node CREATED="1477785809930" ID="ID_596393977" MODIFIED="1518487921100" TEXT="signal connect()"/>
|
|
<node COLOR="#ca1b00" CREATED="1477785830295" ID="ID_94782325" MODIFIED="1518487921100" TEXT="-- oder --"/>
|
|
<node CREATED="1477785818920" ID="ID_1600280983" MODIFIED="1518487921100" TEXT="on_xxx() ü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="1518487921100" TEXT="Rückgabewert: true == fertig behandelt"/>
|
|
</node>
|
|
<node CREATED="1504215708147" ID="ID_975007807" MODIFIED="1518487921100" TEXT="Widget">
|
|
<node CREATED="1535630469053" ID="ID_608304313" MODIFIED="1535630477518" TEXT="konkret...">
|
|
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
|
|
<node CREATED="1535630478836" ID="ID_51688888" MODIFIED="1535630481352" TEXT="Container">
|
|
<node CREATED="1535629240762" ID="ID_1889724128" MODIFIED="1535631527979" STYLE="fork">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</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="1535631130732" TEXT="resize_toplevel (=true by default)">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...ob beim Expand/Collapse das umschließende Widget resized werden soll
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1535631187965" ID="ID_586010488" MODIFIED="1535631341839" TEXT="expanded (=false by default)">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</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ürlicher Größe"/>
|
|
<node CREATED="1535631403576" ID="ID_518089172" MODIFIED="1535631474193" TEXT="verhält sich anders als Frame">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
ein Frame setzt beim Kind property_expand() = true,
|
|
</p>
|
|
<p>
|
|
was dazu führt, daß das Kind stets allen verfügbaren Platz nimmt
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1477526858307" ID="ID_676269117" MODIFIED="1518487921100" 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="1518487921100" 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="1518487921100" TEXT="custom style properties">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...können vom CSS-Stylesheet aus gesetzt werden.
|
|
</p>
|
|
<p>
|
|
Siehe Beschreibung im Beispiel/Tutorial
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="info"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1476375676818" ID="ID_1029920942" MODIFIED="1518487921100" TEXT="Canvas">
|
|
<node CREATED="1476375696215" ID="ID_1397403295" MODIFIED="1518487921100" TEXT="GtkDrawingArea">
|
|
<node CREATED="1476375709157" ID="ID_981405457" MODIFIED="1518487921100" TEXT="custom drawing"/>
|
|
</node>
|
|
<node CREATED="1476375702166" ID="ID_290806424" MODIFIED="1518487921100" TEXT="GtkLayout">
|
|
<icon BUILTIN="idea"/>
|
|
<node CREATED="1476375715644" ID="ID_1233704735" MODIFIED="1518487921100" TEXT="scrollable"/>
|
|
<node CREATED="1476375723915" ID="ID_72518723" MODIFIED="1518487921100" TEXT="can place sub-widgets"/>
|
|
<node CREATED="1476375733298" ID="ID_1024321268" MODIFIED="1518487921100" TEXT="allows custom drawing"/>
|
|
<node CREATED="1476468254712" HGAP="64" ID="ID_1424353399" MODIFIED="1518487921100" TEXT="Eigenschaften" VSHIFT="45">
|
|
<icon BUILTIN="pencil"/>
|
|
<node CREATED="1476468265399" HGAP="2" ID="ID_257790579" MODIFIED="1518487921100" TEXT="Test-Setup schaffen" VSHIFT="-15">
|
|
<node CREATED="1476468390830" ID="ID_1922633406" MODIFIED="1518487921100" TEXT="soll">
|
|
<icon BUILTIN="yes"/>
|
|
<node CREATED="1476468393174" ID="ID_412857359" MODIFIED="1518487921100" TEXT="schnell gehen"/>
|
|
<node CREATED="1476468395941" ID="ID_1419405883" MODIFIED="1518487921100" TEXT="nicht das UI kaputtmachen"/>
|
|
<node CREATED="1476468402085" ID="ID_1171941848" MODIFIED="1518487921100" TEXT="realistisch sein"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1476468272510" ID="ID_150722005" MODIFIED="1518487921100" TEXT="Untersuchung">
|
|
<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="1518487921100" TEXT="partially covered widgets">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</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="1518487921100" TEXT="tabbing / focus order">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</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="1518487921100" 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="1518487921100" TEXT="returns false">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...meaning, "this event is not yet fully processed",
|
|
</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>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
<font color="#bd0053">Warning</font>: allocation is the <i>visible</i> 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="1518487921100" TEXT="Question: can the framework adjust for us">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</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="1518487921100" TEXT="max(value) + viewport-size == canvas size">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</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" FOLDED="true" ID="ID_1400891730" MODIFIED="1533608416399" TEXT="context->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->save() and ctx->restore()">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</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" FOLDED="true" HGAP="41" ID="ID_614099643" MODIFIED="1533608416400" 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" FOLDED="true" ID="ID_132096735" MODIFIED="1533608416401" 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>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...die anderen, die noch in Frage kommen würden,
|
|
</p>
|
|
<p>
|
|
sind nur für den Fall, daß 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>
|
|
|
|
</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ück"/>
|
|
<node CREATED="1478038020338" ID="ID_541293489" MODIFIED="1518487921101" TEXT="Layout->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't work">
|
|
<icon BUILTIN="smiley-angry"/>
|
|
</node>
|
|
<node CREATED="1479424603959" ID="ID_194428894" MODIFIED="1518487921101" TEXT="works on second attempt">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</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öglicherweise ist der einzige Unterschied, daß ich es nun aus dem draw-callback
|
|
</p>
|
|
<p>
|
|
aufrufe, und daß demgegenü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="1518487921101" TEXT="# build a custom "''clip''" widget">
|
|
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
|
|
<icon BUILTIN="full-1"/>
|
|
<icon BUILTIN="full-0"/>
|
|
</node>
|
|
<node CREATED="1477595418670" ID="ID_1708640864" MODIFIED="1518487921101" TEXT="# retrofit all preceding tests to use this "''clip''" widget">
|
|
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
|
|
<icon BUILTIN="full-1"/>
|
|
<icon BUILTIN="full-1"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1504215729848" ID="ID_518260540" MODIFIED="1518487921101" TEXT="howto">
|
|
<node CREATED="1446515847047" ID="ID_290915762" MODIFIED="1518487921101" TEXT="GtkCssProvider">
|
|
<node CREATED="1446515865029" ID="ID_1503616150" MODIFIED="1518487921101" TEXT="parsing errors"/>
|
|
<node CREATED="1477784584821" ID="ID_1810760662" LINK="https://developer.gnome.org/gtkmm-tutorial/stable/sec-custom-widgets.html.en" MODIFIED="1534336601077" TEXT="Beispiel im GTKmm-Guide (custom widget)">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</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ür Parse-Fehler anschließ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="-756;164;"/>
|
|
<icon BUILTIN="info"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1504215750653" ID="ID_110831069" MODIFIED="1518487921101" TEXT="Textanzeige">
|
|
<node CREATED="1504215755484" ID="ID_1858414199" MODIFIED="1518487921101" TEXT="TextView widget"/>
|
|
<node CREATED="1504215761547" ID="ID_925639969" LINK="https://developer.gnome.org/gtkmm-tutorial/stable/sec-textview-examples.html.en" MODIFIED="1518487921101">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
Beispiel im <font color="#d4020a">Guide</font>
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1504215825762" ID="ID_429138159" MODIFIED="1534512772399" 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="1518487921101" TEXT="scroll_to(iterator) ist ungenau">
|
|
<icon BUILTIN="broken-line"/>
|
|
</node>
|
|
<node CREATED="1504215849336" ID="ID_832996389" MODIFIED="1518487921101" TEXT="Marker setzen">
|
|
<icon BUILTIN="idea"/>
|
|
<node CREATED="1504220053691" ID="ID_905781900" MODIFIED="1518487921101" TEXT="benannt oder anonym"/>
|
|
<node CREATED="1504220061178" ID="ID_474843943" MODIFIED="1518487921101" TEXT=""Gravity" beachten">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<ul>
|
|
<li>
|
|
left gravity: Marker bleibt beim Einfügen an dieser Stelle links von der Einfügung stehen
|
|
</li>
|
|
<li>
|
|
right gravity: Marker wird durch Einfügen an dieser Stelle nach rechts geschoben
|
|
</li>
|
|
</ul>
|
|
<p>
|
|
Beachte: der Text-Cursor (Marker "insert") 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="1518487921101">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
Multithreded-Beispiel
|
|
</p>
|
|
<p>
|
|
im Guide demonstriert das
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1504219929260" ID="ID_1037649590" MODIFIED="1518487921102" TEXT="Trick: Cursor ist ein Marker namens "insert"">
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1534511566130" HGAP="93" ID="ID_833641481" MODIFIED="1534512921306" 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="1534511657393" TEXT=""Gnome Diocking Library"">
|
|
<node CREATED="1534511675819" ID="ID_458805224" MODIFIED="1534511684396" TEXT="wird auch von Anjuta genutzt"/>
|
|
<node CREATED="1534511663333" ID="ID_1116756676" MODIFIED="1534511675015" TEXT="historisch: Gnome Design Library"/>
|
|
</node>
|
|
<node CREATED="1534511978427" ID="ID_409550752" MODIFIED="1534511983598" TEXT="Dokumentation">
|
|
<node CREATED="1534511984706" ID="ID_463901760" MODIFIED="1534511991197" 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="1534512230013" 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="1534512219419" TEXT="die GDL-Doxygen ist etwas ergiebiger">
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1534511695553" ID="ID_1631118283" MODIFIED="1534511698468" TEXT="Begriffe">
|
|
<node CREATED="1534512435774" HGAP="58" ID="ID_560032324" MODIFIED="1534512502595" TEXT="Widgets...." VSHIFT="-12">
|
|
<node CREATED="1534512446077" ID="ID_1284930136" MODIFIED="1534512510705" 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="1534512463966" TEXT="gdl::DockNotebook">
|
|
<node COLOR="#84292b" CREATED="1534512627860" ID="ID_1972742181" MODIFIED="1534512653863" TEXT=" nicht GDLmm">
|
|
<icon BUILTIN="help"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1534512470265" ID="ID_1122516503" MODIFIED="1534512473157" TEXT="gdl::DockPaned">
|
|
<node COLOR="#84292b" CREATED="1534512627860" ID="ID_570071709" MODIFIED="1534512653863" TEXT=" nicht GDLmm">
|
|
<icon BUILTIN="help"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1534512476873" ID="ID_405367338" MODIFIED="1534512520840" 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="1534512487019" TEXT="gdl::DockBar"/>
|
|
</node>
|
|
<node CREATED="1534511737131" ID="ID_1114860371" MODIFIED="1534511973976" TEXT="DockObject">
|
|
<node CREATED="1534512301864" ID="ID_949111740" MODIFIED="1534512308409" TEXT="abstrakte Basisklasse">
|
|
<node CREATED="1534512313238" ID="ID_614492337" MODIFIED="1534512323953" TEXT=""for all docking widgets""/>
|
|
<node CREATED="1534512329540" ID="ID_661309088" MODIFIED="1534512336479" TEXT="implementiert GtkBuildable"/>
|
|
</node>
|
|
<node CREATED="1534512053505" ID="ID_1534912911" MODIFIED="1534512057020" TEXT="Subklassen">
|
|
<node CREATED="1534512059048" ID="ID_657079851" MODIFIED="1534512510705" 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="1534512364867" TEXT="docking area"/>
|
|
</node>
|
|
<node CREATED="1534512065896" ID="ID_1059219569" MODIFIED="1534512520840" 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="1534512751306" TEXT="Adds docking capability to its child widget">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</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="1534512077442" TEXT="gdl::DockPlaceholder">
|
|
<node CREATED="1534512416601" ID="ID_1452643437" MODIFIED="1534512417788" TEXT="A widget marking a docking place"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1534511742274" ID="ID_11568474" MODIFIED="1534511744838" TEXT="DockMaster"/>
|
|
<node CREATED="1534512085021" ID="ID_269318967" MODIFIED="1534512088456" TEXT="DockLayout"/>
|
|
<node CREATED="1534512093148" ID="ID_767756183" MODIFIED="1534512095472" TEXT="DockBar">
|
|
<node CREATED="1534512097459" ID="ID_1126576292" MODIFIED="1534512123802" TEXT="hält minimierte Docks als Icons">
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1534511699368" ID="ID_243375657" MODIFIED="1534511704819" TEXT="C++ Bindings"/>
|
|
</node>
|
|
<node CREATED="1482365415326" HGAP="71" ID="ID_886002365" MODIFIED="1534511598299" TEXT="Standard C++" VSHIFT="-25">
|
|
<node CREATED="1482365430484" ID="ID_1414724077" MODIFIED="1518487921102" TEXT="chrono">
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1482365434203" ID="ID_1026694670" MODIFIED="1518487921102" TEXT="lernen">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
</node>
|
|
<node CREATED="1482365448257" ID="ID_1648116305" MODIFIED="1518487921102">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
Ticket <font color="#ba0c3f">#886</font>
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1512178947582" ID="ID_1778761323" MODIFIED="1518487921102">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
Lessons
|
|
</p>
|
|
<p>
|
|
learned
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<node CREATED="1512178960281" ID="ID_1847018554" MODIFIED="1518487921102" TEXT="SFINAE">
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1512178984189" ID="ID_226963358" MODIFIED="1518487921102" TEXT="Fehler im Check scheitern stillschweigend">
|
|
<icon BUILTIN="clanbomber"/>
|
|
</node>
|
|
<node CREATED="1512179012761" ID="ID_1425607905" MODIFIED="1518487921102">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
auf <i>incomplete type</i> achten
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<node CREATED="1512179030982" ID="ID_895612426" MODIFIED="1518487921102" TEXT="sizeof()"/>
|
|
<node CREATED="1512179035013" ID="ID_1663591306" MODIFIED="1518487921102" TEXT="member-pointer"/>
|
|
<node CREATED="1512179039109" ID="ID_746391928" MODIFIED="1518487921102">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
Vorsicht bei
|
|
</p>
|
|
<p>
|
|
mutually dependent templates
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<node CREATED="1512179063250" ID="ID_933791979" MODIFIED="1518487921102" TEXT="während der Instantiierung....">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
kann eines der Templates im Zyklus vorrübergehend als "incomplete" gelten.
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1512179134400" ID="ID_1738202679" MODIFIED="1518487921102" TEXT="....kann die Metafunktion scheitern">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</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ählt dann z.B. eine subtil falsche Spezialisierung.
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1512179201831" ID="ID_1577563892" MODIFIED="1518487921102" TEXT="tückischer Fehler">
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1450488895106" ID="ID_1586185818" MODIFIED="1518487921102" TEXT="Threading">
|
|
<node CREATED="1450488902049" ID="ID_1126260262" MODIFIED="1525124445345" 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="1525130639421" 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="1525123918810" TEXT="ausfü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="1525188501512" TEXT="wichtig: Triggern der statischen Instanz (SO)">
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1525191808145" ID="ID_228531407" MODIFIED="1525191837607" TEXT="ungeklärtes Problem mit Initialisierungs-Reihenfolge">
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
<node CREATED="1525191859371" ID="ID_1136158199" MODIFIED="1525192047197" TEXT="tritt auf in statischem init-Kontext">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
wenn ein Template ein statisches member-Feld hat,
|
|
</p>
|
|
<p>
|
|
dann ist zusätzlich eine getemplatete <i>Definition</i> dieses Feldes notwendig.
|
|
</p>
|
|
<p>
|
|
Diese wird erst generiert, wenn der erste <b>odr-use</b> 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ß dann der ctor-Aufruf zur Initialisierung erst <i>nach dem Zugriff</i> auf
|
|
</p>
|
|
<p>
|
|
das member-Feld passiert, sofern der Aufruf und damit die Instanz des umschließ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="1525192075199" TEXT="#1142 initialisation of static template members">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
</node>
|
|
<node CREATED="1525192237928" ID="ID_1523643615" MODIFIED="1525192311996" TEXT="Demo-Beispiel: g++ --std=gnu++14 blei.cpp -o blei">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
|
|
</p>
|
|
<p>
|
|
#include <iostream>
|
|
</p>
|
|
<p>
|
|
|
|
</p>
|
|
<p>
|
|
using std::cout;
|
|
</p>
|
|
<p>
|
|
using std::endl;
|
|
</p>
|
|
<p>
|
|
|
|
</p>
|
|
<p>
|
|
template<typename T>
|
|
</p>
|
|
<p>
|
|
class Factory
|
|
</p>
|
|
<p>
|
|
  {
|
|
</p>
|
|
<p>
|
|
  public:
|
|
</p>
|
|
<p>
|
|
    T val;
|
|
</p>
|
|
<p>
|
|
   
|
|
</p>
|
|
<p>
|
|
    Factory()
|
|
</p>
|
|
<p>
|
|
      : val{}
|
|
</p>
|
|
<p>
|
|
      {
|
|
</p>
|
|
<p>
|
|
        cout << "Factory-ctor  val="<<val<<endl;
|
|
</p>
|
|
<p>
|
|
      }
|
|
</p>
|
|
<p>
|
|
  };
|
|
</p>
|
|
<p>
|
|
|
|
</p>
|
|
<p>
|
|
|
|
</p>
|
|
<p>
|
|
template<typename T>
|
|
</p>
|
|
<p>
|
|
class Front
|
|
</p>
|
|
<p>
|
|
  {
|
|
</p>
|
|
<p>
|
|
  public:
|
|
</p>
|
|
<p>
|
|
    static Factory<T> fac;
|
|
</p>
|
|
<p>
|
|
   
|
|
</p>
|
|
<p>
|
|
    Front()
|
|
</p>
|
|
<p>
|
|
      {
|
|
</p>
|
|
<p>
|
|
        cout << "Front-ctor    val="<<fac.val<<endl;
|
|
</p>
|
|
<p>
|
|
        fac.val += 100;
|
|
</p>
|
|
<p>
|
|
      }
|
|
</p>
|
|
<p>
|
|
   
|
|
</p>
|
|
<p>
|
|
    T&
|
|
</p>
|
|
<p>
|
|
    operate ()
|
|
</p>
|
|
<p>
|
|
      {
|
|
</p>
|
|
<p>
|
|
        cout << "Front-operate val="<<fac.val<<endl;
|
|
</p>
|
|
<p>
|
|
        ++ fac.val;
|
|
</p>
|
|
<p>
|
|
        return fac.val;
|
|
</p>
|
|
<p>
|
|
      }
|
|
</p>
|
|
<p>
|
|
  };
|
|
</p>
|
|
<p>
|
|
|
|
</p>
|
|
<p>
|
|
template<typename T>
|
|
</p>
|
|
<p>
|
|
Factory<T> Front<T>::fac;
|
|
</p>
|
|
<p>
|
|
|
|
</p>
|
|
<p>
|
|
|
|
</p>
|
|
<p>
|
|
namespace {
|
|
</p>
|
|
<p>
|
|
  Front<int> front;
|
|
</p>
|
|
<p>
|
|
  int global_int = front.operate();
|
|
</p>
|
|
<p>
|
|
}
|
|
</p>
|
|
<p>
|
|
|
|
</p>
|
|
<p>
|
|
|
|
</p>
|
|
<p>
|
|
|
|
</p>
|
|
<p>
|
|
int
|
|
</p>
|
|
<p>
|
|
main (int, char**)
|
|
</p>
|
|
<p>
|
|
  {
|
|
</p>
|
|
<p>
|
|
    Front<int> fint;
|
|
</p>
|
|
<p>
|
|
   
|
|
</p>
|
|
<p>
|
|
    int& i = fint.operate();
|
|
</p>
|
|
<p>
|
|
    cout << "main:         val="<<i<<endl;
|
|
</p>
|
|
<p>
|
|
    cout << "global_int.......="<<global_int<<endl;
|
|
</p>
|
|
<p>
|
|
   
|
|
</p>
|
|
<p>
|
|
    return 0;
|
|
</p>
|
|
<p>
|
|
  }
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1450489388912" ID="ID_1935538293" MODIFIED="1518487921102" TEXT="function-static">
|
|
<icon BUILTIN="info"/>
|
|
<node CREATED="1450489395711" ID="ID_1661542298" MODIFIED="1518487921102" TEXT="when ctrl flow enters first"/>
|
|
<node CREATED="1450489412364" ID="ID_965405072" LINK="http://stackoverflow.com/a/8102145/444796" MODIFIED="1518487921102" TEXT="threadsafe since C++11"/>
|
|
<node CREATED="1450489421795" ID="ID_12247357" MODIFIED="1518487921102" TEXT="lives until the end of the program"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1521779331036" FOLDED="true" ID="ID_1416813337" MODIFIED="1534510508614" 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 & Erlä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" ID="ID_1607777448" MODIFIED="1525124215504" TEXT="fences vs. barriers vs ordering constraints">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</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 Ä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="1521780205692" TEXT="vier Typen">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</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ß 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ä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="1521779776975" ID="ID_594964930" MODIFIED="1521779831563" TEXT="erzeugen Relation für Zugriffe auf Payload">
|
|
<node CREATED="1521779923346" ID="ID_725815164" MODIFIED="1521779936380" TEXT="geregelt wird Sichtbarkeit von Ä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 "alle""/>
|
|
<node CREATED="1521779996480" ID="ID_1211879916" MODIFIED="1521780022216" TEXT="für "consume"-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>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
eine <i>Solche</i> 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>
|
|
|
|
</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ä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>
|
|
|
|
</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>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
das heißt, nur für einen <b>vom gleichen Mutex geschützen</b>  Bereich!
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1521782262223" HGAP="30" ID="ID_1323377815" MODIFIED="1521782807539" TEXT="Typisches Gegenbeispiel: Double Checked Locking" VSHIFT="18">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
In der <i>naiven Implementierung</i> greift der prüfende Thread auf die instance-Variable
|
|
</p>
|
|
<p>
|
|
<i>ohne jedwede Beziehung</i> 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ß 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ätzliche Kosten.
|
|
</p>
|
|
<p>
|
|
|
|
</p>
|
|
<p>
|
|
Allerdinsg nicht auf einer Plattform, die ohnehin sequentiell-konsistent ist. Wie "zum Beispiel" x86/64
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1521791354104" HGAP="-1" ID="ID_287671137" MODIFIED="1521791364604" TEXT="grundsätzlich...." VSHIFT="7">
|
|
<node CREATED="1521791365590" ID="ID_1571110438" MODIFIED="1521791379580">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...haben wir es hier mit einem <b>Pattern</b> zu tun
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1521791417311" ID="ID_668833788" MODIFIED="1521791528549">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
ich nenne es "<b>synchronised visibility cones</b>"
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1521791441996" ID="ID_656786136" MODIFIED="1521791513129">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
Dieses errichtet die Fiktion,
|
|
</p>
|
|
<p>
|
|
als würden wir nur auf einer gemeinsamen (shared) Instanz arbeiten.
|
|
</p>
|
|
<p>
|
|
In Realität arbeiten mehrere Threads/Cores mit mehreren Entitäten
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
<node CREATED="1521791567491" ID="ID_328701027" MODIFIED="1521791613112" TEXT="Code muß das Bestehen der Beziehung aktiv prüfen">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...und andernfalls überhaupt vermeiden,
|
|
</p>
|
|
<p>
|
|
die shared zone anzufassen!
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1491098340549" ID="ID_938211341" MODIFIED="1518487921102" TEXT="Toolchain">
|
|
<node CREATED="1491098346053" ID="ID_1333373693" MODIFIED="1518487921102" TEXT="Doxygen">
|
|
<node CREATED="1491098370281" ID="ID_1904535196" MODIFIED="1518487921102" TEXT="Konfig"/>
|
|
<node CREATED="1491098373816" ID="ID_1022990703" MODIFIED="1518487921102" TEXT="Fallen">
|
|
<node CREATED="1491099064125" ID="ID_651937703" MODIFIED="1518487921102" TEXT="Dateien ohne @file werden nicht dokumentiert"/>
|
|
<node CREATED="1491099088362" ID="ID_1507484869" MODIFIED="1518487921102" TEXT="Template-Parameter in Klassennamen">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
wenn eine getemplatete Klasse zum Qualifizieren eines Feldes verwendet wird,
|
|
</p>
|
|
<p>
|
|
dann mü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<RES>::resolveBy
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1491099311253" ID="ID_307124479" MODIFIED="1518487921102">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
@param hat <b>stets</b> einen Parameternamen als Argument
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...der ist <i>nicht</i> 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>
|
|
<node CREATED="1491098382888" ID="ID_1568153886" MODIFIED="1518487921102" TEXT="Probleme">
|
|
<node CREATED="1491098385823" ID="ID_801230289" MODIFIED="1518487921102" TEXT="Auto-Links">
|
|
<node CREATED="1491098393405" ID="ID_1408589913" MODIFIED="1518487921102" TEXT="funktionieren in vielen Fällen nicht"/>
|
|
<node CREATED="1491098402197" ID="ID_1572559975" MODIFIED="1518487921102" TEXT="Verdacht: muß Namespaces qualifizieren?"/>
|
|
<node CREATED="1491098427785" ID="ID_719835617" MODIFIED="1518487921102" TEXT="Beispiel: alle Unit-Tests">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</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>
|
|
<node CREATED="1491098487889" ID="ID_1401713015" MODIFIED="1518487921102" TEXT="Sqlite-Support">
|
|
<node CREATED="1491098494497" ID="ID_1565133197" MODIFIED="1518487921102" TEXT="ist wohl noch sehr vorläufig"/>
|
|
<node CREATED="1491098499712" ID="ID_1643743799" MODIFIED="1518487921102" TEXT="wenn eine Sqlite-DB gefunden wird...."/>
|
|
<node CREATED="1491098515845" ID="ID_1313255620" MODIFIED="1518487921102" TEXT="produziert er jede Menge Constraint-Verletzungen"/>
|
|
<node CREATED="1491098525396" ID="ID_1962242264" MODIFIED="1518487921102" TEXT="Tip: Sqlite-DB weglöschen!!!"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1437693678626" HGAP="117" ID="ID_1536988357" MODIFIED="1522933364911" POSITION="left" TEXT="Doku" VSHIFT="-47">
|
|
<node CREATED="1437693687650" ID="ID_1484874437" MODIFIED="1518487921102" TEXT="Sound-Systeme">
|
|
<node CREATED="1437693693617" ID="ID_955932218" LINK="https://wiki.debian.org/Sound" MODIFIED="1518487921102" TEXT="siehe die Debian-Übersichtsseite">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...im Besonderen die guten Diagramme fü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="1522933712576" POSITION="left" TEXT="Entwicklung" VSHIFT="-6">
|
|
<edge COLOR="#9e7171" STYLE="linear"/>
|
|
<font NAME="SansSerif" SIZE="16"/>
|
|
<node CREATED="1522933436743" ID="ID_669941386" MODIFIED="1522933440114" TEXT="Architektur">
|
|
<node CREATED="1522933471266" ID="ID_1652255203" MODIFIED="1522933473878" TEXT="GUI">
|
|
<node CREATED="1522933474914" ID="ID_1612113311" MODIFIED="1522933477550" TEXT="Backbone">
|
|
<node COLOR="#338800" CREATED="1522934000737" ID="ID_1881825617" MODIFIED="1522934005641" TEXT="brauche top-Level">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1522934018175" ID="ID_463339540" MODIFIED="1522934292870" TEXT="muß Komponente allozieren können">
|
|
<linktarget COLOR="#ee162c" DESTINATION="ID_463339540" ENDARROW="Default" ENDINCLINATION="355;0;" ID="Arrow_ID_636625875" SOURCE="ID_34008801" STARTARROW="None" STARTINCLINATION="55;1;"/>
|
|
<icon BUILTIN="pencil"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1522933478066" ID="ID_533257050" MODIFIED="1522933480197" TEXT="Timeline">
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1522934041940" ID="ID_706725110" MODIFIED="1522934056656" TEXT="ist kamputt">
|
|
<icon BUILTIN="smiley-angry"/>
|
|
</node>
|
|
<node CREATED="1522934923858" ID="ID_369497864" MODIFIED="1522934934979" TEXT="braucht bessere Architektur">
|
|
<icon BUILTIN="hourglass"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1522933489912" ID="ID_909250916" MODIFIED="1522933493515" TEXT="Session">
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1522934151421" ID="ID_580296278" MODIFIED="1522934171443" TEXT="Element-Erzeugung implementieren">
|
|
<icon BUILTIN="broken-line"/>
|
|
</node>
|
|
<node CREATED="1522934106715" ID="ID_1908249834" MODIFIED="1522934124024" TEXT="Placement-Logik implementieren">
|
|
<icon BUILTIN="hourglass"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1522933496807" ID="ID_30713901" MODIFIED="1522933499226" TEXT="Builder">
|
|
<node CREATED="1522934179425" ID="ID_1599594477" MODIFIED="1522934190758" TEXT="keine Ahnung was der machen soll">
|
|
<icon BUILTIN="smily_bad"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1522933500430" ID="ID_1555205420" MODIFIED="1522933504442" TEXT="Player">
|
|
<node CREATED="1522934197478" ID="ID_237029868" MODIFIED="1522934205973" TEXT="wartet auf Scheduler">
|
|
<icon BUILTIN="hourglass"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1522933505078" ID="ID_1376308250" MODIFIED="1522933506642" TEXT="Engine">
|
|
<node CREATED="1522934210324" ID="ID_254801901" MODIFIED="1522934218170" TEXT="wartet auf Fixture/Backbone">
|
|
<icon BUILTIN="hourglass"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1522933444542" ID="ID_1027224176" MODIFIED="1522933447105" TEXT="Themen">
|
|
<node CREATED="1522933640027" ID="ID_191198072" MODIFIED="1522933669249" TEXT="UI-Connection">
|
|
<icon BUILTIN="full-1"/>
|
|
<node CREATED="1522933746716" ID="ID_504819861" MODIFIED="1522933751736" TEXT="Dummy-Connection">
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1522933752939" ID="ID_58888775" MODIFIED="1522933768348" TEXT="DemoGuiRoundtrip">
|
|
<icon BUILTIN="pencil"/>
|
|
<node CREATED="1522933935346" ID="ID_1197314745" MODIFIED="1522933943741" TEXT="Knopf sendet Signale"/>
|
|
<node CREATED="1522933947737" ID="ID_59789786" MODIFIED="1522933954188" TEXT="diese werden zu Commands"/>
|
|
<node CREATED="1522933955463" ID="ID_212135952" MODIFIED="1522933963618" TEXT="diese werden in Proc ausgeführt"/>
|
|
<node CREATED="1522933964302" ID="ID_504912590" MODIFIED="1522933972313" TEXT="und senden Meldungen zurück"/>
|
|
<node CREATED="1522933973965" ID="ID_34008801" MODIFIED="1522934292870" TEXT="...in das Benachrichtigungsfenster">
|
|
<arrowlink COLOR="#ee162c" DESTINATION="ID_463339540" ENDARROW="Default" ENDINCLINATION="355;0;" ID="Arrow_ID_636625875" STARTARROW="None" STARTINCLINATION="55;1;"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1522933859797" ID="ID_1381384508" MODIFIED="1522933868144" TEXT="Dummy-Population">
|
|
<icon BUILTIN="hourglass"/>
|
|
<node CREATED="1522933880242" ID="ID_1851602883" MODIFIED="1522933885861" TEXT="automatisch beim Start"/>
|
|
<node CREATED="1522933886401" ID="ID_1546164262" MODIFIED="1522933898443" TEXT="Pseudo-Session-Inhalte erfinden"/>
|
|
<node CREATED="1522933899951" ID="ID_1191671954" MODIFIED="1522933905666" TEXT="in das UI hochschieben"/>
|
|
<node CREATED="1522933913837" ID="ID_1879142349" MODIFIED="1522933922296" TEXT="Ziel: man sieht was">
|
|
<icon BUILTIN="ksmiletris"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1522933624861" ID="ID_1008186406" MODIFIED="1522933671728" TEXT="Timeline-Widget">
|
|
<icon BUILTIN="full-2"/>
|
|
</node>
|
|
<node CREATED="1522933545616" ID="ID_193999125" MODIFIED="1522933674090" TEXT="Fixture">
|
|
<icon BUILTIN="full-3"/>
|
|
</node>
|
|
<node CREATED="1522933565157" ID="ID_651020600" MODIFIED="1522933676422" TEXT="Render-Jobs">
|
|
<icon BUILTIN="full-4"/>
|
|
</node>
|
|
<node CREATED="1522933604296" ID="ID_596148799" MODIFIED="1522933681637" TEXT="Node-Invocation">
|
|
<icon BUILTIN="full-5"/>
|
|
</node>
|
|
<node CREATED="1522933577884" ID="ID_1298252635" MODIFIED="1522933689830" TEXT="Frame-Dispatch">
|
|
<icon BUILTIN="full-6"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1439176872457" HGAP="15" ID="ID_355008543" MODIFIED="1518487921102" POSITION="left" TEXT="Plattform" VSHIFT="41">
|
|
<icon BUILTIN="go"/>
|
|
<node CREATED="1439176875682" HGAP="47" ID="ID_1487331591" MODIFIED="1518487921102" TEXT="Debian/Jessie" VSHIFT="60">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1439176890840" ID="ID_170863947" MODIFIED="1518487921102" TEXT="Probleme">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1439176900293" ID="ID_949460307" MODIFIED="1518487921102" TEXT="Linker rpath $ORIGIN">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1439593020264" ID="ID_356536017" LINK="https://sourceware.org/bugzilla/show_bug.cgi?id=16936" MODIFIED="1518487921102">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
bekannter Bug <b>binutils</b> <font color="#c72011">#16936</font>
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1439593578558" ID="ID_1155824773" LINK="http://issues.lumiera.org/ticket/965" MODIFIED="1518487921102">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
Lumiera-Ticket <font color="#90011d">#965</font>
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1439593646645" ID="ID_917747701" MODIFIED="1518487921103">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
gelöst in <font color="#4c1383">4e8e63ebe</font>
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...man "hilft" dem Linker mit
|
|
</p>
|
|
<p style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; text-indent: 0px">
|
|
"-Wl,-rpath-link=target/modules"
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1439176912636" ID="ID_584884488" MODIFIED="1518487921103" TEXT="failed tests">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
laufen wieder alle
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1439176982698" HGAP="59" ID="ID_1330966528" MODIFIED="1518487921103" TEXT="Beobachtung: Meldungen im journal" VSHIFT="2"/>
|
|
<node CREATED="1439176948063" HGAP="54" ID="ID_1726494484" MODIFIED="1518487921103" TEXT="5 Thread/Parallel" VSHIFT="1">
|
|
<node CREATED="1439566266701" ID="ID_1280061419" MODIFIED="1518487921103" TEXT="hängt mit ulimit zusammen">
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
<node CREATED="1439566274091" ID="ID_1628790738" MODIFIED="1518487921103" TEXT="ohne ulimit gehts">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
test.sh Zeile 138
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1439566868460" ID="ID_620984495" MODIFIED="1518487921103" TEXT="Untersuchung">
|
|
<node CREATED="1439566872203" ID="ID_1734454643" MODIFIED="1518487921103" TEXT="ulimit -T funktioniert nicht">
|
|
<node CREATED="1439566882418" ID="ID_410204401" MODIFIED="1518487921103" TEXT="bekanntes Problem"/>
|
|
<node CREATED="1439566886513" ID="ID_1412848120" LINK="https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=724461" MODIFIED="1518487921103">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
Debian-Bug <font color="#9b0226">#724461</font>
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1439588367804" ID="ID_1494433818" MODIFIED="1518487921103">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
nebenbei <i>ohweh:</i>
|
|
</p>
|
|
<p>
|
|
ulimit -t 1 ist wirkungslos
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<node CREATED="1439592731687" ID="ID_715556229" MODIFIED="1518487921103">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
Christian:  bash -c "ulimit -t 1; while :; do :; done"
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1439592774041" ID="ID_1603492676" MODIFIED="1518487921103" TEXT="ist reine CPU-Zeit">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
und wir verbringen unsere Zeit mit contention
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1439176927657" ID="ID_453561058" MODIFIED="1518487921103" TEXT="EntryID">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
ist klar, hab ich gebrochen
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1439608908133" ID="ID_1023076054" MODIFIED="1518487921103" TEXT="Problem mit der Hash-Funktion"/>
|
|
<node CREATED="1439609043316" ID="ID_1585741290" MODIFIED="1518487921103" TEXT="hatte ich schon mal untersucht"/>
|
|
<node CREATED="1439608917061" ID="ID_1631109794" LINK="http://issues.lumiera.org/ticket/587" MODIFIED="1518487921103">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
siehe Ticket <font color="#991130">#587</font>
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1439609055443" ID="ID_325526736" MODIFIED="1518487921103" TEXT="Problem hat sich verschärft">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</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_1076015737" MODIFIED="1518487921103">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
erinnere mich an den
|
|
</p>
|
|
<p>
|
|
guten alten "Knuth-Trick"
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1439609127137" ID="ID_509487220" MODIFIED="1518487921103">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
wow: es genü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 CREATED="1439176963604" ID="ID_582047980" MODIFIED="1518487921103" TEXT="test-lib nicht zu debuggern">
|
|
<node CREATED="1439177141197" ID="ID_140380975" MODIFIED="1518487921103" TEXT="Segfault in GDB">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</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_1975408018" MODIFIED="1518487921103" TEXT="heruntergedampft auf einen Aufruf">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node CREATED="1439491824537" ID="ID_1765691004" MODIFIED="1518487921103">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
function gebunden an ein lambda
|
|
</p>
|
|
<p>
|
|
wobei ein Argument-Typ als vom Template-Argument
|
|
</p>
|
|
<p>
|
|
der umschließenden Funktion aufgegriffen wird
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
<node CREATED="1439492258423" ID="ID_1751368693" MODIFIED="1518487921103" TEXT="Plan">
|
|
<node CREATED="1439492266470" ID="ID_730637506" MODIFIED="1518487921103" TEXT="reproduzieren auf einer sauberen VM">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node CREATED="1439492277444" ID="ID_840779753" LINK="http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=795445" MODIFIED="1518487921103">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
Bugreport für Debian/Jessie <font color="#e02f0a">#795445</font>
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1439492285635" ID="ID_1706807629" MODIFIED="1518487921103" TEXT="gdb-Version untersuchen">
|
|
<node CREATED="1439516472396" ID="ID_1002859575" MODIFIED="1518487921103" TEXT="backports">
|
|
<node CREATED="1439516512684" ID="ID_1031030614" MODIFIED="1518487921103">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
Git: debBild/<b>Gdb_DEB.git</b>
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1439516477008" ID="ID_1182795741" MODIFIED="1518487921103" TEXT="Ver 7.8.2">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1439516495534" ID="ID_413946117" MODIFIED="1518487921103" TEXT="Bau-Abhängigkeiten">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</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_644868114" MODIFIED="1518487921103">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
<i>dutzende</i> Tests scheitern
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="smily_bad"/>
|
|
</node>
|
|
<node CREATED="1439519171155" ID="ID_509605117" MODIFIED="1518487921104" TEXT="das scheint nicht ungewöhnlich zu sein">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
verräterrischer Code im debian/rules
|
|
</p>
|
|
<p>
|
|
check-stamp:
|
|
</p>
|
|
<p>
|
|
ifeq ($(run_tests),yes)
|
|
</p>
|
|
<p>
|
|
        $(MAKE) $(NJOBS) -C $(DEB_BUILDDIR)/gdb check \
|
|
</p>
|
|
<p>
|
|
          || echo "**Tests failed, of course.**"
|
|
</p>
|
|
<p>
|
|
endif
|
|
</p>
|
|
<p>
|
|
        touch $@
|
|
</p>
|
|
<p>
|
|
|
|
</p>
|
|
<p>
|
|
<b>au weia</b> LEUTE!
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#f7f2b7" CREATED="1439521655505" ID="ID_746337758" MODIFIED="1518487921104" TEXT="funktioniert, kein Segfault mehr">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1439492295754" ID="ID_199817664" MODIFIED="1518487921104" TEXT="ggfs. upstream reporten"/>
|
|
<node CREATED="1439492301698" ID="ID_1431884134" MODIFIED="1518487921104" TEXT="workaround">
|
|
<node CREATED="1439492309920" ID="ID_1258344281" MODIFIED="1518487921104" TEXT="andere gdb-version">
|
|
<icon BUILTIN="help"/>
|
|
</node>
|
|
<node CREATED="1439492315080" ID="ID_45132365" MODIFIED="1518487921104" TEXT="clang verwenden">
|
|
<icon BUILTIN="help"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1439177191998" ID="ID_1188941582" MODIFIED="1518487921104" TEXT="Syslog nicht mehr STDOUT">
|
|
<icon BUILTIN="help"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1439655684119" ID="ID_1194655899" MODIFIED="1518487921104" TEXT="Warnungen">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
speziell: unused-function bei dem Trick mit dem std::hash macht mir Sorgen.
|
|
</p>
|
|
<p>
|
|
|
|
</p>
|
|
<p>
|
|
und tatsächlich: das <i>ist</i> daneben, GCC hat Recht!
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node CREATED="1439644339480" ID="ID_239239923" MODIFIED="1518487921104" TEXT="Lumiera DEB">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
aktualisieren und neu bauen
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node CREATED="1439644368572" ID="ID_106785551" MODIFIED="1518487921104" TEXT="Doku: Referenz-System">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1446505444775" HGAP="106" ID="ID_721807850" MODIFIED="1518487921104" TEXT="Buildsystem" VSHIFT="-5">
|
|
<node CREATED="1446505367113" ID="ID_335245102" LINK="http://issues.lumiera.org/ticket/971" MODIFIED="1518487921104">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
standard hardening-flags setzen <font color="#ba015b">#971</font>
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1446509415481" ID="ID_180589749" MODIFIED="1518487921104" TEXT="Versionen hochsetzen">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
wähle Kompatibiltät genau so, daß Ubuntu-Trusty noch unterstützt wird.
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1446509422423" ID="ID_1328716100" MODIFIED="1518487921104" TEXT="gtkmm-3.0 3.10">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node CREATED="1446509430758" ID="ID_371171235" MODIFIED="1518487921104" TEXT="glibmm-2.4 2.39">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node CREATED="1446509601271" ID="ID_1477664506" MODIFIED="1518487921104" TEXT="libglib2.0 2.40">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1446510347931" ID="ID_559552800" MODIFIED="1518487921104" TEXT="direkten Check hierfür"/>
|
|
<node CREATED="1446510354914" ID="ID_1787485177" MODIFIED="1518487921104" TEXT="check für gthread fraglich"/>
|
|
</node>
|
|
<node CREATED="1446509752707" ID="ID_1392554051" MODIFIED="1518487921104" TEXT="libgdl-3-dev 3.12">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node CREATED="1446509983556" ID="ID_366391443" MODIFIED="1518487921104" TEXT="libcairomm-1.0-dev 1.10">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node CREATED="1446510475202" ID="ID_514495017" MODIFIED="1518487921104" TEXT="librsvg2-dev 2.30">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node CREATED="1446511275302" ID="ID_359693763" MODIFIED="1518487921104" TEXT="libgavl-dev 1.4">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node CREATED="1446510776857" ID="ID_674774779" MODIFIED="1518487921104" TEXT="Kommentar: librt gehört zu libc 6">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node CREATED="1446511125266" ID="ID_1198662071" MODIFIED="1518487921104" TEXT="Kommentar zu xv, x11 und xext : TODO videodisplayer obsolet?">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1447566875500" HGAP="35" ID="ID_773580451" MODIFIED="1518487921104" TEXT="wünschenswert..." VSHIFT="16">
|
|
<icon BUILTIN="bell"/>
|
|
<node CREATED="1447566892252" ID="ID_649638170" MODIFIED="1518487921104" TEXT="generische Compiler-Schalter zur Diagnose loggen">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...damit man auch im Paketbau-Build-Output wenigstens einmal <i>alle</i>  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="1518487921104" TEXT="clean soll .sconf_temp und *.pyc mit wegräumen">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...denn die stö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="1518487921104" TEXT="Compiler" VSHIFT="-10">
|
|
<icon BUILTIN="prepare"/>
|
|
<node CREATED="1447978472591" ID="ID_281213456" MODIFIED="1518487921104" TEXT="GCC-4.9">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node CREATED="1447978381986" ID="ID_378439500" MODIFIED="1518487921104" TEXT="GCC-5">
|
|
<icon BUILTIN="flag"/>
|
|
<node CREATED="1447983098958" ID="ID_291439119" MODIFIED="1518487921104">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
deprecated: <b>auto_ptr</b>
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
</node>
|
|
<node CREATED="1447990971420" ID="ID_1499023407" MODIFIED="1518487921104">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</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="1518487921104" TEXT="Lösung für std::hash finden">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1447978388930" ID="ID_78828927" MODIFIED="1518487921104" TEXT="Clang 3.5">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1446480582168" HGAP="46" ID="ID_554745278" MODIFIED="1518487921104" TEXT="Release" VSHIFT="-5">
|
|
<icon BUILTIN="go"/>
|
|
<node CREATED="1446480601381" ID="ID_1870415321" MODIFIED="1518487921104" TEXT="release prep: clean-up obsolete information">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
Doku durchkämmen nach Müll
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<font NAME="SansSerif" SIZE="12"/>
|
|
<icon BUILTIN="full-1"/>
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1446482192807" ID="ID_852733328" MODIFIED="1518487921104" TEXT="Debian">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
hier nach offensichtlich obsoleter Info checken
|
|
</p>
|
|
<p>
|
|
<font color="#d40222">WICHTIG</font>: keine vorgreifende Infor publizieren!!!!!
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node CREATED="1446482445325" ID="ID_1134936512" MODIFIED="1518487921104" TEXT="Build-Tutorial">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
die explizit angegebenen Paketnamen schon mal vorchecken
|
|
</p>
|
|
<p>
|
|
die Abschnitte zu den LIbraries prüfen / umschreiben
|
|
</p>
|
|
<p>
|
|
insgesamt sorgfältig durchlesen
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="button_ok"/>
|
|
<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">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1446480725508" ID="ID_789754974" MODIFIED="1518487921104" TEXT="release prep: bump version number">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
knappe Kennzeichnung des Releases in den Kommentar
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="full-2"/>
|
|
<icon BUILTIN="button_ok"/>
|
|
<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="1518487921104" TEXT="Rück-Merge vom Release-Zweig">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
hier geht es darum, Konsistenz im Git herzustellen.
|
|
</p>
|
|
<p>
|
|
Wenn alles korrekt gemacht wurde, dürfte es hier keinen Rückfluß von Änderungen geben.
|
|
</p>
|
|
<p>
|
|
Bitte auch daran denken, zuerst den DEB-Zweig zu prüfen. Diesen aber nicht zurückmergen,
|
|
</p>
|
|
<p>
|
|
denn wir wollen keine DEB-Info im Master haben!
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="full-3"/>
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1446481302159" ID="ID_1330024662" MODIFIED="1518487921104" TEXT="Release-Zweig">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node CREATED="1446481305102" ID="ID_1191774545" MODIFIED="1518487921104" TEXT="lfd Fixes von den DEBs">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node CREATED="1446481314669" ID="ID_477388235" MODIFIED="1518487921104" TEXT="Plattform-Abhängigkeiten checken">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1446480963028" ID="ID_83763074" MODIFIED="1518487921104" TEXT="Release-commit: Pre-release 0.pre.03">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
einzeilige Kennzeichnung wiederholen
|
|
</p>
|
|
<p>
|
|
die unmittelbaren Release-Dokumente durchgehen
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="full-4"/>
|
|
<icon BUILTIN="button_ok"/>
|
|
<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="1518487921104" TEXT="Release-Zweig: upgrade current release to 0.pre.03">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
Merge-commit auf den Release-Zweig.
|
|
</p>
|
|
<p>
|
|
Sollte konfliktfrei sein
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="full-5"/>
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node CREATED="1446481591568" ID="ID_1120064498" MODIFIED="1518487921104" TEXT="Paketieren">
|
|
<icon BUILTIN="full-6"/>
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1446481606134" ID="ID_212330450" MODIFIED="1518487921104" TEXT="Merge release -> deb">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node CREATED="1446481618196" ID="ID_1882691551" MODIFIED="1518487921104" TEXT="Paket-Beschreibung">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node CREATED="1446481637738" ID="ID_1002196753" MODIFIED="1518487921104" TEXT="Manpages">
|
|
<icon BUILTIN="bell"/>
|
|
</node>
|
|
<node CREATED="1446481646057" ID="ID_262549512" MODIFIED="1518487921104" TEXT="control">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node CREATED="1446481655743" ID="ID_269337100" MODIFIED="1518487921104" TEXT="rules">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1446481713984" ID="ID_1112453089" MODIFIED="1518487921104" TEXT="ausliefern">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...das heiß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 CREATED="1446482059174" ID="ID_1294670881" MODIFIED="1518487921104">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
<b>Referenz</b>: Debian/Jessie (stable) : i386 and x86_64
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="button_ok"/>
|
|
<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>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
Probleme mit der Compile-Reihenfolge  <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 CREATED="1446482059174" ID="ID_1693967692" MODIFIED="1518487921105" TEXT="Ubuntu/Trusty (14.LTS) : i386 and x86_64">
|
|
<icon BUILTIN="button_ok"/>
|
|
<icon BUILTIN="flag-yellow"/>
|
|
<node CREATED="1446509774664" ID="ID_458867123" MODIFIED="1518487921105" TEXT="Ausnahmen für libgdl-3-dev 3.8"/>
|
|
<node CREATED="1447567139480" ID="ID_183954019" MODIFIED="1518487921105" TEXT="-> diese Ausnahmen in Paketdefinition ü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äß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="1518487921105" TEXT="doc-base Definition">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
...fü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="1518487921105">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
stelle fest: Fehler auf Trusty,
|
|
</p>
|
|
<p>
|
|
nur Warnung auf Mint
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
das heißt, daß ich versuchen kann, das Problem erst mal "unter den Teppich zu kehren"
|
|
</p>
|
|
<p>
|
|
Die Wahrscheinlichkeit, daß <i>irgend jemand</i> Lumiera unter Ubuntu/Trusty <i>installieren </i>möchte, erscheint mir akademisch
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="bell"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1446482059174" ID="ID_1906801117" MODIFIED="1518487921105" TEXT="Ubuntu/Vivid (15.04) : i386">
|
|
<icon BUILTIN="button_ok"/>
|
|
</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>
|
|
|
|
</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="1518487921105" TEXT="liegt nur an fehlendem #include <utility>">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</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>
|
|
|
|
</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="1518487921105">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
bauen mit gcc-4.9 <i>nicht möglich</i>
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</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="1518487921105" TEXT="Mint/Rafaela (17.2.LTS) : x86_64">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node CREATED="1446482249336" ID="ID_1088469455" MODIFIED="1518487921105" TEXT="Web/Doku aktualisieren">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
Wichtig: hier nur was wirklich gebaut ist und funktioniert!
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node CREATED="1446589479832" ID="ID_1851762530" MODIFIED="1518487921105" TEXT="alte Repos wegwerfen">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1446589487798" ID="ID_1080472422" MODIFIED="1518487921105" TEXT="Lumi-Depot: Wheezy">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node CREATED="1446589495445" ID="ID_1083044545" MODIFIED="1518487921105" TEXT="VBox Wheezy">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node CREATED="1446589502132" ID="ID_271504207" MODIFIED="1518487921105" TEXT="VBox Mint Quiana">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1446481892624" ID="ID_1020531472" MODIFIED="1518487921105" TEXT="Ticket schließen">
|
|
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1439842359711" ID="ID_1982964862" MODIFIED="1518487921105" TEXT="Paket">
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
<node CREATED="1439842379420" ID="ID_1336697213" MODIFIED="1518487921105" TEXT="gtk-Abhängigkeiten"/>
|
|
<node CREATED="1446486970358" ID="ID_1758732894" MODIFIED="1518487921105" TEXT="was ist mit libXV">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
eigentlich war die nur notwendig für das Video-Viewer Widget,
|
|
</p>
|
|
<p>
|
|
was nun leider tot ist. Wir haben noch keinen Ersatz. Deshalb lasse ich die Abhängigkeit
|
|
</p>
|
|
<p>
|
|
bestehen, aber irgendwann mü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="1518487921105">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</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="1518487921105" TEXT="debian/copyright">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
<node CREATED="1478387345624" ID="ID_666713431" MODIFIED="1518487921105" TEXT="sollte alle Copyright-statements korrekt zusammenfassen"/>
|
|
<node CREATED="1478387362709" ID="ID_1001009846" MODIFIED="1518487921105" TEXT="siehe Debian-Policy"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1446356359992" HGAP="9" ID="ID_1850896628" MODIFIED="1518487921105" POSITION="left" TEXT="QA" VSHIFT="69">
|
|
<icon BUILTIN="go"/>
|
|
<node CREATED="1447985496639" ID="ID_1191711297" MODIFIED="1518487921105" TEXT="untersuchen">
|
|
<node CREATED="1447985501798" ID="ID_732609615" MODIFIED="1518487921105" TEXT="std::hash-Spezialisierung">
|
|
<node CREATED="1447985531602" ID="ID_515281257" LINK="http://issues.lumiera.org/ticket/722" MODIFIED="1518487921105">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
Ticket <font color="#d40230">#722</font>
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
</node>
|
|
<node CREATED="1447985552663" ID="ID_1932953869" MODIFIED="1518487921105" TEXT="Hack ist inzwischen obsolet">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</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="1518487921105" TEXT="Frage: wie kann ich ein SFINAE-Brücke bauen"/>
|
|
<node CREATED="1447985637132" ID="ID_1680970111" MODIFIED="1518487921105" TEXT="Problem: wir haben nur einen Typparameter"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1447567187010" ID="ID_1008538054" MODIFIED="1518487921105" TEXT="später...">
|
|
<icon BUILTIN="bell"/>
|
|
<node CREATED="1447567193361" ID="ID_661445245" MODIFIED="1518487921105" TEXT="preliminary optimization">
|
|
<icon BUILTIN="ksmiletris"/>
|
|
<node CREATED="1447566743461" ID="ID_1971297499" LINK="http://issues.lumiera.org/ticket/973" MODIFIED="1518487921105">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
Probleme mit der Compile-Reihenfolge  <font color="#d41807">#973</font>
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1477665256799" ID="ID_685276209" MODIFIED="1518487921106" TEXT="Ärger">
|
|
<icon BUILTIN="smily_bad"/>
|
|
<node CREATED="1477665276421" ID="ID_714740974" MODIFIED="1518487921106" TEXT="dlclose #1034">
|
|
<node CREATED="1477665304137" ID="ID_65862146" MODIFIED="1518487921106" TEXT="Assertion, da Library nicht entladen werden kann">
|
|
<icon BUILTIN="info"/>
|
|
</node>
|
|
<node CREATED="1477665320934" ID="ID_1841226938" MODIFIED="1518487921106" TEXT="LD_DEBUG=all NOBUG_LOG=pluginloader_dbg:TRACE 2>&1 target/lumiera | c++filt >weia">
|
|
<node CREATED="1477665330317" ID="ID_1760958407" MODIFIED="1518487921106" TEXT="weitere Untersuchung notwendig....">
|
|
<icon BUILTIN="bell"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#990000" CREATED="1446356368070" ID="ID_768449868" MODIFIED="1522025908991" TEXT="Au Au">
|
|
<icon BUILTIN="broken-line"/>
|
|
<node CREATED="1521963965164" ID="ID_1027875371" MODIFIED="1522030106272" TEXT="multithreaded-Test scheitert">
|
|
<node CREATED="1522025948980" ID="ID_295336770" MODIFIED="1522025952959" TEXT="3/2018">
|
|
<node COLOR="#338800" CREATED="1521964015114" ID="ID_1116388701" MODIFIED="1525124215506" TEXT="CallQueue_test">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</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="1522026014541" TEXT="Auf mehreren Terminals x-mal starten">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</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="1522026104830" TEXT="erstmals beobachtet unter starker System-Last">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</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ä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="1522030021122" TEXT="ist auch sinnvoll vom Testdesgin her">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</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ß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="1522030090497" TEXT="alle anderen multithreaded-Tests durchgeprüft">
|
|
<richcontent TYPE="NOTE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
alle anderen (mit Ausnahme von BusTerm_test)
|
|
</p>
|
|
<p>
|
|
verwenden globale Variable oder überhaupt keine Objektfelder
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</map>
|