29911 lines
1.3 MiB
29911 lines
1.3 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="1518487921106" STYLE="fork" TEXT="Lumi">
|
|
<font NAME="SansSerif" SIZE="25"/>
|
|
<node CREATED="1434128046296" ID="ID_1900827283" MODIFIED="1518487921038" POSITION="right" TEXT="GUI">
|
|
<font 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="1518487921038" TEXT="konzeptioneller Rahmen">
|
|
<linktarget COLOR="#34dbd3" DESTINATION="ID_1259700796" ENDARROW="Default" ENDINCLINATION="450;232;" 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" 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>
|
|
<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="1518487921041" TEXT="Interfaces öffnen">
|
|
<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 BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1484792679322" ID="ID_426218722" MODIFIED="1518487921041" TEXT="#1047 preliminary definition of GuiNotification facade">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
<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 BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1493753215852" ID="ID_1971120" MODIFIED="1518487921041" TEXT="offen: wie kann man Shutdown implementieren">
|
|
<icon BUILTIN="help"/>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1493753249399" ID="ID_575609638" MODIFIED="1518487921041" TEXT="offen: #1098 hand-Over in UI-Thread">
|
|
<icon BUILTIN="help"/>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1501776210069" ID="ID_228920906" MODIFIED="1518487921041" TEXT="offen: 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="1518487921042" 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="1518487921042" 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" ID="ID_135398487" MODIFIED="1518487921042" 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="1518487921043" 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="1518487921043" 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" ID="ID_1316050570" MODIFIED="1518487921043" 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="1518487921044" 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="1518487921044" 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="1518487921044" 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="1518487921044">
|
|
<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="1518487921046" 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="1518487921046" 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="1518487921046" 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="1518487921047" TEXT="Protokoll zur Kommunikation">
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1484876122960" ID="ID_31825421" MODIFIED="1518487921047" 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;"/>
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
</node>
|
|
<node CREATED="1484876143949" ID="ID_558559630" MODIFIED="1518487921047" TEXT="muß Nachrichten explizit übergeben"/>
|
|
<node CREATED="1484876154492" ID="ID_669377427" MODIFIED="1518487921047" TEXT="an Locking denken"/>
|
|
</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="#ff0000" CREATED="1502411488645" ID="ID_1875294174" MODIFIED="1518487921048" TEXT="Fehler">
|
|
<linktarget COLOR="#9c7088" DESTINATION="ID_1875294174" ENDARROW="Default" ENDINCLINATION="1260;-183;" ID="Arrow_ID_245240331" SOURCE="ID_1177399909" STARTARROW="None" STARTINCLINATION="285;0;"/>
|
|
<icon BUILTIN="flag-pink"/>
|
|
<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="1518487921048" TEXT="loggen, Fehlerlog-Widget, weitermachen"/>
|
|
<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="1518487921048" TEXT="Notify harmlos"/>
|
|
<node CREATED="1502411612700" ID="ID_1951009863" MODIFIED="1518487921048" TEXT="Diff darf nicht scheitern">
|
|
<node CREATED="1503670572980" ID="ID_599888416" MODIFIED="1518487921048" TEXT="einzige Ausnahme">
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
<node CREATED="1503670585794" ID="ID_1806860698" MODIFIED="1518487921048" 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" ID="ID_285166941" MODIFIED="1518487921048" 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 CREATED="1504203497529" ID="ID_1933339677" MODIFIED="1518487921049" TEXT="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>
|
|
<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="1518487921050" TEXT="erfordert Festlegung der Natur der Diff Message">
|
|
<arrowlink COLOR="#bdbad3" DESTINATION="ID_89098030" ENDARROW="Default" ENDINCLINATION="821;-1406;" 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="1518487921050" 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" ID="ID_286774751" MODIFIED="1518487921050" TEXT="Diskussion">
|
|
<node CREATED="1502402022580" ID="ID_1661331763" MODIFIED="1518487921050" 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" ID="ID_905919540" MODIFIED="1518487921050" TEXT="Con">
|
|
<node CREATED="1502402075413" ID="ID_913770531" MODIFIED="1518487921050" TEXT="Komplexität"/>
|
|
<node CREATED="1502402086268" ID="ID_380041258" MODIFIED="1518487921050" 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" ID="ID_1233670694" MODIFIED="1518487921051" 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" ID="ID_510901772" MODIFIED="1518487921051" 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" ID="ID_577811618" MODIFIED="1518487921051" 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 BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1493753249399" HGAP="75" ID="ID_1023343635" MODIFIED="1518487921052" 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="#b27176" DESTINATION="ID_1023343635" ENDARROW="Default" ENDINCLINATION="21;233;" ID="Arrow_ID_1372135725" SOURCE="ID_995145542" STARTARROW="None" STARTINCLINATION="237;0;"/>
|
|
<icon BUILTIN="pencil"/>
|
|
<node CREATED="1501804992301" ID="ID_1647263044" MODIFIED="1518487921052" TEXT="schedule event"/>
|
|
<node CREATED="1501804985286" ID="ID_320977714" MODIFIED="1518487921052" 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 BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1501850632636" ID="ID_431682708" MODIFIED="1518487921052" 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="1518487921053" 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="1518487921054" 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 BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1502404797300" ID="ID_1177399909" MODIFIED="1518487921054" TEXT="Exceptions fangen">
|
|
<arrowlink COLOR="#9c7088" DESTINATION="ID_1875294174" ENDARROW="Default" ENDINCLINATION="1260;-183;" ID="Arrow_ID_245240331" STARTARROW="None" STARTINCLINATION="285;0;"/>
|
|
<icon BUILTIN="flag-pink"/>
|
|
</node>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1501939174506" ID="ID_504999068" MODIFIED="1518487921054" TEXT="in NotificationService integrieren">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
<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="1518487921054" TEXT="Aufrufe in Lamdas verpacken"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1502375294344" ID="ID_640199096" MODIFIED="1518487921054" 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="1518487921054" TEXT="den neuen Dispatcher nutzen?">
|
|
<icon BUILTIN="help"/>
|
|
<node CREATED="1502390340193" ID="ID_1491902996" MODIFIED="1518487921054" 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" ID="ID_1454460947" MODIFIED="1518487921054" 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="1518487921054" 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="1518487921054" 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="1518487921054" 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;"/>
|
|
<icon BUILTIN="flag-yellow"/>
|
|
<node CREATED="1501939235834" ID="ID_1160414548" MODIFIED="1518487921054" TEXT="Menü-Eintrag"/>
|
|
<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="1518487921054" TEXT="ein Widget im UI reagiert">
|
|
<node CREATED="1504200793444" ID="ID_340215113" MODIFIED="1518487921054" TEXT="mißbrauche InfoBox">
|
|
<arrowlink COLOR="#f5dd67" DESTINATION="ID_19179662" ENDARROW="Default" ENDINCLINATION="743;-1563;" ID="Arrow_ID_1195014928" STARTARROW="None" STARTINCLINATION="-452;605;"/>
|
|
<icon BUILTIN="idea"/>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1504200974955" ID="ID_1182589184" MODIFIED="1518487921054" TEXT="neues Dock">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
</node>
|
|
<node CREATED="1504203667130" ID="ID_1745777873" MODIFIED="1518487921054" 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;"/>
|
|
<icon BUILTIN="pencil"/>
|
|
<node CREATED="1504203746239" ID="ID_697660682" MODIFIED="1518487921054" TEXT="Scroll-Pane">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node CREATED="1504203749815" ID="ID_1057483680" MODIFIED="1518487921054" 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" ID="ID_653669269" MODIFIED="1518487921054" 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="1518487921054" 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 CREATED="1504203754175" ID="ID_580465154" MODIFIED="1518487921054" TEXT="Fehler-Level erkennen"/>
|
|
</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="1518487921055" 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="#fdfdcf" COLOR="#ff0000" CREATED="1484797911392" ID="ID_286857196" MODIFIED="1518487921055" 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;"/>
|
|
<icon BUILTIN="yes"/>
|
|
</node>
|
|
<node CREATED="1502410904331" ID="ID_995145542" MODIFIED="1518487921055" TEXT="brauche Dispatch in UI event-Thread">
|
|
<arrowlink COLOR="#b27176" 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="1518487921055" 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="1518487921055" 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="1518487921055" 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="1518487921055" 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 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="1518487921055" 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" ID="ID_1800184805" MODIFIED="1518487921055" 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="1518487921055" 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" ID="ID_1297670007" MODIFIED="1518487921055" 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="1518487921056" 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" ID="ID_973272722" MODIFIED="1518487921056" 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" ID="ID_503299515" MODIFIED="1518487921056" 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 CREATED="1495218699712" ID="ID_1332523704" MODIFIED="1518487921056" TEXT="den Code aus Gtk::Main in unsere Codebasis übernehmen">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node CREATED="1495218714230" ID="ID_1371091843" MODIFIED="1518487921056" 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="1518487921056" 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="1518487921056" 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="1518487921056" TEXT="Gtk::Main funktioniert ohne"/>
|
|
<node CREATED="1493763356907" ID="ID_981398529" MODIFIED="1518487921056" 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="1518487921056" 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="1518487921056" 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" FOLDED="true" ID="ID_1515469097" MODIFIED="1518487921057">
|
|
<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="1482464609118" TEXT="Vorsicht beim Schließen der Session">
|
|
<arrowlink COLOR="#5a97df" DESTINATION="ID_1378897740" ENDARROW="Default" ENDINCLINATION="9540;0;" ID="Arrow_ID_1446486242" STARTARROW="None" STARTINCLINATION="9540;0;"/>
|
|
<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="1518487921058" 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="1519355250156">
|
|
<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="-940;1675;" ID="Arrow_ID_1617518648" SOURCE="ID_1479669922" STARTARROW="None" STARTINCLINATION="3436;-1136;"/>
|
|
</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="1518487921059" TEXT="siehe Info zum CssProvider">
|
|
<arrowlink COLOR="#a9b4c1" DESTINATION="ID_1810760662" ENDARROW="Default" ENDINCLINATION="1600;-25;" ID="Arrow_ID_1610122569" STARTARROW="None" STARTINCLINATION="-227;-646;"/>
|
|
</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="1518487921060" TEXT="#1026 cleanup PanelManager">
|
|
<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>
|
|
<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="1518487921060" 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 BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1485457021805" ID="ID_1476863246" MODIFIED="1518487921060" 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="1518487921062" TEXT="TODO Panel-Aktionen">
|
|
<arrowlink DESTINATION="ID_1176492517" ENDARROW="Default" ENDINCLINATION="14;-313;" ID="Arrow_ID_1083220093" STARTARROW="None" STARTINCLINATION="632;-20;"/>
|
|
<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="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="1518487921063" TEXT="Addressierung" VSHIFT="27">
|
|
<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" FOLDED="true" HGAP="318" ID="ID_1448696607" MODIFIED="1519356681726" 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="1506181143851" 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="1506180752100" 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="1506180752103" 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="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="1518487921063" TEXT="lokal definierte Zugriffsfunktionen"/>
|
|
<node CREATED="1504458229743" ID="ID_1174387567" MODIFIED="1518487921063" TEXT="ENUM und lokaler Switch"/>
|
|
</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="1518742955375" 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" FOLDED="true" HGAP="78" ID="ID_444535530" MODIFIED="1518840304236" 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="1518487921064" 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="1518487921064" TEXT="wer bin "ich"?">
|
|
<icon BUILTIN="help"/>
|
|
<node CREATED="1507939956606" ID="ID_406843936" MODIFIED="1518487921064" TEXT="was ist gegeben?">
|
|
<icon BUILTIN="help"/>
|
|
<node CREATED="1508017024459" ID="ID_604601896" MODIFIED="1518487921064" TEXT="stets ein kompletter Zugangs-Pfad">
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1507939970349" ID="ID_714349147" MODIFIED="1518487921064" 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="1518487921064" 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" ID="ID_250033067" MODIFIED="1518487921064" TEXT="zwei Lösungsansätze">
|
|
<node CREATED="1508016575359" ID="ID_1494737189" MODIFIED="1518487921064" 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" ID="ID_1861393889" MODIFIED="1518487921064" 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="1518487921064" TEXT="was gilt als "Kind"?">
|
|
<icon BUILTIN="help"/>
|
|
<node CREATED="1507940046234" ID="ID_577613088" MODIFIED="1518487921064">
|
|
<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" ID="ID_896661508" MODIFIED="1518487921064" 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" ID="ID_881948528" MODIFIED="1518487921064" 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" ID="ID_1519289713" MODIFIED="1518487921064" TEXT="gar keine">
|
|
<node CREATED="1508017203419" ID="ID_1168589916" MODIFIED="1518487921064" TEXT="generische Programmierung!">
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1508017409096" ID="ID_1088456751" MODIFIED="1518487921064" 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="1518487921064">
|
|
<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="1518487921064" 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="1518487921064" 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="1518487921064" 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="1518487921064" 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="1518487921064" 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="1506723726199" 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" FOLDED="true" ID="ID_291609200" MODIFIED="1514330348055" TEXT="Lösungen">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1506301476836" ID="ID_1339982909" MODIFIED="1506302323712" 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" ID="ID_573792630" MODIFIED="1506301767802" 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" ID="ID_1626810109" MODIFIED="1506301705897" TEXT="Compiler optimiert Tupel weg">
|
|
<node CREATED="1506301725107" ID="ID_1409951481" MODIFIED="1506301731668" TEXT="Tupel von Referenzen"/>
|
|
<node CREATED="1506301713285" ID="ID_703461640" MODIFIED="1506301719136" TEXT="GCC und Clang"/>
|
|
<node CREATED="1506301719660" ID="ID_1581101665" MODIFIED="1506301722999" TEXT="in Release-Builds"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1506301773341" ID="ID_515001314" MODIFIED="1506301831038" TEXT="Entscheidung">
|
|
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
|
|
<node CREATED="1506301780644" ID="ID_143930610" MODIFIED="1506301822914" 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" ID="ID_52512330" MODIFIED="1506723706338" 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="1518487921064" 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="1518487921065" TEXT="Komponenten-Zugriffe in ViewLocator">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1515891256616" ID="ID_1103868933" MODIFIED="1518487921065" TEXT="Baum-Abstraktion im Navigator">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1517508494036" ID="ID_490078637" MODIFIED="1518487921065" TEXT="LocationSolver integrieren">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
</node>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1506181802699" ID="ID_582767851" MODIFIED="1518487921065" TEXT="Test-Setup">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1508537003861" FOLDED="true" ID="ID_846599209" MODIFIED="1518487921065" TEXT="Semantik">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1508537010868" ID="ID_484491629" MODIFIED="1508537050161">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
welche Operationen
|
|
</p>
|
|
<p>
|
|
sind wirklich notwendig
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="help"/>
|
|
</node>
|
|
<node CREATED="1508537057661" ID="ID_1582824657" MODIFIED="1509329323916" 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" ID="ID_1262448971" MODIFIED="1509323429562" 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="#eee5c3" COLOR="#990000" CREATED="1509323573047" ID="ID_263907664" MODIFIED="1515209542011" TEXT="covern: meint total">
|
|
<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="1509323522485" 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="1509323862956" 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="1515209531011" 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" ID="ID_548549576" MODIFIED="1515209423835" 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="1514329008039" 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="1514329039931" 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="1514329085564" 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="#eee5c3" COLOR="#990000" CREATED="1508540055241" ID="ID_565736574" MODIFIED="1518487921065" TEXT="Konventionen">
|
|
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
|
|
<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="1518487921065" 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="1515120942582" 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="1518487921065" 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" FOLDED="true" ID="ID_1044429952" MODIFIED="1518761923307" TEXT="cover">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node COLOR="#338800" CREATED="1508540823475" ID="ID_793410656" MODIFIED="1518487921065" 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="1518487921065" 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" ID="ID_609074970" MODIFIED="1518487921065" 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" FOLDED="true" ID="ID_930376282" MODIFIED="1518487921065" 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="1514328782131" TEXT="IterExplorer nutzen?">
|
|
<icon BUILTIN="button_cancel"/>
|
|
<node CREATED="1509481841493" ID="ID_125946562" MODIFIED="1512927037803" 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" ID="ID_1335669968" MODIFIED="1512927037803" 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" ID="ID_1796930306" MODIFIED="1512927037803" 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" ID="ID_156318392" MODIFIED="1512927037802" 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="1514328717684" ID="ID_137835978" MODIFIED="1514328857229" 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;"/>
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1514328733272" ID="ID_1367581404" MODIFIED="1514328740811" TEXT="monadisierter Pipeline-Builder"/>
|
|
<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>
|
|
</node>
|
|
<node CREATED="1509495634766" FOLDED="true" ID="ID_422767906" MODIFIED="1518487921065" TEXT="Zusammenspiel">
|
|
<icon BUILTIN="info"/>
|
|
<node CREATED="1509491594115" ID="ID_214903834" MODIFIED="1509491635369" 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" ID="ID_167277646" MODIFIED="1509495655428" 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" ID="ID_265529571" MODIFIED="1509500193239" TEXT="wie wird die Lösung gebildet?">
|
|
<icon BUILTIN="help"/>
|
|
<node CREATED="1509500778214" ID="ID_205493443" MODIFIED="1512927037802" 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" ID="ID_1192819328" MODIFIED="1509500900990" 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" ID="ID_566603059" MODIFIED="1512927037802" 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" HGAP="73" ID="ID_1779465547" MODIFIED="1509583188142" 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" HGAP="39" ID="ID_501629316" MODIFIED="1512927037801" 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" ID="ID_1294975373" MODIFIED="1512927037818" 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" ID="ID_956022061" MODIFIED="1512927037836" TEXT="ja">
|
|
<node CREATED="1509581675560" ID="ID_17975640" MODIFIED="1514742893143" TEXT="depth+1">
|
|
<icon BUILTIN="full-1"/>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#e1e1b6" CREATED="1509581999829" ID="ID_195154621" MODIFIED="1514742890504" 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" ID="ID_1594605893" MODIFIED="1513560515743" 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" ID="ID_593473991" MODIFIED="1512927037835" TEXT="nein">
|
|
<node CREATED="1509582401976" ID="ID_1742427454" MODIFIED="1514743247011" TEXT="Zweig widerlegt">
|
|
<arrowlink COLOR="#0199e1" DESTINATION="ID_574087782" ENDARROW="Default" ENDINCLINATION="-11;18;" ID="Arrow_ID_514933005" STARTARROW="None" STARTINCLINATION="115;15;"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1509582914509" ID="ID_1359435447" MODIFIED="1509915433218" TEXT="yield">
|
|
<linktarget COLOR="#2648cc" DESTINATION="ID_1359435447" ENDARROW="Default" ENDINCLINATION="273;37;" ID="Arrow_ID_1082519062" SOURCE="ID_171156109" STARTARROW="None" STARTINCLINATION="361;48;"/>
|
|
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
|
|
</node>
|
|
<node CREATED="1509582922140" ID="ID_1687957458" MODIFIED="1510272742518">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
Puffer ab Tiefe
|
|
</p>
|
|
<p>
|
|
vom Pfad initialisieren
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<arrowlink COLOR="#172fd9" DESTINATION="ID_501629316" ENDARROW="Default" ENDINCLINATION="25;50;" ID="Arrow_ID_901660904" STARTARROW="None" STARTINCLINATION="8;-10;"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1509583164196" FOLDED="true" HGAP="45" ID="ID_1054378844" MODIFIED="1513477003399" 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" ID="ID_1654046432" MODIFIED="1512927037801" 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" ID="ID_76982043" MODIFIED="1512927037818" 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" ID="ID_1318889619" MODIFIED="1512927037817" 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="1512927037800" TEXT="Ansatz">
|
|
<node CREATED="1510266817500" ID="ID_1438980093" MODIFIED="1512927037817" TEXT="3 Layer verwenden">
|
|
<icon BUILTIN="idea"/>
|
|
<node CREATED="1510266845712" ID="ID_1058798631" MODIFIED="1512927037835" 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" ID="ID_1928917413" MODIFIED="1512927037834" 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" ID="ID_858567040" MODIFIED="1512927037834" 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" FOLDED="true" ID="ID_1499495468" MODIFIED="1520721823019" 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" ID="ID_196604339" MODIFIED="1512927037834" 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" ID="ID_433622803" MODIFIED="1512927037858" 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" ID="ID_1670214510" MODIFIED="1512927037857" 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" ID="ID_672047484" MODIFIED="1512927037856" 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="1512927037833" VSHIFT="42">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
sind Monaden
|
|
</p>
|
|
<p>
|
|
wirklich hilfreich?
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="help"/>
|
|
<node CREATED="1510446351987" ID="ID_1280916101" MODIFIED="1512927037855" TEXT="steile These">
|
|
<node CREATED="1510446304314" ID="ID_628535706" MODIFIED="1510446320689" TEXT="Zustand ist ein Phänomen der wirklichen Welt"/>
|
|
<node CREATED="1510446255552" ID="ID_1911148874" MODIFIED="1510446264587" TEXT="funktionale Sprachen sind kaputt by design"/>
|
|
<node CREATED="1510446265767" ID="ID_1173611125" MODIFIED="1510446275105" TEXT="nur deshalb brauchts dort Monaden"/>
|
|
</node>
|
|
<node CREATED="1510446363306" ID="ID_784523355" MODIFIED="1512927037855" TEXT="trotzdem gerechtfertigt?">
|
|
<node CREATED="1510446371480" ID="ID_507011741" MODIFIED="1510446394065" TEXT="Klarheit"/>
|
|
<node CREATED="1510446394965" ID="ID_1101937943" MODIFIED="1510446398689" TEXT="Trennung"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1510446985581" HGAP="7" ID="ID_1266495962" MODIFIED="1512927037833" 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" ID="ID_139960047" MODIFIED="1512927037855" 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" ID="ID_1016093231" MODIFIED="1512927037855" 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" ID="ID_232445241" MODIFIED="1512927037854" 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" HGAP="17" ID="ID_1160853986" MODIFIED="1513473715007" 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" ID="ID_304955672" MODIFIED="1512927037832" STYLE="fork" TEXT="Baum-Explorer">
|
|
<icon BUILTIN="info"/>
|
|
<node CREATED="1510540409159" ID="ID_1790409069" MODIFIED="1512797263191" TEXT="wiederverwendbarer Baustein"/>
|
|
<node CREATED="1510540682809" ID="ID_1860662906" MODIFIED="1512927037854" 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" ID="ID_494812399" MODIFIED="1512927037854" 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" ID="ID_169601267" MODIFIED="1512927037853" 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" ID="ID_1918069733" MODIFIED="1512927037853" 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" ID="ID_1605100271" MODIFIED="1512927037831" 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" ID="ID_300971395" MODIFIED="1512927037831" 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" ID="ID_667413818" MODIFIED="1513473609732" TEXT="generische Lösung">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1510941425200" ID="ID_1773303405" MODIFIED="1512927037799" 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="1512955806527" TEXT="Builder">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1511054840038" ID="ID_18464349" MODIFIED="1511054851543" 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" ID="ID_1806674229" MODIFIED="1512927037814" 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="1514827423467" TEXT="TreeExplorer">
|
|
<linktarget COLOR="#8ad3a5" DESTINATION="ID_845080696" ENDARROW="Default" ENDINCLINATION="-230;134;" ID="Arrow_ID_253437970" SOURCE="ID_137835978" STARTARROW="None" STARTINCLINATION="-387;0;"/>
|
|
<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;"/>
|
|
<icon BUILTIN="button_ok"/>
|
|
<node COLOR="#338800" CREATED="1511571446467" FOLDED="true" ID="ID_1778455053" MODIFIED="1513447893872" TEXT="expand-Operation">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node COLOR="#338800" CREATED="1511227813712" ID="ID_1961708112" MODIFIED="1512927037831" 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" ID="ID_1021264891" MODIFIED="1512927037831" TEXT="Fall-2 ">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1511227870346" ID="ID_707253800" MODIFIED="1511228200055" TEXT="verzahnte Implementierung"/>
|
|
<node CREATED="1511227975028" ID="ID_1383529442" MODIFIED="1512927037852" 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" ID="ID_723642910" MODIFIED="1512927037852" 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" HGAP="26" ID="ID_1701796180" MODIFIED="1512927037830" 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" ID="ID_1853550246" MODIFIED="1512927037852" 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" ID="ID_1409331699" MODIFIED="1512927037851" 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" ID="ID_1384978479" MODIFIED="1512927037851" 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" HGAP="-20" ID="ID_189622415" MODIFIED="1512927037829" 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="1512955519615" TEXT="transform-Operation">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1511827249561" ID="ID_794510302" MODIFIED="1511827265634" TEXT="strikt nach Dekorator-Pattern"/>
|
|
<node CREATED="1511827337686" ID="ID_1214119488" MODIFIED="1512927037829" 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" ID="ID_244629150" MODIFIED="1512927037829" 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" ID="ID_446486349" MODIFIED="1512927037850" 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" ID="ID_295934398" MODIFIED="1512927037828" TEXT="Dekorator-Ansatz">
|
|
<icon BUILTIN="forward"/>
|
|
<node CREATED="1512262147649" ID="ID_1592901896" MODIFIED="1512927037849" 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" ID="ID_1480384220" MODIFIED="1512927037849" 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" ID="ID_667088953" MODIFIED="1512927037828" TEXT="Konstrukt">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node COLOR="#338800" CREATED="1511919003054" ID="ID_1728459315" MODIFIED="1512927037848" 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" ID="ID_233806852" MODIFIED="1512927037848" 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" ID="ID_1554412479" MODIFIED="1512927037847" 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="1512955524165" TEXT="filter-Operation">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1511837285306" ID="ID_928417859" MODIFIED="1512927037827" 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" ID="ID_1963360740" MODIFIED="1512927037827" 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" ID="ID_673112014" MODIFIED="1512927037827" 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" ID="ID_1956085441" MODIFIED="1512927037847" 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="1514827404540" 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" ID="ID_690243302" MODIFIED="1514827185063" 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="1512955526490" 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" ID="ID_396632754" MODIFIED="1512927037826" 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" ID="ID_706634236" MODIFIED="1512927037826" 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" ID="ID_1993110543" MODIFIED="1512927037847" 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" ID="ID_1699122692" MODIFIED="1512951912225" 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" ID="ID_488089119" MODIFIED="1512952023972" 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="1514081201770" TEXT="Zusammenspiel">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1512844805995" ID="ID_927486947" MODIFIED="1512927037825" 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" ID="ID_134602126" MODIFIED="1512927037846" 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" HGAP="38" ID="ID_1189860266" MODIFIED="1512927037846" 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" ID="ID_1808232294" MODIFIED="1512927037845" 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" HGAP="14" ID="ID_1713522306" MODIFIED="1512927037845" 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" ID="ID_263549307" MODIFIED="1513294184112" 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" ID="ID_1803494848" MODIFIED="1513293899233" 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" ID="ID_277229668" MODIFIED="1513293895109" TEXT="Wirkung unklar">
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
<node CREATED="1513293901848" ID="ID_1292422466" MODIFIED="1513293907323" 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" ID="ID_308120385" MODIFIED="1513293913866" 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" ID="ID_618831184" MODIFIED="1513395835330" 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" ID="ID_803702364" MODIFIED="1513395887860" 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" ID="ID_1622086178" MODIFIED="1513395664660" 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" HGAP="-59" ID="ID_992596886" MODIFIED="1513395898750" 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" ID="ID_1752199055" MODIFIED="1513401371843" 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" ID="ID_1239682661" MODIFIED="1513447946498" 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" ID="ID_1345517957" MODIFIED="1513447997648" 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" ID="ID_804459643" MODIFIED="1513448144858" 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" ID="ID_292438102" MODIFIED="1514081144696" 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="1513473563423" TEXT="asIterSource">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1512621242778" ID="ID_695969017" MODIFIED="1512927037824" 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" ID="ID_1388034155" MODIFIED="1512927037843" 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" ID="ID_1452751365" MODIFIED="1512927037843" 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" ID="ID_1665958887" MODIFIED="1512927037843" 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" HGAP="21" ID="ID_787592346" MODIFIED="1512927037842" 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" ID="ID_1611878074" MODIFIED="1512927037823" TEXT="Probleme">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1512621202688" ID="ID_57740660" MODIFIED="1512927037841" 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" ID="ID_701320194" MODIFIED="1512927037839" 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" ID="ID_1415286168" MODIFIED="1512927037839" 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="1513473590357" 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" ID="ID_853537387" MODIFIED="1512927037823" 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" ID="ID_1251747225" MODIFIED="1512927037838">
|
|
<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" ID="ID_1625666992" MODIFIED="1513473577494" 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="1514827426934" TEXT="TreeExplorer_test">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node COLOR="#338800" CREATED="1510969031378" ID="ID_1678287752" MODIFIED="1512927037810" 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" ID="ID_776471136" MODIFIED="1512927037822" 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" ID="ID_1298407683" MODIFIED="1512955467937" 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" ID="ID_942570698" MODIFIED="1512927037822" 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" ID="ID_1821706302" MODIFIED="1512927037821" 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" ID="ID_1769405758" MODIFIED="1512927037838" 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" ID="ID_358406634" MODIFIED="1512927037809" 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" ID="ID_1099744034" MODIFIED="1512927037837" 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" ID="ID_1717235881" MODIFIED="1512927037820" 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" ID="ID_722056043" MODIFIED="1512927037808" 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" ID="ID_1718741335" MODIFIED="1512927037808" 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" ID="ID_917494688" MODIFIED="1512955637837" 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" ID="ID_54165230" MODIFIED="1512927037807" 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" ID="ID_306902168" MODIFIED="1514081187635" 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" ID="ID_1696559217" MODIFIED="1514827174722" 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" ID="ID_1327871737" MODIFIED="1512952095270" 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" HGAP="71" ID="ID_568101334" MODIFIED="1512955609419" 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" ID="ID_1282921475" MODIFIED="1512952993489" 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" ID="ID_93632445" MODIFIED="1512953732408" TEXT="broken sind...">
|
|
<icon BUILTIN="info"/>
|
|
<node CREATED="1512953663356" ID="ID_587022650" MODIFIED="1512953666295" 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" ID="ID_1880760198" MODIFIED="1512953677102" 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" ID="ID_608070908" MODIFIED="1512953686341" 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" ID="ID_690443382" MODIFIED="1512953694636" 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" HGAP="21" ID="ID_227944051" MODIFIED="1512955073221" 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" ID="ID_842384656" MODIFIED="1513473315193" TEXT="demonstrate_LayeredEvaluation();">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1513035990902" ID="ID_1647713519" MODIFIED="1513036279025" 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" ID="ID_1736020922" MODIFIED="1513036282015" 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" ID="ID_1614652691" MODIFIED="1513036296092" 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" ID="ID_1862649545" MODIFIED="1513036572456" 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" ID="ID_1967188076" MODIFIED="1513129995231" 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" ID="ID_1217476327" MODIFIED="1513131255210" 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" ID="ID_973791239" MODIFIED="1513206660094" 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" ID="ID_1422148890" MODIFIED="1513206876892" 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" HGAP="-37" ID="ID_570463763" MODIFIED="1513473371054" 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" ID="ID_1963772553" MODIFIED="1513218620609" 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" ID="ID_645074355" MODIFIED="1513476724675" 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" ID="ID_530629075" MODIFIED="1513473441747" 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" ID="ID_1522104923" MODIFIED="1513283980027" 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" ID="ID_372321627" MODIFIED="1513286350306" 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" ID="ID_1013175212" MODIFIED="1513473250590" 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" ID="ID_1034289731" MODIFIED="1513473286115" 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" ID="ID_1181955496" MODIFIED="1513473186627" 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" FOLDED="true" ID="ID_596422747" MODIFIED="1518487921065" 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;"/>
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1510941655360" ID="ID_1359727169" MODIFIED="1514292297209" TEXT="verwendet TreeExplorer">
|
|
<arrowlink COLOR="#585e9d" DESTINATION="ID_845080696" ENDARROW="Default" ENDINCLINATION="-23;161;" ID="Arrow_ID_402051988" STARTARROW="None" STARTINCLINATION="138;6;"/>
|
|
<icon BUILTIN="info"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1510941661615" ID="ID_463290050" MODIFIED="1514292291295" TEXT="verpackt in IterSource">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1513561602173" FOLDED="true" HGAP="180" ID="ID_760843174" MODIFIED="1514087033060" TEXT="Design" VSHIFT="29">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1513560607636" ID="ID_774099115" MODIFIED="1513561433218" 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" ID="ID_1500554436" MODIFIED="1514087030296" 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" ID="ID_1617286796" MODIFIED="1513561454621" 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" ID="ID_600604579" MODIFIED="1513561495016" 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="1513985143504" 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" ID="ID_671830446" MODIFIED="1513561714093" 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" ID="ID_1952968226" MODIFIED="1513562009098" TEXT="zuzüglich konkretem Kind-Iterator">
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1513564476303" FOLDED="true" ID="ID_718816032" MODIFIED="1513978342757" 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" ID="ID_1668202627" MODIFIED="1513859311404" 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" ID="ID_1667428111" MODIFIED="1513859631869">
|
|
<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" ID="ID_102689213" MODIFIED="1513864143872" 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" ID="ID_1035755808" MODIFIED="1513864175907" 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" ID="ID_1644294386" MODIFIED="1513978467119" 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" ID="ID_1909411263" MODIFIED="1513889155537" 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" ID="ID_572634197" MODIFIED="1513890498003" 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" ID="ID_972377662" MODIFIED="1513891259492" 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="1513978330695" TEXT="Diskussion" VSHIFT="10">
|
|
<icon BUILTIN="forward"/>
|
|
<node CREATED="1513891660578" ID="ID_1557026848" MODIFIED="1513891665718" 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" ID="ID_1279255374" MODIFIED="1513891750178" 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" ID="ID_992579634" MODIFIED="1513891806571" 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" ID="ID_1996211433" MODIFIED="1513893313192" TEXT="Nav und IterSource verschmelzen">
|
|
<icon BUILTIN="idea"/>
|
|
<node CREATED="1513893027482" ID="ID_1061106814" MODIFIED="1513893042316" TEXT="minimales Design"/>
|
|
<node CREATED="1513893243100" ID="ID_622400006" MODIFIED="1513893248576" 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" ID="ID_1710637822" MODIFIED="1513961369447" 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" ID="ID_588599089" MODIFIED="1513893854354">
|
|
<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" ID="ID_1705515857" MODIFIED="1513894303961" 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" HGAP="19" ID="ID_1657702066" MODIFIED="1513894127494" 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" HGAP="101" ID="ID_66715685" MODIFIED="1513961650705" 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" ID="ID_1159003711" MODIFIED="1513961771032" 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" ID="ID_96700718" MODIFIED="1513961967328" 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" ID="ID_328900065" MODIFIED="1513962029692" 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" ID="ID_1014293898" MODIFIED="1514292136651" TEXT="Implementierung">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node COLOR="#338800" CREATED="1513962702097" FOLDED="true" ID="ID_1829231358" MODIFIED="1514292154178" 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" ID="ID_558045889" MODIFIED="1513966652550" 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" ID="ID_1038653404" MODIFIED="1513966664964" 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" ID="ID_458778699" MODIFIED="1513980959957" 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" HGAP="29" ID="ID_1701586789" MODIFIED="1514086578389" 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="1514086581208" 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="1514292157689" TEXT="Integration mit TreeExplorer">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1513986032290" ID="ID_1427647343" MODIFIED="1513986048710" 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" ID="ID_1794003959" MODIFIED="1513986083318" 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" ID="ID_787175675" MODIFIED="1513988732759" 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" HGAP="27" ID="ID_1242119956" MODIFIED="1514086542637" 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="1514292160249" 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" ID="ID_1077665588" MODIFIED="1514292020131" 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" ID="ID_1953942552" MODIFIED="1514257145970" 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" ID="ID_551533507" MODIFIED="1514291893282" 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" ID="ID_1328105733" MODIFIED="1514291800465" 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="1518487921065" 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="1518487921065" 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" ID="ID_1352163554" MODIFIED="1514292016084" 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" HGAP="37" ID="ID_1286151530" MODIFIED="1514292007670" 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" ID="ID_732935391" MODIFIED="1514291998797" 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="1518761882602" TEXT="Zustands-Layer" VSHIFT="1">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node COLOR="#338800" CREATED="1514333524247" ID="ID_1136271037" MODIFIED="1514908803527" 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" ID="ID_256774095" MODIFIED="1514333761955" 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" ID="ID_1224653593" MODIFIED="1515037565965" TEXT="für jedes Element...">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1514338471073" ID="ID_1000829527" MODIFIED="1514908912290" STYLE="bubble" TEXT="target[depth] ==?">
|
|
<edge COLOR="#5b5ea6"/>
|
|
<node CREATED="1514338493135" ID="ID_1691944473" MODIFIED="1514908827230" 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" ID="ID_1940839257" MODIFIED="1514908827232" 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="1518761875258" 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" ID="ID_831358447" MODIFIED="1514847725306" TEXT="Struktur">
|
|
<node CREATED="1514847726158" ID="ID_460639525" MODIFIED="1514847735617" 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" ID="ID_1778000574" MODIFIED="1514847809471" 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" ID="ID_198877050" MODIFIED="1514847846314" 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" ID="ID_1457973741" MODIFIED="1514897999005" 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" ID="ID_1235716633" MODIFIED="1515034320114" 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" ID="ID_1126804251" MODIFIED="1514897809479" 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" ID="ID_20763657" MODIFIED="1515037569236" 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" ID="ID_1697551113" MODIFIED="1514908658267" 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" ID="ID_989083906" MODIFIED="1514942318329" TEXT="Problem der partiellen Covfefe">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1514746268280" ID="ID_1650861625" MODIFIED="1514746277434" 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" ID="ID_1334730598" MODIFIED="1514747380472" 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" ID="ID_1928999977" MODIFIED="1514897708424" 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="1518487921065" 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" ID="ID_1992822141" MODIFIED="1515034520605" 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="1515031550657" 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="1518487921065" TEXT="Integration" VSHIFT="10">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node COLOR="#338800" CREATED="1514829220907" FOLDED="true" ID="ID_1488508113" MODIFIED="1515206164636" 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="1515034463168" 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="1518052018521" 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="1518052003596" 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="1515206150653" 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="1515206133192" 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" ID="ID_174527898" MODIFIED="1515037521605" 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="1518761908904" 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" ID="ID_1133433583" MODIFIED="1518487921065" 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" HGAP="35" ID="ID_1362494392" MODIFIED="1518487921065" 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" ID="ID_1637267494" MODIFIED="1518487921065" 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" ID="ID_424458820" MODIFIED="1518487921065" 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" ID="ID_224432926" MODIFIED="1518487921065" 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="1518752274910">
|
|
<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" ID="ID_946875811" MODIFIED="1518487921065" TEXT="Scheitern">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1514329465117" ID="ID_1304144230" MODIFIED="1518487921065" 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" ID="ID_815146070" MODIFIED="1518487921066" 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" ID="ID_126260279" MODIFIED="1518487921066" 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" ID="ID_191493714" MODIFIED="1518487921066" 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="1518487921066" 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="1518487921066" 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="1518487921066" 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="1515460223240" 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" FOLDED="true" ID="ID_506584428" MODIFIED="1518487921066" 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="1518487921066">
|
|
<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="1518487921066" 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="1518487921066" 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="1518487921066" TEXT="ViewSpec-DSL">
|
|
<arrowlink COLOR="#b45c5a" DESTINATION="ID_686917529" ENDARROW="Default" ENDINCLINATION="-468;-196;" ID="Arrow_ID_1955094318" STARTARROW="None" STARTINCLINATION="360;85;"/>
|
|
<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>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1506181855132" ID="ID_787628963" MODIFIED="1518487921066" TEXT="ViewSpec">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1506181868898" ID="ID_1852393086" MODIFIED="1518487921066" TEXT="Resolver">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
<node CREATED="1515634532968" ID="ID_1968327718" MODIFIED="1518487921066" TEXT="Abrufen der UI-Coord triggert Resolver">
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1515631590595" ID="ID_1454085887" MODIFIED="1518487921066" TEXT="wie mit ViewLocator-Service verdrahten?">
|
|
<arrowlink COLOR="#614483" DESTINATION="ID_1252372720" ENDARROW="Default" ENDINCLINATION="-106;0;" ID="Arrow_ID_1759099248" STARTARROW="Default" STARTINCLINATION="-276;-13;"/>
|
|
<icon BUILTIN="help"/>
|
|
</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 BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1515979648475" ID="ID_350272872" MODIFIED="1518487921066" TEXT="Funktionsweise der "Resolution" klären">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
<node CREATED="1515980158112" ID="ID_1744041635" MODIFIED="1518487921067" TEXT="der Reihe nach prüfen"/>
|
|
<node COLOR="#338800" CREATED="1515979664353" ID="ID_1353761382" MODIFIED="1518487921067" 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" ID="ID_397957162" MODIFIED="1518487921067" 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="1518487921067" 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="1518487921067" 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" ID="ID_436584221" MODIFIED="1518487921067" 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 CREATED="1516147992493" HGAP="24" ID="ID_4925227" MODIFIED="1518658156723" TEXT="wie wird das Zielobjekt selber bestimmt?" VSHIFT="-1">
|
|
<icon BUILTIN="help"/>
|
|
<node CREATED="1516148029148" ID="ID_1974346974" MODIFIED="1518487921067" 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" ID="ID_1815243780" MODIFIED="1518487921067" TEXT="Anforderungen">
|
|
<node CREATED="1516148107065" ID="ID_389475040" MODIFIED="1518487921067" TEXT="Name-ID des Elements bestimmbar"/>
|
|
<node CREATED="1516148118064" ID="ID_541058997" MODIFIED="1518487921067" TEXT="Coverage feststellbar">
|
|
<node CREATED="1516148128790" ID="ID_739368723" MODIFIED="1518487921067" 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" ID="ID_1439081992" MODIFIED="1518487921067" 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" ID="ID_1903672954" MODIFIED="1518658169070" 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" ID="ID_348346243" MODIFIED="1518487921067" 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 CREATED="1516916455847" ID="ID_1054137561" MODIFIED="1518487921067" TEXT="Ergebnis">
|
|
<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 CREATED="1516916096887" HGAP="32" ID="ID_319974456" MODIFIED="1518487921067" TEXT="zu klären...." VSHIFT="8">
|
|
<node COLOR="#338800" CREATED="1516916105462" ID="ID_1576570507" MODIFIED="1518487921067" 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="1518762143615" TEXT="wie umschiffen wir konkret das Problem mit der Perspektive?">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1517011709672" ID="ID_755188751" MODIFIED="1518487921067" 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" ID="ID_836827160" MODIFIED="1518487921067" TEXT="mehre Möglichkeiten">
|
|
<icon BUILTIN="idea"/>
|
|
<node CREATED="1517012160083" ID="ID_485906589" MODIFIED="1518487921067" 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" ID="ID_1391847315" MODIFIED="1518487921068" 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" ID="ID_273084853" MODIFIED="1518487921068" 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" ID="ID_347958929" MODIFIED="1518487921068" 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" ID="ID_1174371180" MODIFIED="1518487921068" 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" ID="ID_1313395113" MODIFIED="1518487921068" 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" ID="ID_1397586437" MODIFIED="1518487921068" 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="1518762134400" 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" ID="ID_1556601725" MODIFIED="1518487921068" 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="1518835344832" 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" ID="ID_976555378" MODIFIED="1518658960741" 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 BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1516916599018" ID="ID_809925267" MODIFIED="1518487921068" TEXT="wie genau muß die Aufrufschnittstelle aussehen?">
|
|
<icon BUILTIN="help"/>
|
|
<node CREATED="1517084001346" ID="ID_101484926" MODIFIED="1518487921068" TEXT="bekannter Ausgangspunkt">
|
|
<node CREATED="1517083926212" ID="ID_1898315920" MODIFIED="1518487921068" TEXT="location">
|
|
<node CREATED="1517021261097" ID="ID_127451793" MODIFIED="1518487921068" TEXT="wird von der Umwandlung in UICoord getrieben"/>
|
|
<node CREATED="1517084031198" ID="ID_120792277" MODIFIED="1518487921068" 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" ID="ID_919406389" MODIFIED="1518487921068" TEXT="allocation">
|
|
<node CREATED="1517084052451" ID="ID_1249788788" MODIFIED="1518487921068" TEXT="konsumiert Ergebnis von location"/>
|
|
<node CREATED="1517084617710" ID="ID_1812571482" MODIFIED="1518487921068" TEXT="braucht">
|
|
<node CREATED="1517084621814" ID="ID_1163837563" MODIFIED="1518487921068" TEXT="LocationQuery">
|
|
<node CREATED="1517084626949" ID="ID_73780971" MODIFIED="1518487921068" 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" ID="ID_1256502240" MODIFIED="1518487921068" 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" ID="ID_857446188" MODIFIED="1518487921068" TEXT="Problem: Name/Typ">
|
|
<node CREATED="1517085219749" ID="ID_1532208378" MODIFIED="1518487921068" 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" ID="ID_1809382464" MODIFIED="1518487921068" 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" ID="ID_294737534" MODIFIED="1520209798915" 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" ID="ID_799191936" MODIFIED="1518487921068" TEXT="DSL-Anwendung">
|
|
<icon BUILTIN="info"/>
|
|
<node CREATED="1517505438209" ID="ID_1991447613" MODIFIED="1518487921068" TEXT="Schritt 1">
|
|
<icon BUILTIN="full-1"/>
|
|
<node CREATED="1517505518247" ID="ID_1212835768" MODIFIED="1518487921068" TEXT="locate(typID)"/>
|
|
<node CREATED="1517505532484" ID="ID_192986712" MODIFIED="1518487921068" 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" ID="ID_164467382" MODIFIED="1518487921069" 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" ID="ID_1414969254" MODIFIED="1518487921069" TEXT="liefert Pfad">
|
|
<node CREATED="1517505605363" ID="ID_1831975809" MODIFIED="1518487921069" TEXT="zeigt auf gewünschtes Element"/>
|
|
<node CREATED="1517505614937" ID="ID_262899447" MODIFIED="1518487921069" TEXT="totally covered"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1516916611433" ID="ID_1887578617" MODIFIED="1518487921069" TEXT="welche zusätzlichen Services werden benötigt?">
|
|
<icon BUILTIN="help"/>
|
|
<node CREATED="1517021372159" ID="ID_841350723" MODIFIED="1518487921069" TEXT="location">
|
|
<node CREATED="1518840121972" ID="ID_989066633" MODIFIED="1518840181886" TEXT="ein LocationSolver">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node CREATED="1517021326957" ID="ID_20403834" MODIFIED="1518840184881" TEXT="LocationQuery qua Navigator">
|
|
<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" ID="ID_1240883488" MODIFIED="1518487921069" TEXT="Allocator">
|
|
<node CREATED="1517021395067" ID="ID_1609814715" MODIFIED="1518487921069" TEXT="die konkreten Allokatoren"/>
|
|
<node CREATED="1517021415017" ID="ID_1692689619" MODIFIED="1518487921069" TEXT="sehen viewLocator-API"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1517013926947" HGAP="247" ID="ID_1823688859" MODIFIED="1518762207002" TEXT="fehlende Implementierung..." VSHIFT="26">
|
|
<icon BUILTIN="pencil"/>
|
|
<node COLOR="#338800" CREATED="1517013976676" ID="ID_614348470" MODIFIED="1518762196448" 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" FOLDED="true" ID="ID_68856104" MODIFIED="1518839544741">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
Regel-Parametrisierung
|
|
</p>
|
|
<p>
|
|
Kontextualisierung
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<linktarget COLOR="#e46465" DESTINATION="ID_68856104" ENDARROW="Default" ENDINCLINATION="74;449;" ID="Arrow_ID_110301671" SOURCE="ID_1208480183" STARTARROW="None" STARTINCLINATION="-232;7;"/>
|
|
<icon BUILTIN="button_cancel"/>
|
|
<node CREATED="1518658759567" ID="ID_1257805922" MODIFIED="1518658772007" TEXT="wie?">
|
|
<node CREATED="1517014036148" ID="ID_1650726696" MODIFIED="1518487921069" TEXT="on the fly">
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
<node CREATED="1517014040147" ID="ID_144379993" MODIFIED="1518743268543" TEXT="beim Erzeugen des Resolvers"/>
|
|
</node>
|
|
<node CREATED="1518658744024" ID="ID_1009975119" MODIFIED="1518658745685" TEXT="Zweck">
|
|
<node COLOR="#338800" CREATED="1517014013207" ID="ID_1843964714" MODIFIED="1518839527924" 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" ID="ID_1860407174" MODIFIED="1518745767401" 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" ID="ID_43313184" MODIFIED="1518746024360" TEXT="#1130 allow view location by similar kind">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
<node CREATED="1518762071967" FOLDED="true" ID="ID_1501187790" MODIFIED="1518830656615" 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" ID="ID_486080918" MODIFIED="1518830471955" 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" HGAP="32" ID="ID_1951597669" MODIFIED="1518743133223" TEXT="technischer Ansatz" VSHIFT="-2">
|
|
<node CREATED="1518660484501" ID="ID_1142230788" MODIFIED="1518660490688" 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" ID="ID_90938050" MODIFIED="1518660722928" 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" ID="ID_923980639" MODIFIED="1518660513437" 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" ID="ID_1080152835" MODIFIED="1518660844616" 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" HGAP="79" ID="ID_1989234578" MODIFIED="1518745957053" 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" ID="ID_1108128377" MODIFIED="1518743247533" 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 BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1517505328936" ID="ID_406973235" MODIFIED="1518487921069" TEXT="Umbauen Locator in Functor">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1517505339663" ID="ID_470503309" MODIFIED="1518487921069" TEXT="DSL-Header restrukturieren">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
<node COLOR="#338800" CREATED="1517507830918" ID="ID_1112334086" MODIFIED="1520207938255" TEXT="Locator analog zu Allocator definieren">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1519355684307" ID="ID_336676610" MODIFIED="1519355726724">
|
|
<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" ID="ID_691482201" MODIFIED="1519358025396" TEXT="Verwendungs-Schema">
|
|
<icon BUILTIN="yes"/>
|
|
<node CREATED="1519357910532" ID="ID_1670200821" MODIFIED="1519357988646" 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" ID="ID_1286263958" MODIFIED="1519358021683" 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" ID="ID_1481930885" MODIFIED="1520207942582" 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" ID="ID_1786241256" MODIFIED="1519359162713" 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" ID="ID_988890391" MODIFIED="1519442391464" 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" ID="ID_1356890401" MODIFIED="1519440019400">
|
|
<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" ID="ID_779685706" MODIFIED="1519442729591" 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" ID="ID_1400629217" MODIFIED="1519437344737" 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" ID="ID_861550710" MODIFIED="1519440299158" TEXT="Entscheidung">
|
|
<icon BUILTIN="yes"/>
|
|
<node CREATED="1519440157310" ID="ID_1912054433" MODIFIED="1519440166344" 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" ID="ID_42017722" MODIFIED="1519440194012" 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 BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1517507566761" ID="ID_839496495" MODIFIED="1519347241272">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
Anwendung <i>delegiert</i> an einen Serivce
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="flag-yellow"/>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1519355422807" ID="ID_1718427051" MODIFIED="1519355428558" TEXT="Service-Zugang regeln">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
<node CREATED="1520221913300" ID="ID_906905" MODIFIED="1520221920710" TEXT="Design?">
|
|
<icon BUILTIN="help"/>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1520221927138" ID="ID_782466951" MODIFIED="1520222272577" 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="pencil"/>
|
|
<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>
|
|
<node CREATED="1520221939552" ID="ID_1782927241" MODIFIED="1520222215939" 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" ID="ID_589257049" MODIFIED="1520221992862" 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 BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1520721753927" ID="ID_1564232821" MODIFIED="1520721763166" TEXT="DependencyFactory verwenden">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
<node CREATED="1520721767005" ID="ID_364557801" MODIFIED="1520721776960" TEXT="dazu muß diese erst mal ausgebaut werden"/>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1520721792978" ID="ID_871055051" MODIFIED="1520722011920" 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;"/>
|
|
<icon BUILTIN="flag-yellow"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1517507576168" ID="ID_700127725" MODIFIED="1518487921069" 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="1518839586558" 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" ID="ID_636863312" MODIFIED="1518487921069" 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" ID="ID_1527522188" MODIFIED="1518487921069" 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" ID="ID_606655578" MODIFIED="1518487921069" 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="1518830196573" 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="1518839561765">
|
|
<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" ID="ID_443518928" MODIFIED="1518838266589" TEXT="Implementierung">
|
|
<node CREATED="1518838267457" ID="ID_943649771" MODIFIED="1518838276599" TEXT="als pre-Processing im Solver">
|
|
<icon BUILTIN="yes"/>
|
|
</node>
|
|
<node CREATED="1518838283262" ID="ID_238691976" MODIFIED="1518838297385" TEXT="wie Pattern modifizieren?">
|
|
<node CREATED="1518838298468" ID="ID_753244692" MODIFIED="1518838305407" TEXT="muß überschreiben">
|
|
<icon BUILTIN="smily_bad"/>
|
|
</node>
|
|
<node CREATED="1518838306835" ID="ID_1187474816" MODIFIED="1518838315594" 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" ID="ID_1963190796" MODIFIED="1518487921069" TEXT="Fallunterscheidung">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node COLOR="#338800" CREATED="1518055059890" ID="ID_1240967474" MODIFIED="1518487921069" 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" ID="ID_1374209563" MODIFIED="1518487921069" 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" ID="ID_1927049673" MODIFIED="1518487921069" 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" ID="ID_1984395087" MODIFIED="1518487921069" TEXT="Ablauf-Logik">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1518213040236" ID="ID_1048898871" MODIFIED="1518487921069" 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" ID="ID_1840655064" MODIFIED="1518487921069" 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" ID="ID_533214872" MODIFIED="1518487921069" TEXT="Standard">
|
|
<node BACKGROUND_COLOR="#efedc4" CREATED="1518213086862" ID="ID_6239293" MODIFIED="1518487921069" TEXT="totalyCovered?">
|
|
<node CREATED="1518213134767" ID="ID_775708906" MODIFIED="1518487921069" TEXT="nein?">
|
|
<node BACKGROUND_COLOR="#b6c6f7" CREATED="1518213142062" ID="ID_1245747447" MODIFIED="1518487921069" TEXT="next"/>
|
|
</node>
|
|
<node CREATED="1518213159380" ID="ID_213462597" MODIFIED="1518487921070" 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" ID="ID_977251605" MODIFIED="1518487921070" TEXT="Create">
|
|
<node BACKGROUND_COLOR="#efedc4" CREATED="1518213253255" ID="ID_1769779207" MODIFIED="1518487921070" TEXT="not empty?">
|
|
<node CREATED="1518213302080" ID="ID_1846077322" MODIFIED="1518487921070" 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" ID="ID_1239103431" MODIFIED="1518487921070" TEXT="nein?">
|
|
<node BACKGROUND_COLOR="#efedc4" CREATED="1518213337332" ID="ID_901388238" MODIFIED="1518487921070" 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" ID="ID_1678375217" MODIFIED="1518487921070" 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="1518839569193" TEXT="in jedem Fall korrekte Länge sicherstellen">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1518212471553" ID="ID_1821401889" MODIFIED="1518487921070" 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" ID="ID_1003923585" MODIFIED="1518487921070" 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" ID="ID_1644096915" MODIFIED="1518487921070" 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="1518839572648" TEXT="Fälle geschickt zusammenfassen (duplikate Aktionen)">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node BACKGROUND_COLOR="#efedc4" CREATED="1518213086862" ID="ID_1713281564" MODIFIED="1518487921070" 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" ID="ID_1113830798" MODIFIED="1518487921070" 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" ID="ID_679511688" MODIFIED="1518487921070" TEXT="nein?">
|
|
<node BACKGROUND_COLOR="#efedc4" CREATED="1518213337332" ID="ID_1046262927" MODIFIED="1518487921070" TEXT="Create UND Klausel explizit?">
|
|
<node CREATED="1518214337116" ID="ID_1397265252" MODIFIED="1518487921070" 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" ID="ID_1801836476" MODIFIED="1518487921070" 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" ID="ID_1981924615" MODIFIED="1518835363372" 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" ID="ID_98359518" MODIFIED="1518487921070" 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 BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1519347191513" ID="ID_1058958215" MODIFIED="1520222272574" 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;"/>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1519347295051" ID="ID_846050459" MODIFIED="1519347299883" TEXT="im realen UI">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1519347289508" ID="ID_723600288" MODIFIED="1519347302587" TEXT="setup für Unit-Test">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
</node>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1519347266311" ID="ID_1347610352" MODIFIED="1519347277894" TEXT="Funktor-Anwendung implementieren">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1517506090553" HGAP="59" ID="ID_1416624438" MODIFIED="1518487921070" TEXT="UILocationSolver" VSHIFT="-20">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
<node CREATED="1517506104183" ID="ID_798223993" MODIFIED="1518487921070" TEXT="ansiedeln im ViewLocator"/>
|
|
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1517506116502" ID="ID_1945600026" MODIFIED="1518487921070" 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="flag-pink"/>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1517506590574" ID="ID_1459009906" MODIFIED="1519347362448" 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="flag-yellow"/>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1517508464896" ID="ID_877224411" MODIFIED="1518487921070" TEXT="generische Aufruf-Schnittstelle">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
</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="1518487921070" TEXT="Syntax / DSL-Technik">
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
<node CREATED="1517970606791" ID="ID_1375091296" MODIFIED="1518487921070" 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" ID="ID_803913203" MODIFIED="1518487921070" TEXT="mögliche Alternativen">
|
|
<icon BUILTIN="info"/>
|
|
<node CREATED="1517970849142" ID="ID_1434826323" MODIFIED="1518487921070" 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" ID="ID_1615423213" MODIFIED="1518487921070" 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" ID="ID_1299498209" MODIFIED="1518487921070" 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 BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1519355632354" ID="ID_1664602603" MODIFIED="1519355793090" TEXT="wo entsteht die LocationRule?">
|
|
<linktarget COLOR="#647b96" DESTINATION="ID_1664602603" ENDARROW="Default" ENDINCLINATION="1374;300;" ID="Arrow_ID_947721778" SOURCE="ID_241646491" STARTARROW="None" STARTINCLINATION="298;36;"/>
|
|
<icon BUILTIN="help"/>
|
|
<node CREATED="1519355656423" ID="ID_1547517953" MODIFIED="1519355665786" TEXT="in der LocationSpec">
|
|
<node CREATED="1520207968932" ID="ID_1172076522" MODIFIED="1520207982341" TEXT="wenn eine einfache Ortsangabe gegeben ist"/>
|
|
<node CREATED="1520208008190" ID="ID_874779146" MODIFIED="1520208019664" TEXT="dann wird aus dem Builder inline eine LocationClause gemacht"/>
|
|
</node>
|
|
<node CREATED="1519355666797" ID="ID_1270620528" MODIFIED="1519355670433" 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 BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1515631726569" ID="ID_1252372720" MODIFIED="1518487921070" TEXT="wie mit ViewLocator-Service verdrahten?">
|
|
<linktarget COLOR="#614483" DESTINATION="ID_1252372720" ENDARROW="Default" ENDINCLINATION="-106;0;" ID="Arrow_ID_1759099248" SOURCE="ID_1454085887" STARTARROW="Default" STARTINCLINATION="-276;-13;"/>
|
|
<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>
|
|
<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 BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1519354380677" ID="ID_1029266700" MODIFIED="1519354394096" TEXT="wer bietet diesen Service?">
|
|
<icon BUILTIN="help"/>
|
|
<node CREATED="1519355147108" ID="ID_1615393259" MODIFIED="1519355344012" 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 BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1519355201077" ID="ID_539031017" MODIFIED="1519355238944">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
wer interpretiert
|
|
</p>
|
|
<p>
|
|
UI-Koordinaten
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="help"/>
|
|
</node>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1519354420343" ID="ID_17801598" MODIFIED="1519354425479" TEXT="Varianten">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1519354443485" ID="ID_1474832227" MODIFIED="1519354447748" TEXT="always create">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1519354760313" ID="ID_321705251" MODIFIED="1519355264234" TEXT="Umgang mit Duplikaten">
|
|
<linktarget COLOR="#807e9b" DESTINATION="ID_321705251" ENDARROW="Default" ENDINCLINATION="85;-104;" ID="Arrow_ID_1030149985" SOURCE="ID_1792932496" STARTARROW="None" STARTINCLINATION="204;-199;"/>
|
|
<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="#eee5c3" COLOR="#990000" CREATED="1519354769960" ID="ID_778018274" MODIFIED="1519357212192" 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;"/>
|
|
<icon BUILTIN="flag-yellow"/>
|
|
<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="1519357291428" TEXT="Schlüssel-Schloß-Prinzip"/>
|
|
</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="1519354645438" TEXT="welches Limit ist notwendig?">
|
|
<icon BUILTIN="help"/>
|
|
<node CREATED="1519354649560" ID="ID_1983794575" MODIFIED="1519354659843" 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" ID="ID_1968452476" MODIFIED="1519354680240" TEXT="pro Fenster">
|
|
<node CREATED="1519354685828" ID="ID_966759751" MODIFIED="1519354691638" TEXT="genau wie global"/>
|
|
</node>
|
|
<node CREATED="1519354697578" ID="ID_1780825164" MODIFIED="1519354715139" TEXT="pro Endpunkt">
|
|
<node CREATED="1519354849469" ID="ID_1792932496" MODIFIED="1519355264234" TEXT="Variante des create-Mechanismus">
|
|
<arrowlink COLOR="#807e9b" DESTINATION="ID_321705251" ENDARROW="Default" ENDINCLINATION="85;-104;" ID="Arrow_ID_1030149985" STARTARROW="None" STARTINCLINATION="204;-199;"/>
|
|
</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" ID="ID_1051141312" MODIFIED="1518487921071" TEXT="partielle Funktions-Applikation">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1515725638196" FOLDED="true" ID="ID_919161877" MODIFIED="1518487921071" 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" FOLDED="true" ID="ID_1250695567" MODIFIED="1518487921071" 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" FOLDED="true" ID="ID_1657507656" MODIFIED="1518487921071" TEXT="Implementierung">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1515726234742" ID="ID_95404514" MODIFIED="1515726237056" TEXT="Prinzip">
|
|
<node CREATED="1515726238061" ID="ID_1475189544" MODIFIED="1515726244416" TEXT="ctor nimmt beliebige Funktion"/>
|
|
<node CREATED="1515726245124" ID="ID_914794335" MODIFIED="1515726258014" TEXT="zerlegt und verifiziert Signatur"/>
|
|
<node CREATED="1515726258819" ID="ID_1930194336" MODIFIED="1515726267917" 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="1515732355403" 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" ID="ID_973074141" MODIFIED="1515799063868" 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" ID="ID_208115762" MODIFIED="1515801394951" 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 BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1515634030562" ID="ID_662195926" MODIFIED="1518487921071" TEXT="Frage: geht das wirklich?">
|
|
<icon BUILTIN="help"/>
|
|
</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>
|
|
</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>
|
|
<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" ID="ID_380908645" MODIFIED="1518487921071" TEXT="UICoordResolver_test">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node COLOR="#338800" CREATED="1506984645745" ID="ID_244163155" MODIFIED="1518487921071" TEXT="verify_simpleUsage">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1506984645747" FOLDED="true" ID="ID_517262443" MODIFIED="1518487921071" 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="1508809683317" 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="1509143411493" TEXT="drillDown aufbohren">
|
|
<icon BUILTIN="ksmiletris"/>
|
|
<node CREATED="1509143431491" ID="ID_1535839304" MODIFIED="1509143436685" TEXT="Pfad normal weiterverarbeiten"/>
|
|
<node CREATED="1509143437202" ID="ID_1489524396" MODIFIED="1509143442917" TEXT="aber Abstieg im Baum manipulieren"/>
|
|
<node CREATED="1509143453151" ID="ID_373632759" MODIFIED="1509143457604" TEXT="speziell...">
|
|
<node CREATED="1509143459519" ID="ID_1727095948" MODIFIED="1509143468809" 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="1509288960092" 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" ID="ID_892381116" MODIFIED="1512926191818" 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" FOLDED="true" ID="ID_1254044275" MODIFIED="1518487921071" 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="1515209179060" 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="1518487921071" TEXT="ansonsten redundant zur Mutierung"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1506984645748" ID="ID_1171284706" MODIFIED="1518487921071" 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="1518487921071" 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="1518487921071" 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" ID="ID_1728979618" MODIFIED="1515305903027">
|
|
<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="1518487921071" 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="1518487921071" 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" ID="ID_1082678541" MODIFIED="1515298599961" 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" ID="ID_273407473" MODIFIED="1515298730297" 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="1518487921071" 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" FOLDED="true" ID="ID_554336668" MODIFIED="1518487921071" 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="1515555652468" 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 COLOR="#338800" CREATED="1517506145618" FOLDED="true" ID="ID_718086573" MODIFIED="1518840088211" 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="1518762392678" 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="1518762392404" 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="1518762392404" 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="1518762392404" 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="1518762392404" 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="1518762392404" 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="1518762392404" 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="1518762396012" 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="1518742650810" 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="1518742655379" 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 CREATED="1506182023288" ID="ID_1539184761" MODIFIED="1518487921072" TEXT="ViewSpecDSL_test">
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1506182077694" ID="ID_839824654" MODIFIED="1518487921072" TEXT="verify_basicProperties">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
<node CREATED="1515633695710" ID="ID_1540478220" MODIFIED="1518487921072" TEXT="aus standardUsage ablzuleiten"/>
|
|
<node CREATED="1515633710396" ID="ID_335824710" MODIFIED="1518487921072" TEXT="spezifiziert die formalen Basis-Eigenschaften"/>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1506182037003" ID="ID_439307131" MODIFIED="1518487921072" TEXT="verify_standardUsage">
|
|
<icon BUILTIN="pencil"/>
|
|
<node CREATED="1515633645885" ID="ID_1659749577" MODIFIED="1518487921072" TEXT="einfaches Dummy-Setup"/>
|
|
<node CREATED="1515633651212" ID="ID_704575529" MODIFIED="1518487921072" TEXT="erlaubt, die Strukturen zu bauen"/>
|
|
<node CREATED="1515633658483" ID="ID_149158343" MODIFIED="1518487921072" TEXT="läuft ohne die UI-Backbone">
|
|
<icon BUILTIN="yes"/>
|
|
</node>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1506182087462" ID="ID_47070993" MODIFIED="1518487921072" TEXT="verify_alternatives">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
<node CREATED="1515633722883" ID="ID_9454050" MODIFIED="1518487921072" TEXT="rein technische Erweiterung"/>
|
|
<node CREATED="1515633737905" ID="ID_1500220475" MODIFIED="1518487921072" TEXT="Auswahl der ersten "passenden" Lösung"/>
|
|
<node CREATED="1515633770884" ID="ID_861669562" MODIFIED="1518487921072" TEXT="Dummy: GenNodeLocationQuery anstelle eines realen UI"/>
|
|
</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" ID="ID_686917529" MODIFIED="1518487921072" 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="1518487921073" 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="1518487921073" 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="1518487921073" 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" ID="ID_1578364370" MODIFIED="1518487921073" TEXT="Art des Aufrufes">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
<node CREATED="1504885358585" ID="ID_1662504157" MODIFIED="1518487921073" TEXT="erzeuge neu in Panel(coord)"/>
|
|
<node CREATED="1504885435351" ID="ID_1583789854" MODIFIED="1518487921073" TEXT="ersetze in Panel(coord)"/>
|
|
<node CREATED="1504885503118" ID="ID_883040433" MODIFIED="1518487921073" TEXT="entferne view(ID) aus Panel(coord)"/>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1504885554399" ID="ID_1868485493" MODIFIED="1518487921073">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
<i>Allokator</i> pro Typ
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<icon BUILTIN="flag-yellow"/>
|
|
<node CREATED="1504885680095" ID="ID_1828531407" MODIFIED="1518487921073" TEXT="sicherstellen">
|
|
<node CREATED="1504885686470" ID="ID_450596618" MODIFIED="1518487921073" TEXT="-- nix --"/>
|
|
<node CREATED="1504885692389" ID="ID_735840491" MODIFIED="1518487921073" TEXT="global einer"/>
|
|
<node CREATED="1504885708291" ID="ID_304260062" MODIFIED="1518487921073" TEXT="limit pro Fenster"/>
|
|
</node>
|
|
<node CREATED="1504886385928" ID="ID_894995512" MODIFIED="1518487921073" TEXT="Koordinaten finden...">
|
|
<arrowlink COLOR="#21428c" DESTINATION="ID_660502374" ENDARROW="Default" ENDINCLINATION="30;-48;" ID="Arrow_ID_900798705" STARTARROW="None" STARTINCLINATION="158;0;"/>
|
|
</node>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1504886036743" ID="ID_1013293844" MODIFIED="1518487921073" 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" ID="ID_660502374" MODIFIED="1518487921073" 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" ID="ID_822801746" MODIFIED="1518487921073" 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" ID="ID_1808427553" MODIFIED="1518487921073" 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" ID="ID_1307875760" MODIFIED="1518487921073" TEXT="group">
|
|
<node CREATED="1504886010442" ID="ID_1660557914" MODIFIED="1518487921073" TEXT="panel has group"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1505420642387" ID="ID_9234158" MODIFIED="1518487921073" TEXT="UI-Koordinaten Builder-DSL">
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1504886210096" ID="ID_1980896942" MODIFIED="1518487921073" 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="1518487921073" 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="1518487921073" 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="1518487921074" 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" ID="ID_262802757" MODIFIED="1518487921074" 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="1518487921074" TEXT="locationSpec ist direkt eine UICoord">
|
|
<node CREATED="1506114845775" ID="ID_98017975" MODIFIED="1518487921074" TEXT="muß DSL-Elemente unterstützen"/>
|
|
<node CREATED="1506034566805" ID="ID_726919191" MODIFIED="1518487921074" 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="1506120453114" ID="ID_1626834388" MODIFIED="1518487921074" TEXT="abgekürzte Schreibweise für Allocator-Spec"/>
|
|
<node CREATED="1506034548376" ID="ID_36109866" MODIFIED="1518487921074" TEXT="count -> umbenennen in alloc"/>
|
|
</node>
|
|
<node CREATED="1504833110793" ID="ID_10881417" MODIFIED="1518487921074" TEXT="Ausdrücke">
|
|
<node CREATED="1504833126079" ID="ID_286801467" MODIFIED="1518487921074" TEXT="konkret">
|
|
<cloud COLOR="#e6d0a4"/>
|
|
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
|
|
<icon BUILTIN="pencil"/>
|
|
<node CREATED="1504833146196" ID="ID_278904211" MODIFIED="1518487921074" 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="1518487921074" 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="1518487921074" 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="1518487921074" 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="1518487921075" 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="1518487921075" 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" ID="ID_1620814124" MODIFIED="1518487921075">
|
|
<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="1518487921075" 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="1518487921075" TEXT="Allocator-Def">
|
|
<node CREATED="1506120380940" ID="ID_1553891423" MODIFIED="1518487921075" TEXT="ein Funktor UICorrd(UIcoord)"/>
|
|
<node CREATED="1506120391506" ID="ID_1217740236" MODIFIED="1518487921075" TEXT="Semantik: nimmt Spec und erzeugt konkretes Ziel"/>
|
|
<node CREATED="1506120410863" ID="ID_1205747223" MODIFIED="1518487921075" 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="1518487921075" TEXT="Komma-Operator">
|
|
<icon BUILTIN="button_cancel"/>
|
|
<node CREATED="1504881756073" ID="ID_1341009121" MODIFIED="1518487921075" TEXT="niedrigere Präzedenz als ="/>
|
|
<node CREATED="1504882453091" ID="ID_870917199" MODIFIED="1518487921075" 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="1518487921075" TEXT="Oder-Operator">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1504882423975" ID="ID_884614259" MODIFIED="1518487921075" TEXT="höhere Präzedenz als ="/>
|
|
<node CREATED="1504882434846" ID="ID_1018309959" MODIFIED="1518487921075" TEXT="zwei Alternativen">
|
|
<arrowlink COLOR="#1f6dc8" DESTINATION="ID_986692736" ENDARROW="Default" ENDINCLINATION="-13;-31;" ID="Arrow_ID_1057642367" STARTARROW="None" STARTINCLINATION="88;6;"/>
|
|
<node CREATED="1504882621302" ID="ID_1942501913" MODIFIED="1518487921075" TEXT="or"/>
|
|
<node CREATED="1504882633268" ID="ID_1285507370" MODIFIED="1518487921075" TEXT="|"/>
|
|
</node>
|
|
<node CREATED="1504882529890" ID="ID_233096485" MODIFIED="1518487921075" 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 BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1517970380222" ID="ID_1663499246" MODIFIED="1518487921075" 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>
|
|
</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>
|
|
<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="1518487921075" TEXT="Design Proc-Command-Framework vorantreiben">
|
|
<arrowlink COLOR="#352c7d" DESTINATION="ID_1622574347" ENDARROW="Default" ENDINCLINATION="-240;-3336;" ID="Arrow_ID_1512127407" STARTARROW="None" STARTINCLINATION="1932;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="1518487921075" 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="1518487921075" 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="1518487921076" TEXT="siehe auch #1097 clarify the role of the panels in the UI" VSHIFT="9">
|
|
<linktarget COLOR="#a9b4c1" DESTINATION="ID_1176492517" ENDARROW="Default" ENDINCLINATION="14;-313;" ID="Arrow_ID_1083220093" SOURCE="ID_1375700494" STARTARROW="None" STARTINCLINATION="632;-20;"/>
|
|
<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="1518487921076" 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;"/>
|
|
<icon BUILTIN="flag-yellow"/>
|
|
<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="1518487921076" TEXT="Fazit(TODO)">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
<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 CREATED="1504193329508" ID="ID_629544763" MODIFIED="1518487921077" TEXT="Aufgabe: docking panels">
|
|
<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="1518487921077" 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;"/>
|
|
</node>
|
|
<node CREATED="1504370524687" ID="ID_816760158" MODIFIED="1518487921077" TEXT="PanelManager in den einzelnen Fenstern"/>
|
|
</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>
|
|
</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="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="1518487921078" 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>
|
|
<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="1518487921083" 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="1504200915915" ID="ID_335470074" MODIFIED="1518487921084" TEXT="später wird das ein nichtmodaler Parameter-Editor"/>
|
|
</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="1518487921084" TEXT="PanelExperiment">
|
|
<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>
|
|
<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="1504833575700" ID="ID_1470115932" MODIFIED="1518487921084" TEXT="Playcontrol"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1488423383765" HGAP="355" ID="ID_1046643705" MODIFIED="1518487921084" TEXT="Verhalten" VSHIFT="26">
|
|
<node CREATED="1488423418968" ID="ID_1169811882" MODIFIED="1518487921084" TEXT="Lebenszyklus">
|
|
<node CREATED="1488423424111" ID="ID_1090980479" MODIFIED="1518487921084" TEXT="Start"/>
|
|
<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="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" ID="ID_1136748666" MODIFIED="1518487921085" 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" HGAP="49" ID="ID_952544600" MODIFIED="1518487921086" 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="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" HGAP="35" ID="ID_1455265273" MODIFIED="1518487921086" 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" FOLDED="true" HGAP="211" ID="ID_1897861223" MODIFIED="1518487921086" 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="1515978206106">
|
|
<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="1515978207458">
|
|
<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="1515978184381" 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="1512926191897" 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="1512926191898" 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="1512926191899" 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="1512926191902" TEXT="Probleme" VSHIFT="16">
|
|
<font NAME="SansSerif" SIZE="12"/>
|
|
<icon BUILTIN="clanbomber"/>
|
|
<node CREATED="1455833736586" FOLDED="true" ID="ID_1233162987" MODIFIED="1515978172934" 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="1515978168454">
|
|
<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="1512926191907" TEXT="Frage: Auto-PICK">
|
|
<icon BUILTIN="help"/>
|
|
<node CREATED="1455843317119" ID="ID_755404987" MODIFIED="1455895650565" TEXT="Ja: aber was dann mit Umordnungen">
|
|
<icon BUILTIN="button_cancel"/>
|
|
</node>
|
|
<node CREATED="1455843336405" ID="ID_1210482014" MODIFIED="1512926191907">
|
|
<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" ID="ID_1629566976" MODIFIED="1512926191908" 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="1515978165543" 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="1512926191912" TEXT="passenden Adapter">
|
|
<node CREATED="1455913959452" ID="ID_1132015088" MODIFIED="1455913969855" TEXT="erst beim Zugriff"/>
|
|
<node CREATED="1455913970443" ID="ID_164083502" MODIFIED="1455913995371" TEXT="jeweils Typ feststellen"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node COLOR="#3a3785" CREATED="1455927009621" HGAP="148" ID="ID_153254427" MODIFIED="1515978222726" 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" FOLDED="true" ID="ID_1425598677" MODIFIED="1515978233686" 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" FOLDED="true" HGAP="91" ID="ID_1209647803" MODIFIED="1515978232263" 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="1512926191937" 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" HGAP="76" ID="ID_496821508" MODIFIED="1512926191938" 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" FOLDED="true" HGAP="-25" ID="ID_1292432889" MODIFIED="1515978136876" 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="1515978127279" 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="1512926191949" 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="1512926191949" TEXT="Zahl der Einzelbindungen">
|
|
<node CREATED="1456187264346" ID="ID_81725454" MODIFIED="1456187278539" TEXT="ein Slot pro Binding-Layer"/>
|
|
<node CREATED="1456187279408" ID="ID_954788495" MODIFIED="1512926191949" 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" FOLDED="true" ID="ID_770700785" MODIFIED="1515978118461" 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="1512926191951" 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="1512926191952" TEXT="DOM + Attribution">
|
|
<icon BUILTIN="idea"/>
|
|
<node CREATED="1456424627860" ID="ID_1294496825" MODIFIED="1456424632247" TEXT="keine Alternative"/>
|
|
<node CREATED="1456424632907" ID="ID_1566098600" MODIFIED="1456424642598" TEXT="denn genau das machen wir hier"/>
|
|
<node CREATED="1456437181070" HGAP="23" ID="ID_1066542027" MODIFIED="1512926191952" STYLE="bubble" TEXT="Analyse" VSHIFT="44">
|
|
<font BOLD="true" NAME="SansSerif" SIZE="15"/>
|
|
<icon BUILTIN="info"/>
|
|
<node CREATED="1456424664015" ID="ID_1032924247" MODIFIED="1512926191953" 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" ID="ID_1926017913" MODIFIED="1512927037795" 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" HGAP="28" ID="ID_1929919601" MODIFIED="1512926191954" TEXT="notwendig" VSHIFT="-1">
|
|
<node CREATED="1456426041626" ID="ID_101262346" MODIFIED="1512927037794" 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" HGAP="28" ID="ID_1999101531" MODIFIED="1512926191955" TEXT="Maßstab" VSHIFT="17">
|
|
<node CREATED="1456429002332" ID="ID_294696563" MODIFIED="1512927037794" 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" ID="ID_327619080" MODIFIED="1512927037794" 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" FOLDED="true" HGAP="54" ID="ID_481518617" MODIFIED="1518487921086" 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" FOLDED="true" HGAP="165" ID="ID_133511037" MODIFIED="1518487921086" TEXT="Implementierung" VSHIFT="42">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1456506128581" FOLDED="true" HGAP="-12" ID="ID_322289358" MODIFIED="1515978077764" 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="1515978020234" 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="1515978070204" 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="1512926191975" 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="1512926191976" 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="1515977981120" 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" ID="ID_824115387" MODIFIED="1512926191979" 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="1512926191979" 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" FOLDED="true" HGAP="29" ID="ID_1914581822" MODIFIED="1515978085154" 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" HGAP="29" ID="ID_1068782263" MODIFIED="1512926191985" 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" ID="ID_1873945047" MODIFIED="1512926191987" 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="1512926191991" 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="1515977923450" 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" FOLDED="true" HGAP="91" ID="ID_1959700641" MODIFIED="1515977916769" 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="1512926191994" 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="1512926191995" 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="1512926191996" 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" ID="ID_310751196" MODIFIED="1512926191996" 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="1512926191997" 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" ID="ID_197038069" MODIFIED="1512926191997" 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="1512926191998" 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" ID="ID_233644864" MODIFIED="1512926191998" 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="1512926191999" 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="1512926192001" 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" ID="ID_1565618197" MODIFIED="1512926192001">
|
|
<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="1515977907050" 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="1512926192005">
|
|
<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="1512926192006" 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" ID="ID_1490646673" MODIFIED="1512926192008" 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="1515977899730" 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="1512926192013" 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="1512926192017" 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" ID="ID_404525574" MODIFIED="1512926192018" 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="1512926192018" 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" ID="ID_1409253452" MODIFIED="1512926192019" 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" FOLDED="true" HGAP="227" ID="ID_1407170666" MODIFIED="1515977877985" 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="1512926192020" 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="1512926192021" TEXT="default">
|
|
<node CREATED="1461892490881" ID="ID_577669206" MODIFIED="1512926192021" 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="1512926192022" 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="1512926192022" 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="1512926192025" 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" ID="ID_766802419" MODIFIED="1512926192026" 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="1512926192027" 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" FOLDED="true" HGAP="100" ID="ID_98863612" MODIFIED="1515977867489" 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="1512926192032" 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="1512926192032" 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="1512926192032" 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="1512926192032" 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="1512926192033" 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="1512926192034" 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" ID="ID_1893171223" MODIFIED="1512926192035">
|
|
<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="1512926192035" 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="1512926192035" 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="1512926192036" 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="1512926192037" 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="1512926192037" 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="1512926192038" TEXT="fest eingebaut...">
|
|
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
|
|
<node CREATED="1458175942866" ID="ID_321386709" MODIFIED="1512926192038" 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" ID="ID_233019425" MODIFIED="1512926192038" 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="1512926192039" TEXT="optional...">
|
|
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
|
|
<node CREATED="1458176008025" ID="ID_384595680" MODIFIED="1512926192040" 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" ID="ID_88342940" MODIFIED="1512926192040" 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" ID="ID_280816523" MODIFIED="1512926192041" 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" ID="ID_1231660130" MODIFIED="1512926192041" 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" ID="ID_241762171" MODIFIED="1512926192042" 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" ID="ID_450096384" MODIFIED="1512926192043" 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" ID="ID_806805692" MODIFIED="1512926192043" 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" ID="ID_1000370922" MODIFIED="1512926192044" 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="1515977845051" TEXT="Design-Schlußfolgerungen" VSHIFT="48">
|
|
<node CREATED="1463687362843" HGAP="116" ID="ID_775516687" MODIFIED="1512926192048" TEXT="Eingrenzung" VSHIFT="-28">
|
|
<node CREATED="1463687373889" ID="ID_155516876" MODIFIED="1512926192049" TEXT="Art von Attributen">
|
|
<node CREATED="1463687402462" FOLDED="true" ID="ID_1119981147" MODIFIED="1515977831564" TEXT="Objekt-Feld">
|
|
<icon BUILTIN="forward"/>
|
|
<node CREATED="1463689795357" ID="ID_1774256004" MODIFIED="1463689801592" TEXT="kann nur zugewiesen werden"/>
|
|
<node CREATED="1463689912853" ID="ID_592726515" MODIFIED="1512926192050">
|
|
<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" FOLDED="true" ID="ID_783243290" MODIFIED="1515977828556" 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" ID="ID_1259353240" MODIFIED="1512926192051" 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" ID="ID_1079102386" MODIFIED="1512926192052" 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" FOLDED="true" ID="ID_682582613" MODIFIED="1515977830260" 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="1512926192053" TEXT="implizit">
|
|
<node CREATED="1463691290845" ID="ID_1981578828" MODIFIED="1464226408020" TEXT="das Setter-lambda nimmt einen Wert"/>
|
|
<node CREATED="1464226412567" ID="ID_1195950141" MODIFIED="1512926192053" 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" FOLDED="true" ID="ID_1755055624" MODIFIED="1515977818301">
|
|
<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" ID="ID_953408463" MODIFIED="1512926192056" 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" ID="ID_1066626880" MODIFIED="1512926192057" 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" FOLDED="true" HGAP="42" ID="ID_493843802" MODIFIED="1515977820270" 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" ID="ID_864537854" MODIFIED="1512926192059" 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" ID="ID_1305704801" MODIFIED="1512926192060" 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" ID="ID_1262990387" MODIFIED="1512926192060" 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" ID="ID_761652333" MODIFIED="1512926192061" TEXT="Auswege">
|
|
<node CREATED="1463934969522" ID="ID_960243774" MODIFIED="1512926192062" 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" ID="ID_1357485921" MODIFIED="1512926192062" 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" ID="ID_1084188576" MODIFIED="1512926192062" 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="1512926192063" TEXT="Konsequenzen" VSHIFT="26">
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
<node CREATED="1463937922318" ID="ID_74130402" MODIFIED="1512926192063" 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" ID="ID_165279544" MODIFIED="1512926192064" 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" ID="ID_669832549" MODIFIED="1512926192064" 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="1515977807208" 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="1512926192070" 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="1512926192074" 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" ID="ID_31475692" MODIFIED="1512926192075" 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" ID="ID_1793680066" MODIFIED="1512926192076" 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" FOLDED="true" ID="ID_365028607" MODIFIED="1515977798136" TEXT="Abwägung">
|
|
<node CREATED="1464305847001" ID="ID_845708071" MODIFIED="1512926192079" TEXT="Aufwand">
|
|
<node CREATED="1464305850440" ID="ID_592160280" MODIFIED="1512926192079" TEXT="dedizierte Impl">
|
|
<node CREATED="1464305871806" ID="ID_1200803242" MODIFIED="1464305874249" TEXT="ein Stack"/>
|
|
<node CREATED="1464306044598" ID="ID_780490719" MODIFIED="1512926192080" TEXT="pro Stackframe">
|
|
<node CREATED="1464305896754" ID="ID_569905839" MODIFIED="1464305908965" TEXT="ref Rec::Mutator"/>
|
|
<node CREATED="1464305910520" ID="ID_1883294095" MODIFIED="1512927037793" 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" ID="ID_1876525606" MODIFIED="1512926192081" TEXT="per TreeMutator">
|
|
<node CREATED="1464305876237" ID="ID_633615671" MODIFIED="1464305878376" TEXT="ein Stack"/>
|
|
<node CREATED="1464306061588" ID="ID_735374750" MODIFIED="1512926192081" TEXT="pro Stackframe">
|
|
<node CREATED="1472781610135" ID="ID_150002810" MODIFIED="1512927037793">
|
|
<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="1512926192082" 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="1515977792426" 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="1512926192088" TEXT="betrifft">
|
|
<node CREATED="1472931395526" ID="ID_1159599973" MODIFIED="1472931403393" TEXT="ins(type = X)"/>
|
|
<node CREATED="1472931404525" ID="ID_1215961897" MODIFIED="1512926192088" 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="1512926192090" 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" ID="ID_1233852840" MODIFIED="1512926192090" 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="1512926192093" 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" ID="ID_909803930" MODIFIED="1512926192097" 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" ID="ID_132124444" MODIFIED="1512926192099" 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" FOLDED="true" ID="ID_786565560" MODIFIED="1515977737105" TEXT="problematisch">
|
|
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
<node CREATED="1465665594969" ID="ID_1072421347" MODIFIED="1512926192101" 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" HGAP="27" ID="ID_699424989" MODIFIED="1512926192101" 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="1512926192102" TEXT="verwirrendes API">
|
|
<node CREATED="1465665980686" ID="ID_1537039073" MODIFIED="1465665991232" TEXT="Anwendung sollte selbstevident sein"/>
|
|
<node CREATED="1465666009690" ID="ID_1006664389" MODIFIED="1512926192103" 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" HGAP="30" ID="ID_462712191" MODIFIED="1512926192103" 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" ID="ID_1870085622" MODIFIED="1512926192103" TEXT="kombinierte Lösung">
|
|
<icon BUILTIN="idea"/>
|
|
<node CREATED="1468762009304" ID="ID_1554371522" MODIFIED="1468762018314" TEXT="Interface DiffMutable"/>
|
|
<node CREATED="1468762031701" ID="ID_48737788" MODIFIED="1512927037793" 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" ID="ID_52899390" MODIFIED="1512927037806" 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" HGAP="38" ID="ID_1718572301" MODIFIED="1512927037805" 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="1512926192108" TEXT="Storage-Probleme" VSHIFT="11">
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
<node CREATED="1469544055624" FOLDED="true" ID="ID_390940604" MODIFIED="1515977695925" 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="1515977700805" 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" ID="ID_1924059831" MODIFIED="1512926192111" 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" ID="ID_1306807662" MODIFIED="1512926192111" 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" ID="ID_447935464" MODIFIED="1512926192113" 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="1515977725113" 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" ID="ID_511952630" MODIFIED="1512926192115" 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" ID="ID_1145081121" MODIFIED="1512926192116" TEXT="konkrete Folgen...">
|
|
<node CREATED="1469545417579" ID="ID_474776082" MODIFIED="1469545427486" TEXT="alle virtuellen Methoden im generischen Teil"/>
|
|
<node CREATED="1469545428289" ID="ID_1077900797" MODIFIED="1512927037792" 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" ID="ID_1752356251" MODIFIED="1512927037792" 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" ID="ID_1826413238" MODIFIED="1512927037792" 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" HGAP="37" ID="ID_263708712" MODIFIED="1512926192120" 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" FOLDED="true" ID="ID_1875145732" MODIFIED="1515977754918" 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="1515977760748" 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="1515977769515" 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="1512926192127" 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" FOLDED="true" HGAP="31" ID="ID_336806935" MODIFIED="1518487921087" 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="1502453801372" 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="1514342136914" TEXT="Schritt-2">
|
|
<linktarget COLOR="#bdbad3" DESTINATION="ID_89098030" ENDARROW="Default" ENDINCLINATION="821;-1406;" ID="Arrow_ID_554743885" SOURCE="ID_1584846573" STARTARROW="None" STARTINCLINATION="1459;870;"/>
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1502453814499" ID="ID_727706359" MODIFIED="1502453827917" 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="1502454083982">
|
|
<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="1502454124761" 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" ID="ID_455247221" MODIFIED="1502454151066" 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" FOLDED="true" HGAP="13" ID="ID_425831735" MODIFIED="1518487921087" 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="1512926192157" TEXT="Sinnvoll das zu erweitern">
|
|
<icon BUILTIN="help"/>
|
|
<node CREATED="1475450034810" ID="ID_445949466" MODIFIED="1512926192158" TEXT="pro">
|
|
<icon BUILTIN="button_cancel"/>
|
|
<node CREATED="1475450042009" ID="ID_1941838908" MODIFIED="1512926192159" 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" ID="ID_736367412" MODIFIED="1512926192159">
|
|
<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" ID="ID_1285250844" MODIFIED="1512926192160" 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="1512926192162" 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" HGAP="45" ID="ID_1183193114" MODIFIED="1512926192163" 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" ID="ID_405705528" MODIFIED="1518487921087" 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="1518487921087" 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="1518487921088" TEXT="konzeptionell">
|
|
<arrowlink COLOR="#34dbd3" DESTINATION="ID_1259700796" ENDARROW="Default" ENDINCLINATION="450;232;" 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="1518742955375" 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>
|
|
</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" FOLDED="true" ID="ID_129001401" MODIFIED="1518487921090" 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="1519355250156" TEXT="Protokoll-Erweiterung" VSHIFT="8">
|
|
<arrowlink COLOR="#e9ba2d" DESTINATION="ID_242219866" ENDARROW="Default" ENDINCLINATION="-940;1675;" ID="Arrow_ID_1617518648" STARTARROW="None" STARTINCLINATION="3436;-1136;"/>
|
|
<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 BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1483927710450" ID="ID_1085939201" MODIFIED="1518487921090" TEXT="Hochfahren des UI / Schließen des UI">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1515977616903" ID="ID_1098045534" MODIFIED="1518487921091" TEXT="TODO: einfaches Fehler-Display">
|
|
<icon BUILTIN="flag-pink"/>
|
|
</node>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1501778430101" ID="ID_489078622" MODIFIED="1518487921091" TEXT="#1098 hand-over to UI thread">
|
|
<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="flag-yellow"/>
|
|
</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" FOLDED="true" ID="ID_260870361" MODIFIED="1518487921092" 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" FOLDED="true" HGAP="200" ID="ID_208733336" MODIFIED="1518487921092" 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" FOLDED="true" ID="ID_341428100" MODIFIED="1518487921092" 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" FOLDED="true" HGAP="62" ID="ID_1269299900" MODIFIED="1515977091923" 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="1491693521708" 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="1491693518988" 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" FOLDED="true" HGAP="28" ID="ID_1660020661" MODIFIED="1515977103099" 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="1492295093557" 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="1492295124521" 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="1492295855364" 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="1492295857092" 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" FOLDED="true" HGAP="69" ID="ID_1208499974" MODIFIED="1520718634871" 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="1492099086127" 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="1492099171844" 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" FOLDED="true" ID="ID_1805144008" MODIFIED="1518487921093" 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" FOLDED="true" ID="ID_1022909876" MODIFIED="1518487921093" 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="1492170878032" 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="1492170946550" 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" FOLDED="true" ID="ID_84243440" MODIFIED="1518487921093" 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="1492171549876" 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="1492171804091" 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" FOLDED="true" ID="ID_1657289637" MODIFIED="1518487921093" 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="1492173461536" 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="1492206519102" 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" FOLDED="true" HGAP="42" ID="ID_769512112" MODIFIED="1518487921093" 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="1492205949716" 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="1492205967697" 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" FOLDED="true" HGAP="114" ID="ID_1743832326" MODIFIED="1518487921093" 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="1518487921093" 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="1932;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" FOLDED="true" ID="ID_497480483" MODIFIED="1518487921094" 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="1512926192269" 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="1492205512167" 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" FOLDED="true" HGAP="48" ID="ID_1858100202" MODIFIED="1518487921094" 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" FOLDED="true" HGAP="47" ID="ID_1622068086" MODIFIED="1518487921094" 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="1518487921094" 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" FOLDED="true" ID="ID_1466955376" MODIFIED="1518487921094" 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" FOLDED="true" ID="ID_1986771449" MODIFIED="1518487921094" TEXT="kombinierte Magie">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1489791798116" ID="ID_197500257" MODIFIED="1490927767187" 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="1489795286417" 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" FOLDED="true" ID="ID_476048128" MODIFIED="1518487921094" 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="1490985736292" TEXT="ist nur eine Registry mit etwas Funktionalität">
|
|
<node CREATED="1490986294710" ID="ID_558020871" MODIFIED="1490986301601" TEXT="Comand-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" FOLDED="true" ID="ID_1358247529" MODIFIED="1518487921094" 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" FOLDED="true" ID="ID_1395250463" MODIFIED="1518487921094" 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" FOLDED="true" ID="ID_1790054544" MODIFIED="1518487921094" 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="1512926192310" TEXT="TODO">
|
|
<font NAME="SansSerif" SIZE="10"/>
|
|
<icon BUILTIN="button_cancel"/>
|
|
<node CREATED="1440984130872" ID="ID_579146044" MODIFIED="1512926192310" TEXT="ResultIter">
|
|
<node CREATED="1440984214126" ID="ID_1124020862" MODIFIED="1441937180496" TEXT="GenNode-Zeiger"/>
|
|
<node CREATED="1440984221636" ID="ID_1279195509" MODIFIED="1441937180496" TEXT="Scope-Marker"/>
|
|
</node>
|
|
<node CREATED="1440984158949" ID="ID_1602941967" MODIFIED="1441937180496" TEXT="BuilderTrait"/>
|
|
<node CREATED="1440984166132" ID="ID_761913732" MODIFIED="1512926192311" 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="1512926192314" TEXT="TODO">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1441936422725" ID="ID_1581368426" MODIFIED="1441936433181" TEXT="ScopeExplorer-Mechanismus mit Stack">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node CREATED="1441936434644" ID="ID_455233841" MODIFIED="1512926192314" 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" ID="ID_1582043438" MODIFIED="1512926192315" 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" FOLDED="true" ID="ID_863330674" MODIFIED="1518487921095" 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" FOLDED="true" ID="ID_714336641" MODIFIED="1515976864012" 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="1512926192327" 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="1512926192328" 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="1512926192328" 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="1512926192333" 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" FOLDED="true" ID="ID_1319614474" MODIFIED="1518487921095" 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" FOLDED="true" HGAP="241" ID="ID_143203937" MODIFIED="1518487921095" 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" FOLDED="true" HGAP="46" ID="ID_1757651048" MODIFIED="1515976803002" 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" FOLDED="true" ID="ID_1312270317" MODIFIED="1515976776086" 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" FOLDED="true" ID="ID_1359413673" MODIFIED="1515976762959" 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" FOLDED="true" ID="ID_113467015" MODIFIED="1515976764335" 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" FOLDED="true" HGAP="38" ID="ID_870184525" MODIFIED="1515976765896" 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="1512926192359" TEXT=""Liste"">
|
|
<node CREATED="1443738196336" ID="ID_855336404" MODIFIED="1512926192359" 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" ID="ID_955544777" MODIFIED="1512926192360" 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="1512926192360" TEXT=""Map"">
|
|
<node CREATED="1443738196336" ID="ID_997066012" MODIFIED="1512926192360" TEXT="Vorteile">
|
|
<node CREATED="1443738237731" ID="ID_1438410748" MODIFIED="1443738244389" TEXT="Konformität garantiert"/>
|
|
</node>
|
|
<node CREATED="1443738199160" ID="ID_571621671" MODIFIED="1512926192361" 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="1512926192362" 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="1512926192363" 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" FOLDED="true" HGAP="364" ID="ID_1960988662" MODIFIED="1518487921095" 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" FOLDED="true" ID="ID_1084177503" MODIFIED="1515976728630">
|
|
<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" FOLDED="true" ID="ID_1143865339" MODIFIED="1515976718557" 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" FOLDED="true" HGAP="29" ID="ID_563496669" MODIFIED="1515976703728" 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" FOLDED="true" ID="ID_335386387" MODIFIED="1518487921095" 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>
|
|
<node CREATED="1482524641484" ID="ID_1651495185" MODIFIED="1518487921096" TEXT="Architektur"/>
|
|
<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="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="1515976422894" 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;"/>
|
|
<node CREATED="1515975677462" ID="ID_1848164117" MODIFIED="1515975685784" TEXT="Problem: Lebenszyklus">
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1492094235291" HGAP="36" ID="ID_451964727" MODIFIED="1520722071693" 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="hourglass"/>
|
|
<node CREATED="1520722130803" ID="ID_1194364308" MODIFIED="1520722135383" TEXT="Anforderungen">
|
|
<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="1521081653981" TEXT="Design" VSHIFT="11">
|
|
<node CREATED="1521081661071" ID="ID_500707872" MODIFIED="1521082831734" 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="1521082974424" 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="1521082719926" 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" ID="ID_510028220" MODIFIED="1521160639079" 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" ID="ID_985106186" MODIFIED="1521160594373" 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 CREATED="1520722136029" ID="ID_1922898574" MODIFIED="1520722144366" 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 CREATED="1520726342863" ID="ID_1875729983" MODIFIED="1520726350066" TEXT="moderne Lösung">
|
|
<node CREATED="1520726350894" ID="ID_47446040" MODIFIED="1520726354025" TEXT="Atomics"/>
|
|
<node CREATED="1520726354878" ID="ID_1241761015" MODIFIED="1520726363168" TEXT="vorgeschaltetes thread_local">
|
|
<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 BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1520722149761" ID="ID_39179906" MODIFIED="1521160728142" TEXT="neue Implementierung">
|
|
<icon BUILTIN="pencil"/>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1521160662691" ID="ID_1475127406" MODIFIED="1521238630164" TEXT="Design Syntax und Nutzungsmuster">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
<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="1521207965947" TEXT="Analyse">
|
|
<node CREATED="1521208242178" ID="ID_539882602" MODIFIED="1521208246821" TEXT="erforderliche Mechanismen">
|
|
<node CREATED="1521208254376" ID="ID_1933406851" MODIFIED="1521208256603" TEXT="Singleton">
|
|
<node CREATED="1521208339124" ID="ID_287433738" MODIFIED="1521209063045" TEXT="Closure über konkreten Ctor"/>
|
|
<node CREATED="1521208339124" ID="ID_826329078" MODIFIED="1521387972747" TEXT="(optional)Closure mit speziellen Argumenten"/>
|
|
<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 CREATED="1521208257336" ID="ID_1129640741" MODIFIED="1521208261323" TEXT="ServiceInstance">
|
|
<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" ID="ID_1092066450" MODIFIED="1521387948246" TEXT="(optional)Closure über konkreten Ctor"/>
|
|
</node>
|
|
<node CREATED="1521208261887" ID="ID_384054163" MODIFIED="1521208264827" TEXT="Local">
|
|
<node CREATED="1521209044203" ID="ID_1994153994" MODIFIED="1521409010023" TEXT="(optional)Closure mit speziellen Argumenten "/>
|
|
<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" ID="ID_267047467" MODIFIED="1521411859346" 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" ID="ID_1098048607" MODIFIED="1521411940211" 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" ID="ID_42798820" MODIFIED="1521411938195" 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="1521213015444" TEXT="Vereinheitlichung">
|
|
<node CREATED="1521213017168" ID="ID_1734833663" MODIFIED="1521213021084" 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" ID="ID_909632246" MODIFIED="1521236929411" 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" ID="ID_306994173" MODIFIED="1521237053757" TEXT="die Factory">
|
|
<node CREATED="1521237057169" ID="ID_1684411297" MODIFIED="1521237061196" 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" ID="ID_722062331" MODIFIED="1521238725975" TEXT="Ort für Storage">
|
|
<node CREATED="1521238557210" ID="ID_674365093" MODIFIED="1521238563917" TEXT="für die Factory">
|
|
<node CREATED="1521238571832" ID="ID_53152012" MODIFIED="1521238597166" TEXT="Heap">
|
|
<icon BUILTIN="button_cancel"/>
|
|
</node>
|
|
<node CREATED="1521238576920" ID="ID_1251870411" MODIFIED="1521242422287" 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" ID="ID_1596629515" MODIFIED="1521242373542" 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" ID="ID_1638918713" MODIFIED="1521238649354" TEXT="Factory-Trampolin">
|
|
<node CREATED="1521238662196" ID="ID_1029621449" MODIFIED="1521238671488" TEXT="Heap">
|
|
<icon BUILTIN="button_cancel"/>
|
|
</node>
|
|
<node CREATED="1521238665347" ID="ID_1310408215" MODIFIED="1521326747660" 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="1521239067040" 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 CREATED="1521169086441" ID="ID_284471203" MODIFIED="1521169088676" TEXT="Design">
|
|
<node CREATED="1521240056932" ID="ID_1189728630" MODIFIED="1521240061863" TEXT="Strukturen">
|
|
<node CREATED="1521240105285" ID="ID_711335043" MODIFIED="1521240109744" TEXT="Dependency-Factory">
|
|
<node CREATED="1521240317600" ID="ID_1626104494" MODIFIED="1521332944744" 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" ID="ID_468626388" MODIFIED="1521332949167" 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" ID="ID_1174783081" MODIFIED="1521241552521" 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="1521245899152" TEXT="könnte komplett wegfallen">
|
|
<icon BUILTIN="stop-sign"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1521242246702" ID="ID_650712800" MODIFIED="1521242253953" TEXT="DependInject">
|
|
<node CREATED="1521242468983" ID="ID_956915310" MODIFIED="1521242481313" TEXT="ist nur ein Lebenszyklus-Manager"/>
|
|
<node CREATED="1521242666204" ID="ID_219666575" MODIFIED="1521242758283" TEXT="delegiert an eine funktionale Konfig"/>
|
|
<node CREATED="1521242758775" ID="ID_594637783" MODIFIED="1521242762355" TEXT="ist komplett generisch"/>
|
|
</node>
|
|
<node CREATED="1521242784556" ID="ID_1052722676" MODIFIED="1521242792302" 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="1521240074107" TEXT="Detail-Fragen">
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1521169099047" ID="ID_1183392158" MODIFIED="1521332981466" TEXT="DependencyFactory-Rahmenklasse">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1521169111957" ID="ID_1706232823" MODIFIED="1521169126860" TEXT="Ort für den Implementierungs-Pointer">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1521169130251" ID="ID_1252056818" MODIFIED="1521169146081" TEXT="Zugang für DependInject">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1521324229082" ID="ID_1398878858" MODIFIED="1521326553373" TEXT="Storage">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node CREATED="1521324240124" ID="ID_1099103129" MODIFIED="1521333223154">
|
|
<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" ID="ID_1710451095" MODIFIED="1521333231077" TEXT="sehe aber auch keinen wirklichen Vorteil">
|
|
<icon BUILTIN="smiley-neutral"/>
|
|
<node CREATED="1521324529228" ID="ID_1786667023" MODIFIED="1521324543094" TEXT="man muß sich nicht um die de-Allokation kümmern"/>
|
|
<node CREATED="1521324554465" ID="ID_1577416641" MODIFIED="1521324568043" TEXT="Storage ist garantiert vorhanden, kein out-of-Memory"/>
|
|
<node CREATED="1521324668449" ID="ID_1013908061" MODIFIED="1521324682434" TEXT="Meyers Singleton ist elegant und schnell"/>
|
|
</node>
|
|
<node CREATED="1521324321601" ID="ID_805959606" MODIFIED="1521324477609" 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="1521326539612" TEXT="Heap-Allokation könnte insgesamt einfacher sein">
|
|
<icon BUILTIN="yes"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1521326541575" ID="ID_966508253" MODIFIED="1521326547454" TEXT="umgebaut auf Heap">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1521254014422" ID="ID_961824675" MODIFIED="1521324200616" TEXT="Meyers Singleton oder explizit ausprogrammieren?">
|
|
<icon BUILTIN="help"/>
|
|
<node CREATED="1521303577633" ID="ID_1665490706" MODIFIED="1521303615967" TEXT="das wäre die "Standard-Lösung" für Singletons"/>
|
|
<node CREATED="1521303616675" ID="ID_135579041" MODIFIED="1521303721048" TEXT="hier aber nicht sinnvoll...">
|
|
<node CREATED="1521303634705" ID="ID_433169847" MODIFIED="1521303737486" TEXT="weil wir explizit ein Lock halten müssen">
|
|
<node CREATED="1521303738410" ID="ID_213625497" MODIFIED="1521303748316" TEXT="um den Instanz-Pointer und die Factory zu managen"/>
|
|
<node CREATED="1521303749169" ID="ID_762346402" MODIFIED="1521303772913" TEXT="und der Compiler für Meyers Singleton nochmal ein Lock generiert"/>
|
|
</node>
|
|
<node CREATED="1521303775845" ID="ID_1256913997" MODIFIED="1521303814515" TEXT="weil wir unsere Singletons ggfs explizit zerstören wollen"/>
|
|
<node CREATED="1521303816879" ID="ID_1463480909" MODIFIED="1521303842240" TEXT="weil wir eine Closure für den Konstruktor erzeugen wollen"/>
|
|
<node CREATED="1521303847923" ID="ID_917362189" MODIFIED="1521303866596" TEXT="weil wir Abstrakte Typen explizit ausschließen müssen"/>
|
|
</node>
|
|
<node CREATED="1521303869768" ID="ID_712811337" MODIFIED="1521303904421" 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="1521303916944" TEXT="Fazit: explizit ist besser">
|
|
<icon BUILTIN="yes"/>
|
|
</node>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1521253797733" ID="ID_1640990866" MODIFIED="1521253802565" TEXT="Fehlerbehandlung">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
<node COLOR="#338800" CREATED="1521253803963" ID="ID_100415207" MODIFIED="1521332991888" TEXT="Installation wenn Factory bereits genutzt wurde">
|
|
<icon BUILTIN="button_ok"/>
|
|
</node>
|
|
<node COLOR="#338800" CREATED="1521253831776" ID="ID_1332033733" MODIFIED="1521387909137" TEXT="Zugriff auf Service bevor er hochgefahren wurde">
|
|
<icon BUILTIN="button_ok"/>
|
|
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1521253858692" ID="ID_442301762" MODIFIED="1521385565612" TEXT="tückisch">
|
|
<icon BUILTIN="broken-line"/>
|
|
</node>
|
|
<node CREATED="1521253867787" ID="ID_662728746" MODIFIED="1521385616988" TEXT="Lifecycle-Handle existiert erst viel später">
|
|
<icon BUILTIN="messagebox_warning"/>
|
|
</node>
|
|
<node CREATED="1521385652999" ID="ID_1974848336" MODIFIED="1521385657839" TEXT="statischer Schutz">
|
|
<icon BUILTIN="button_cancel"/>
|
|
<node CREATED="1521385660206" ID="ID_200575604" MODIFIED="1521385685919" TEXT="fragil">
|
|
<icon BUILTIN="stop-sign"/>
|
|
<node CREATED="1521385687874" ID="ID_1561975152" MODIFIED="1521386168998" TEXT="C++ kennt keine statische Klassen-Initialisierung">
|
|
<icon BUILTIN="info"/>
|
|
</node>
|
|
<node CREATED="1521385709463" ID="ID_713439022" MODIFIED="1521385757820" TEXT="workaround">
|
|
<node CREATED="1521385721637" ID="ID_1822970415" MODIFIED="1521386025178" TEXT="Initialisieren eines statischen member">
|
|
<icon BUILTIN="idea"/>
|
|
</node>
|
|
<node CREATED="1521385768359" ID="ID_1123247553" MODIFIED="1521385776914" TEXT="ist unzuverlässig">
|
|
<node CREATED="1521385782861" ID="ID_1190214158" MODIFIED="1521385787152" TEXT="erfordert non-const member"/>
|
|
<node CREATED="1521385787980" ID="ID_81600101" MODIFIED="1521385794375" TEXT="wird vom Compiler wegoptimiert"/>
|
|
<node CREATED="1521385795059" ID="ID_1426898485" MODIFIED="1521386008204" 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="1521386187993" TEXT="ist undurchsichtig">
|
|
<icon BUILTIN="smily_bad"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1521386206627" ID="ID_1928841192" MODIFIED="1521386214661" TEXT="erzeugt eh bloß eine Fehlermeldung"/>
|
|
<node CREATED="1521386219297" ID="ID_1181038545" MODIFIED="1521386233755" TEXT="...was auch noch beim Hochfahren des Service passieren kann"/>
|
|
</node>
|
|
<node CREATED="1521386241406" ID="ID_1481722887" MODIFIED="1521386259129" TEXT="es ist ein Architektur-Problem">
|
|
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
|
|
<icon BUILTIN="yes"/>
|
|
</node>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1521253986491" ID="ID_546204807" MODIFIED="1521254005609" TEXT="Singleton wenn Interfaceklasse abstrakt ist">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1521160691830" ID="ID_53329830" MODIFIED="1521160718843" TEXT="Implementierung ausführen">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1521160700669" ID="ID_978221585" MODIFIED="1521160718035" TEXT="Dokumentation">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1520722160591" ID="ID_135546699" MODIFIED="1520722168810" TEXT="Unit-Test"/>
|
|
<node CREATED="1520722155112" ID="ID_1512641426" MODIFIED="1520722159028" TEXT="Integration">
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1521160755182" ID="ID_678080556" MODIFIED="1521160802831" TEXT="Umbenennen">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1521160765588" ID="ID_1857896991" MODIFIED="1521160801792" TEXT="Konfig-Aufrufe anpassen">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
</node>
|
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1521160792856" ID="ID_367925099" MODIFIED="1521160800344" TEXT="System läuft wie zuvor">
|
|
<icon BUILTIN="flag-yellow"/>
|
|
</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>
|
|
<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>
|
|
</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>
|
|
<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="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="1518487921097" TEXT="SessionManager muß auf Sperre warten">
|
|
<linktarget COLOR="#5a97df" DESTINATION="ID_1378897740" ENDARROW="Default" ENDINCLINATION="9540;0;" ID="Arrow_ID_1446486242" SOURCE="ID_284397306" STARTARROW="None" STARTINCLINATION="9540;0;"/>
|
|
<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>
|
|
<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" ID="ID_181262071" MODIFIED="1518487921098" TEXT="JobPlanning">
|
|
<linktarget COLOR="#5379b5" DESTINATION="ID_181262071" ENDARROW="Default" ENDINCLINATION="41;130;" ID="Arrow_ID_1786254694" SOURCE="ID_1543264108" STARTARROW="Default" STARTINCLINATION="-100;0;"/>
|
|
<node CREATED="1512925265295" ID="ID_1502143527" MODIFIED="1520721823019">
|
|
<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;"/>
|
|
<icon BUILTIN="flag-blue"/>
|
|
<node CREATED="1512925334501" ID="ID_409327286" MODIFIED="1518487921098" TEXT="IterExplorer">
|
|
<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="1518487921098" TEXT="verwendet für JobPlanning">
|
|
<arrowlink COLOR="#5379b5" DESTINATION="ID_181262071" ENDARROW="Default" ENDINCLINATION="41;130;" ID="Arrow_ID_1786254694" STARTARROW="Default" STARTINCLINATION="-100;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 CREATED="1512927162098" HGAP="93" ID="ID_1774532014" MODIFIED="1518487921098" TEXT="Einsichten" VSHIFT="37">
|
|
<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 CREATED="1512928287812" ID="ID_212632305" MODIFIED="1518487921098" TEXT="Fazit">
|
|
<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>
|
|
</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 CREATED="1477523681978" HGAP="23" ID="ID_400257229" MODIFIED="1518487921099" TEXT="Richtlinien" VSHIFT="-21">
|
|
<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="1518487921099" 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>
|
|
</node>
|
|
</node>
|
|
<node CREATED="1495221220040" HGAP="43" ID="ID_782313223" MODIFIED="1518487921099" TEXT="Framework" VSHIFT="-20">
|
|
<node CREATED="1495221242285" ID="ID_185528211" MODIFIED="1518487921099" TEXT="Applikation">
|
|
<node CREATED="1495221272545" ID="ID_624250153" MODIFIED="1518487921099" 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 CREATED="1495221530614" ID="ID_1085605910" MODIFIED="1518487921099" TEXT="initialisiert das Framework"/>
|
|
<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="1495223467588" ID="ID_666842762" MODIFIED="1518487921099" TEXT="run">
|
|
<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="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="1518487921099">
|
|
<richcontent TYPE="NODE"><html>
|
|
<head>
|
|
|
|
</head>
|
|
<body>
|
|
<p>
|
|
initialisiert das
|
|
</p>
|
|
<p>
|
|
Framework
|
|
</p>
|
|
</body>
|
|
</html></richcontent>
|
|
<node CREATED="1495224862227" ID="ID_762530588" MODIFIED="1518487921099" TEXT="init_gtkmm_internals"/>
|
|
<node CREATED="1495224890119" ID="ID_137730290" MODIFIED="1518487921099" TEXT="statische funktion"/>
|
|
</node>
|
|
<node CREATED="1495224625466" ID="ID_668309036" MODIFIED="1518487921099" TEXT="run">
|
|
<node CREATED="1495224647071" ID="ID_660577000" MODIFIED="1518487921099" TEXT="gtk_main">
|
|
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
|
|
<node CREATED="1495224927362" ID="ID_904812640" MODIFIED="1518487921099" TEXT="Kommandozeile"/>
|
|
</node>
|
|
<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>
|
|
</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="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="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="1518487921100" 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" ID="ID_1400891730" MODIFIED="1518487921100" 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="1518487921101" TEXT="need to get foreach working">
|
|
<icon BUILTIN="yes"/>
|
|
<node CREATED="1478032633704" ID="ID_1067159761" MODIFIED="1518487921101" TEXT="Hint: show_all_children"/>
|
|
<node CREATED="1478032642310" ID="ID_246127915" LINK="https://developer.gnome.org/gtkmm-tutorial/stable/sec-custom-containers.html.en" MODIFIED="1518487921101" TEXT="Tutorial: custom container"/>
|
|
<node CREATED="1478037794935" HGAP="41" ID="ID_614099643" MODIFIED="1518487921101" 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="1518487921101" TEXT="wie">
|
|
<icon BUILTIN="idea"/>
|
|
<node CREATED="1478037893658" ID="ID_1711061664" MODIFIED="1518487921101" TEXT="trigger-Variable"/>
|
|
<node CREATED="1478037899458" ID="ID_132096735" MODIFIED="1518487921101" 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="1518487921101" 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="-227;-646;"/>
|
|
<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="1518487921101" 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="1482365415326" HGAP="87" ID="ID_886002365" MODIFIED="1518487921102" TEXT="Standard C++" VSHIFT="-21">
|
|
<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="1518487921102" TEXT="static init">
|
|
<node CREATED="1450489361187" ID="ID_1013681859" LINK="http://stackoverflow.com/a/17803616/444796" MODIFIED="1518487921102" TEXT="gute Zusammenfassung (SO)">
|
|
<icon BUILTIN="idea"/>
|
|
</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>
|
|
<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" ID="ID_1536988357" MODIFIED="1518487921102" POSITION="left" TEXT="Doku">
|
|
<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 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="1518487921106" TEXT="Au Au"/>
|
|
</node>
|
|
</node>
|
|
</map>
|