Invocation: investigate ways to configure the output-info
...still not convinced that this is a good design, since it seems to subvert the general design to treat one special case. However, I can't see a good way to address this special case directly
This commit is contained in:
parent
a4ff2081b9
commit
4bda550f68
3 changed files with 152 additions and 64 deletions
|
|
@ -446,7 +446,7 @@ namespace engine {
|
|||
{
|
||||
for (uint i=0; i<outTypes.size(); ++i)
|
||||
{
|
||||
BuffHandle resultData = outTypes[i].lockBuffer();
|
||||
BuffHandle resultData = outTypes[i].lockBuffer(); //////////////////////////OOO LocalTag for output must be injected here -- just HOW???
|
||||
feed.outBuff.createAt(i, move(resultData));
|
||||
}
|
||||
feed.connect (leadPort.size(),outTypes.size());
|
||||
|
|
|
|||
|
|
@ -81,6 +81,9 @@ namespace engine {
|
|||
std::vector<TypeMarker> buffTypes;
|
||||
std::vector<ProviderRef> providers;
|
||||
|
||||
uint resultSlot{0};
|
||||
bool isOutput{false};
|
||||
|
||||
struct ServiceCtx
|
||||
{
|
||||
ProviderRef mem;
|
||||
|
|
@ -100,7 +103,7 @@ namespace engine {
|
|||
|
||||
template<class BU>
|
||||
SimpleWeavingBuilder
|
||||
appendBufferTypes(size_t cnt)
|
||||
appendBufferTypes(uint cnt)
|
||||
{
|
||||
while (cnt--)
|
||||
buffTypes.emplace_back([](BufferProvider& provider)
|
||||
|
|
@ -110,11 +113,20 @@ namespace engine {
|
|||
}
|
||||
|
||||
SimpleWeavingBuilder
|
||||
selectOutputSlot(size_t i)
|
||||
selectResultSlot(uint idx)
|
||||
{
|
||||
maybeFillDefaultProviders (i+1);
|
||||
ENSURE (providers.size() > i);
|
||||
providers[i] = ctx.output;
|
||||
this->resultSlot = idx;
|
||||
return move(*this);
|
||||
}
|
||||
|
||||
SimpleWeavingBuilder
|
||||
markAsOutputNode()
|
||||
{
|
||||
maybeFillDefaultProviders (resultSlot+1);
|
||||
ENSURE (providers.size() > resultSlot);
|
||||
providers[resultSlot] = ctx.output;
|
||||
this->isOutput = true;
|
||||
return move(*this);
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -123,15 +135,16 @@ namespace engine {
|
|||
{
|
||||
maybeFillDefaultProviders (buffTypes.size());
|
||||
uint i=0;
|
||||
for (auto& typeCtor : buffTypes)
|
||||
outTypes.emplace (typeCtor(providers[i]));
|
||||
for (auto& typeConstructor : buffTypes)
|
||||
outTypes.emplace (
|
||||
typeConstructor (providers[i]));
|
||||
|
||||
ENSURE (leadPort.size() < N);
|
||||
ENSURE (outTypes.size() < N);
|
||||
|
||||
using Product = Turnout<SimpleDirectInvoke<N,FUN>>;
|
||||
///////////////////////////////OOO need a way to prepare SeveralBuilder-instances for leadPort and outDescr --> see NodeBuilder
|
||||
return Product{leadPort.build(), outTypes.build};
|
||||
return Product{leadPort.build(), outTypes.build()};
|
||||
}
|
||||
|
||||
private:
|
||||
|
|
|
|||
|
|
@ -5525,9 +5525,7 @@
|
|||
</node>
|
||||
<node CREATED="1665801624247" ID="ID_738176993" MODIFIED="1665801755873" TEXT="Hinting und Scharfzeichnen">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
das ist Handarbeit und erfordert Erfahrung
|
||||
|
|
@ -5548,9 +5546,7 @@
|
|||
</node>
|
||||
<node CREATED="1665801812606" ID="ID_437217153" MODIFIED="1665801844475" TEXT="1-2 Pixel »Luft« lassen">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
notwendig, damit Hinting, Scharfzeichnen und drop-Shaddows funktionieren
|
||||
|
|
@ -5579,9 +5575,7 @@
|
|||
<node CREATED="1534336320373" ID="ID_708892482" MODIFIED="1557498707218" TEXT="Grundbausteine">
|
||||
<node CREATED="1537659522174" ID="ID_1583657425" MODIFIED="1679362063142" TEXT="primary widgets">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
<b>Definition</b>: komplexe Widget-Strukturen,
|
||||
|
|
@ -6546,9 +6540,7 @@
|
|||
<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>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
<i>dort </i>wird der Kontext aufgegriffen
|
||||
|
|
@ -8260,9 +8252,7 @@
|
|||
<icon BUILTIN="messagebox_warning"/>
|
||||
<node CREATED="1509501075699" ID="ID_41890562" MODIFIED="1509501075699">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
...aber im Moment der Lösung brauche ich den Pfad aufwärts.
|
||||
|
|
@ -11003,9 +10993,7 @@
|
|||
<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>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
rLet(40878 < 18446744073709551615) → S
|
||||
|
|
@ -14303,9 +14291,7 @@
|
|||
</node>
|
||||
<node CREATED="1518212683340" ID="ID_1968312736" MODIFIED="1518487921070">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
<i>könnte</i> man zulassen
|
||||
|
|
@ -51875,9 +51861,7 @@
|
|||
<node CREATED="1491692996639" ID="ID_1249742943" MODIFIED="1491693005081" TEXT="double-dispatch"/>
|
||||
<node CREATED="1491693382706" ID="ID_1886288474" MODIFIED="1576282357987" TEXT="CommandHandler hat keinen Rückgabewert">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
d.h. wir müßten dann auch noch das Interface brechen
|
||||
|
|
@ -51890,9 +51874,7 @@
|
|||
</node>
|
||||
<node CREATED="1491693197435" ID="ID_1151359036" MODIFIED="1576282357987" TEXT="InteractionState ist kein Tangible">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
das heißt, für das ganze Thema InteractionControl
|
||||
|
|
@ -51917,9 +51899,7 @@
|
|||
</node>
|
||||
<node CREATED="1491693246284" ID="ID_553376017" MODIFIED="1576282357986">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
Tangible sollte InteractionState <i>verwenden</i>
|
||||
|
|
@ -51927,9 +51907,7 @@
|
|||
</body>
|
||||
</html></richcontent>
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
....und demnach sollte InteractionState eben grade nicht von Tangible wissen
|
||||
|
|
@ -51971,9 +51949,7 @@
|
|||
<node CREATED="1492293430689" ID="ID_1472205001" MODIFIED="1492293430689" TEXT="weitgehender Verzicht auf Konsistenzprüfungen"/>
|
||||
<node CREATED="1492293588400" ID="ID_1878334690" MODIFIED="1576282357985" TEXT="Binden und Dispatch müssen kombiniert werden">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
...sonst wird die ganze Sache absurd
|
||||
|
|
@ -52029,9 +52005,7 @@
|
|||
<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>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
SessionCommandService::<b>trigger</b>
|
||||
|
|
@ -88585,7 +88559,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
</html></richcontent>
|
||||
<linktarget COLOR="#4395d3" DESTINATION="ID_1329080039" ENDARROW="Default" ENDINCLINATION="-105;0;" ID="Arrow_ID_1999279188" SOURCE="ID_1451110951" STARTARROW="None" STARTINCLINATION="6;-21;"/>
|
||||
</node>
|
||||
<node CREATED="1721867643305" ID="ID_327945127" MODIFIED="1721947494363" TEXT="aus dem Schema ausbrechen und diesen Buffer dirrekt durchgeben">
|
||||
<node CREATED="1721867643305" ID="ID_327945127" MODIFIED="1722393290013" TEXT="aus dem Schema ausbrechen und diesen Buffer dirrekt durchgeben">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
|
|
@ -88594,6 +88568,18 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
<linktarget COLOR="#ff2d7f" DESTINATION="ID_327945127" ENDARROW="Default" ENDINCLINATION="3056;127;" ID="Arrow_ID_824161116" SOURCE="ID_403641521" STARTARROW="None" STARTINCLINATION="309;-17;"/>
|
||||
<node COLOR="#5b280f" CREATED="1722393266885" HGAP="48" ID="ID_678418949" MODIFIED="1722393350799" TEXT="Vorsicht: die Struktur ist rekursiv">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
...diese ganze Überlegung übersieht, daß auf tieferen Ebenen ja ebenfalls ein Output-Buffer zurückgeliefert werden muß; nur dort unten ist dann kein spezieller BufferProvider notwendig
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
<icon BUILTIN="stop-sign"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1721866938881" ID="ID_1696632082" MODIFIED="1721946997871" TEXT="die Annahme machen, daß es in jedem Callstack nur einen solchen Request gibt">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
|
|
@ -88898,40 +88884,69 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<arrowlink DESTINATION="ID_743923267" ENDARROW="Default" ENDINCLINATION="9;90;" ID="Arrow_ID_674912377" STARTARROW="None" STARTINCLINATION="189;8;"/>
|
||||
<arrowlink COLOR="#8e30c2" DESTINATION="ID_128884200" ENDARROW="Default" ENDINCLINATION="53;-3;" ID="Arrow_ID_182326182" STARTARROW="None" STARTINCLINATION="-9;58;"/>
|
||||
<icon BUILTIN="forward"/>
|
||||
<node BACKGROUND_COLOR="#f8f1cb" COLOR="#a50125" CREATED="1722392552172" HGAP="40" ID="ID_1570989783" MODIFIED="1722392597788" TEXT="es bleiben aber Zweifel" VSHIFT="21">
|
||||
<arrowlink COLOR="#ff0c4e" DESTINATION="ID_93208083" ENDARROW="Default" ENDINCLINATION="2326;0;" ID="Arrow_ID_1577193633" STARTARROW="Default" STARTINCLINATION="-344;36;"/>
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
<node CREATED="1722392616475" ID="ID_946046395" MODIFIED="1722392747592" TEXT="diese ganze Lösung erscheint mir als unsaubere Manipulation">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<ul>
|
||||
<li>
|
||||
Da wird ein spezielle BufferProvider eingeführt, der dann doch gar kein richtiger BufferProvider ist (oder?)
|
||||
</li>
|
||||
<li>
|
||||
und damit der funktionieren kann, muß man ein LocalTag explizit am bestehenden System vorbei schieben
|
||||
</li>
|
||||
</ul>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1722393055292" ID="ID_1420696816" MODIFIED="1722393080929" TEXT="gibt es denn wirklich keinen direkten Zugang für diesen einen Spezialfall?">
|
||||
<icon BUILTIN="help"/>
|
||||
<node CREATED="1722393091606" ID="ID_1834757825" MODIFIED="1722393104456" TEXT="ich weiß daß es der top-Level-Aufruf ist"/>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1722393128569" ID="ID_403641521" MODIFIED="1722393479947" TEXT="und wenn man nun doch den Buffer hier direkt injiziert?">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
zunächst hatte ich diese Idee verworfen, weil sie die <i>einfache Symmetrie der Daten-Feeds durchkreuzt.</i> Nun fällt mir aber auf, daß das ja nur auf dem Top-Level passieren muß, und daß genau da in jedem Fall ein Eingriff notwendig wird, denn man muß die Buffer-Info ja dort injizieren. Daran führt kein Weg vorbei
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
<arrowlink COLOR="#ff2d7f" DESTINATION="ID_327945127" ENDARROW="Default" ENDINCLINATION="3056;127;" ID="Arrow_ID_824161116" STARTARROW="None" STARTINCLINATION="309;-17;"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1722393034722" ID="ID_1964241515" MODIFIED="1722393053508" TEXT="Eine Nacht darüber schlafen!">
|
||||
<icon BUILTIN="yes"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node COLOR="#5b280f" CREATED="1722379006311" ID="ID_665293589" MODIFIED="1722380080995" TEXT="Möglichkeit-4 ist oberflächlich clever — aber inhaltlich inkonsequent">
|
||||
<icon BUILTIN="button_cancel"/>
|
||||
<node CREATED="1722379064983" ID="ID_360363502" MODIFIED="1722379260985" TEXT="die Ähnlichkeit zwischen BuffHandle und DataSink ist nur oberflächlich">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
...sie entsteht dadurch, daß beide auf bewährten Lösungsmustern aufbauen; das heißt aber noch nicht, daß beide eine gemeinsame Natur haben
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
<node CREATED="1722379089220" ID="ID_673929506" MODIFIED="1722379877456" TEXT="DataSink ist bewußt mit ref-counting, BuffHandle ist in der Verwendung offen">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
In beiden Fällen gibt es das Problem der Freigabe — aber meine Bewertung ist unterschiedlich ausgefallen: für einen Ausgabe-Vorgang gibt es verschiedene kritische Zustände, und die Möglichkeit einer Verklemmung; und <i>genau weil man den Protokoll-Status über ein Timeout bestimmen kann,</i> besteht auch die Gefahr, daß ein verspäteter Rechenprozeß in Verletzung des Protokolls weiterhin in die Ausgabe schreibt. Ganz anders beim BuffHandle, welches eine möglichst leichtgewichtige low-level-Abstraktion darstellt; die Methoden am dem Handle dienen nur dazu, Protokoll-Schritte auf eine höhere Ebene zurückzumelden, aber der Gebrauch des Handles wird nicht selber durch ein Protokoll geregelt. Hinzu kommt, daß ref-counting einen gewissen Performance-Overhead hat, der für ein BuffHandle vielleicht schon kritisch werden könnte; eine DataSink dagegen wird auf top-Level erstellt und wird dann nach unten nur ausgeliehen
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
<node CREATED="1722379126698" ID="ID_1998092289" MODIFIED="1722380024273" TEXT="Ein Ausgabevorgang und eine Buffer-Verwendung sind zwei verschiedene Dinge">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
Das ist das wichtigste Argument: sie finden auf verschiedenen Abstraktionsebenen statt. Der Ausgabevorgang <i>kann möglicherweise</i>  eine Buffer-Verwendung mit einschließen — letztere bekommt aber nur durch den Kontext ihre Bedeutung
|
||||
|
|
@ -88941,10 +88956,21 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node COLOR="#5b280f" CREATED="1722384533324" ID="ID_128884200" MODIFIED="1722384881672" TEXT="Ergebnis: kein neues API notwendig">
|
||||
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1722384533324" ID="ID_128884200" MODIFIED="1722392116636" TEXT="API-Ergänzung: LocalTag durchreichen">
|
||||
<arrowlink COLOR="#8c1444" DESTINATION="ID_450967698" ENDARROW="Default" ENDINCLINATION="-313;-10;" ID="Arrow_ID_414353144" STARTARROW="None" STARTINCLINATION="-367;0;"/>
|
||||
<linktarget COLOR="#8e30c2" DESTINATION="ID_128884200" ENDARROW="Default" ENDINCLINATION="53;-3;" ID="Arrow_ID_182326182" SOURCE="ID_70781847" STARTARROW="None" STARTINCLINATION="-9;58;"/>
|
||||
<icon BUILTIN="button_cancel"/>
|
||||
<icon BUILTIN="flag-pink"/>
|
||||
<node CREATED="1722392284686" ID="ID_1073120762" MODIFIED="1722392451719" TEXT="muß das wohl doch in den Buffer-Descriptor einbauen">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
das Problem ist nämlich: nach innen wird nur noch die TypeID weitergegeben, weil der eigentliche Entry, in dem das LocalTag dann zugänglich wäre, nur in der Metadaten-Tabelle liegt. Im Buffer-Descriptor liegt auch nur die Hash-ID des Typs
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
<node CREATED="1722392313295" ID="ID_854136592" MODIFIED="1722392349478" TEXT="allerdings nur transient — damit eine andere Type-ID ankommt"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
|
|
@ -89007,6 +89033,55 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<node CREATED="1722385177230" ID="ID_795154055" MODIFIED="1722385231890" TEXT="das LocalTag wird aber nur an einer Stelle (top-Level) gebraucht">
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1722385605151" ID="ID_519028808" MODIFIED="1722385612920" TEXT="Markieren des Output-Slot">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node BACKGROUND_COLOR="#f8f1cb" COLOR="#a50125" CREATED="1722389530744" ID="ID_1277418704" MODIFIED="1722389536610" TEXT="zu unterscheiden">
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
<node CREATED="1722389538361" ID="ID_35436842" MODIFIED="1722389799354" TEXT="der resultSlot (auf jeder Ebene)">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
auf jeder Ebene gibt es genau eine Slot-ID, von der die Ergebnis-Daten an den Aufrufer zurückgegeben werden. Ohne explizite Konfig ist das der 1.Slot (Konvention). Von dieser Position wird das BuffHandle nicht geschlossen, sondern als Ergebnis geliefert und wandert damit auf die Eingabe-Seite der nächsthöheren Node
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
<node CREATED="1722389548648" ID="ID_81925191" MODIFIED="1722391084422" TEXT="mark Output-Provider">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
speziell für den top-Level wird ein OutputBufferProvider eingesetzt, der an dieser Stelle dann auch noch ein LocalTag bekommen muß
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1722391086589" ID="ID_1184230118" MODIFIED="1722391099502" TEXT="schön ist das nicht">
|
||||
<icon BUILTIN="smily_bad"/>
|
||||
<node CREATED="1722391101902" ID="ID_304093335" MODIFIED="1722391172338" TEXT="hier müssen für eine Sache zwei Konfigs gesetzt werden">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
und diese müssen matchen
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
<node CREATED="1722391173771" ID="ID_720199848" MODIFIED="1722391182384" TEXT="und das alles für einen einzigen Spezialfall"/>
|
||||
<node BACKGROUND_COLOR="#fafe99" COLOR="#fa002a" CREATED="1722391186291" ID="ID_93208083" MODIFIED="1722392597788">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
ich empfinde das als einen <b>schrecklichen Hack</b>
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
<linktarget COLOR="#ff0c4e" DESTINATION="ID_93208083" ENDARROW="Default" ENDINCLINATION="2326;0;" ID="Arrow_ID_1577193633" SOURCE="ID_1570989783" STARTARROW="Default" STARTINCLINATION="-344;36;"/>
|
||||
<icon BUILTIN="smiley-angry"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
|
|
|
|||
Loading…
Reference in a new issue