Invocation: draft a library helper for chained inline tuples

The idea is to build an intrusive linked list of »storage frames«, each of which holds a tuple of arbitrarily typed values.

For such a compound, the C++ »tuple protocol« can be implemented, recursively, serving as base for all actual data access...
This commit is contained in:
Fischlurch 2024-12-09 23:02:03 +01:00
parent 8069c874f1
commit bc6b69ce71
2 changed files with 94 additions and 66 deletions

View file

@ -42,14 +42,15 @@
#define LIB_HETERO_DATA_H #define LIB_HETERO_DATA_H
//#include "lib/error.hpp" #include "lib/error.hpp"
//#include "lib/symbol.hpp" //#include "lib/symbol.hpp"
#include "lib/nocopy.hpp" #include "lib/nocopy.hpp"
#include "lib/linked-elements.hpp" //#include "lib/linked-elements.hpp"
#include "lib/meta/typelist.hpp" #include "lib/meta/typelist.hpp"
//#include <algorithm> //#include <algorithm>
//#include <vector> //#include <vector>
#include <tuple>
namespace lib { namespace lib {
@ -63,6 +64,7 @@ namespace lib {
struct StorageFrame struct StorageFrame
: StorageLoc : StorageLoc
, std::tuple<DATA...> , std::tuple<DATA...>
, util::NonCopyable
{ {
}; };
@ -77,18 +79,59 @@ namespace lib {
template<class TAIL, typename...DATA> template<class TAIL, typename...DATA>
class HeteroData<meta::Node<StorageFrame<DATA...>,TAIL>> class HeteroData<meta::Node<StorageFrame<DATA...>,TAIL>>
: protected StorageFrame<DATA...> : StorageFrame<DATA...>
{ {
public: using _Self = HeteroData;
size_t constexpr size(); using _Tail = HeteroData<TAIL>;
using Frame = StorageFrame<DATA...>;
static constexpr size_t localSiz = sizeof...(DATA);
template<size_t slot> template<size_t slot>
static constexpr bool isLocal = slot < localSiz;
_Tail&
accessTail()
{
REQUIRE (Frame::next, "HeteroData storage logic broken: follow-up extent not yet allocated");
return * reinterpret_cast<_Tail*> (Frame::next);
}
public:
static constexpr size_t
size()
{
return localSiz + _Tail::size();
}
template<size_t slot>
using Elm_t = std::conditional<isLocal<slot>, std::tuple_element_t<slot,Frame>
, typename _Tail::template Elm_t<slot-localSiz>>;
template<size_t slot>
Elm_t<slot>&
get()
{
static_assert (slot < size(), "HeteroData access index beyond defined data");
if constexpr (slot < localSiz)
return std::get<slot> (*this);
else
return accessTail().template get<slot-localSiz>();
}
struct Navigator struct Navigator
{ {
}; };
}; };
template<>
class HeteroData<meta::NullType>
{
public:
static size_t constexpr size() { return 0; }
};
} // namespace lib } // namespace lib
#endif /*LIB_HETERO_DATA_H*/ #endif /*LIB_HETERO_DATA_H*/

View file

@ -21111,9 +21111,7 @@
<node CREATED="1575219523764" ID="ID_1012093929" MODIFIED="1575219544539" TEXT="das w&#xe4;re eine (indirekt) zirkul&#xe4;re Beziehung zwischen Implementierungs-Enit&#xe4;ten"/> <node CREATED="1575219523764" ID="ID_1012093929" MODIFIED="1575219544539" TEXT="das w&#xe4;re eine (indirekt) zirkul&#xe4;re Beziehung zwischen Implementierungs-Enit&#xe4;ten"/>
<node CREATED="1575219832435" ID="ID_1357635182" MODIFIED="1575219937587" TEXT="die aber effektiv (noch) nicht realisiert wird"> <node CREATED="1575219832435" ID="ID_1357635182" MODIFIED="1575219937587" TEXT="die aber effektiv (noch) nicht realisiert wird">
<richcontent TYPE="NOTE"><html> <richcontent TYPE="NOTE"><html>
<head> <head/>
</head>
<body> <body>
<p> <p>
will sagen: es gibt keinen Zugriff, der vom Canvas ausgeht, durch die TrackBodies durchsteigt, und dann indirekt in den Cavas zur&#252;ck greift. Denn -- zumindest im Moment -- handelt es sich um zwei klar geschiedene Belange: einmal das Rendern der Track-Struktur, und andererseits das platzieren von Clips auf dem Canvas will sagen: es gibt keinen Zugriff, der vom Canvas ausgeht, durch die TrackBodies durchsteigt, und dann indirekt in den Cavas zur&#252;ck greift. Denn -- zumindest im Moment -- handelt es sich um zwei klar geschiedene Belange: einmal das Rendern der Track-Struktur, und andererseits das platzieren von Clips auf dem Canvas
@ -21543,9 +21541,7 @@
<node CREATED="1675387040398" ID="ID_184557686" MODIFIED="1675387059617" TEXT="DisplayFrame::getClipHook() &#x27fc; liefert DisplayFrame selber"/> <node CREATED="1675387040398" ID="ID_184557686" MODIFIED="1675387059617" TEXT="DisplayFrame::getClipHook() &#x27fc; liefert DisplayFrame selber"/>
<node CREATED="1675387061219" ID="ID_317712434" MODIFIED="1675387122437" TEXT="&#x27f9; DisplayFrame implementiert CanvasHook nur f&#xfc;r eigentlichen Track-Content"> <node CREATED="1675387061219" ID="ID_317712434" MODIFIED="1675387122437" TEXT="&#x27f9; DisplayFrame implementiert CanvasHook nur f&#xfc;r eigentlichen Track-Content">
<richcontent TYPE="NOTE"><html> <richcontent TYPE="NOTE"><html>
<head> <head/>
</head>
<body> <body>
<p> <p>
<font face="Monospaced" color="#312a7f">int hookAdjY (int yPos)&#160;&#160;override { return yPos + body_.getContentOffsetY(); };</font> <font face="Monospaced" color="#312a7f">int hookAdjY (int yPos)&#160;&#160;override { return yPos + body_.getContentOffsetY(); };</font>
@ -22091,9 +22087,7 @@
<icon BUILTIN="button_ok"/> <icon BUILTIN="button_ok"/>
<node CREATED="1612003423875" ID="ID_781800644" MODIFIED="1612003549567"> <node CREATED="1612003423875" ID="ID_781800644" MODIFIED="1612003549567">
<richcontent TYPE="NODE"><html> <richcontent TYPE="NODE"><html>
<head> <head/>
</head>
<body> <body>
<p> <p>
Ursache ist ein <i>schiefes Design</i> Ursache ist ein <i>schiefes Design</i>
@ -22905,9 +22899,7 @@
</body> </body>
</html></richcontent> </html></richcontent>
<richcontent TYPE="NOTE"><html> <richcontent TYPE="NOTE"><html>
<head> <head/>
</head>
<body> <body>
<p> <p>
<i>&quot;was kann denn schon passieren??&quot;</i> <i>&quot;was kann denn schon passieren??&quot;</i>
@ -23692,9 +23684,7 @@
<node CREATED="1555022710839" ID="ID_1166296639" MODIFIED="1557498707226" TEXT="mu&#xdf; in alle Nutzer injiziert werden"/> <node CREATED="1555022710839" ID="ID_1166296639" MODIFIED="1557498707226" TEXT="mu&#xdf; in alle Nutzer injiziert werden"/>
<node CREATED="1555022761189" ID="ID_640769952" MODIFIED="1576282358077" TEXT="wie? geht wohl nur direkte Referenz"> <node CREATED="1555022761189" ID="ID_640769952" MODIFIED="1576282358077" TEXT="wie? geht wohl nur direkte Referenz">
<richcontent TYPE="NOTE"><html> <richcontent TYPE="NOTE"><html>
<head> <head/>
</head>
<body> <body>
<p> <p>
es ist hier kein by-Name-Zugriff, es ist hier kein by-Name-Zugriff,
@ -25813,9 +25803,7 @@
<node CREATED="1575653121588" ID="ID_46973905" MODIFIED="1575653151603" TEXT="also bleibt nur, die Typisierung in den Funktions-Signaturen explizit auszudr&#xfc;cken"/> <node CREATED="1575653121588" ID="ID_46973905" MODIFIED="1575653151603" TEXT="also bleibt nur, die Typisierung in den Funktions-Signaturen explizit auszudr&#xfc;cken"/>
<node CREATED="1576876291037" ID="ID_114617089" MODIFIED="1576876404029" TEXT="dieses Problem versuchen wir, &quot;pragmatisch auszusitzen&quot;"> <node CREATED="1576876291037" ID="ID_114617089" MODIFIED="1576876404029" TEXT="dieses Problem versuchen wir, &quot;pragmatisch auszusitzen&quot;">
<richcontent TYPE="NOTE"><html> <richcontent TYPE="NOTE"><html>
<head> <head/>
</head>
<body> <body>
<p> <p>
Streng genommen w&#252;rden wir in der Tat einen generischen Quer-Zugriffsmechanismus brauchen. Streng genommen w&#252;rden wir in der Tat einen generischen Quer-Zugriffsmechanismus brauchen.
@ -29411,9 +29399,7 @@
</node> </node>
<node COLOR="#338800" CREATED="1557590733137" ID="ID_297834334" MODIFIED="1557590812186" TEXT="Kopier-Verhalten im Detail untersucht"> <node COLOR="#338800" CREATED="1557590733137" ID="ID_297834334" MODIFIED="1557590812186" TEXT="Kopier-Verhalten im Detail untersucht">
<richcontent TYPE="NOTE"><html> <richcontent TYPE="NOTE"><html>
<head> <head/>
</head>
<body> <body>
<p> <p>
...jeodch nicht eigens im Test dokumentiert ...jeodch nicht eigens im Test dokumentiert
@ -33102,9 +33088,7 @@
<icon BUILTIN="messagebox_warning"/> <icon BUILTIN="messagebox_warning"/>
<node CREATED="1564928904423" ID="ID_1736699496" MODIFIED="1564929052148" TEXT="das ist m&#xe4;&#xdf;ig prickelnd...."> <node CREATED="1564928904423" ID="ID_1736699496" MODIFIED="1564929052148" TEXT="das ist m&#xe4;&#xdf;ig prickelnd....">
<richcontent TYPE="NOTE"><html> <richcontent TYPE="NOTE"><html>
<head> <head/>
</head>
<body> <body>
<ul> <ul>
<li> <li>
@ -37451,9 +37435,7 @@
</node> </node>
<node CREATED="1614391836482" ID="ID_1023680019" MODIFIED="1614391943348" TEXT="diese Closure enth&#xe4;lt die konkrete Gesten-Erkennung"> <node CREATED="1614391836482" ID="ID_1023680019" MODIFIED="1614391943348" TEXT="diese Closure enth&#xe4;lt die konkrete Gesten-Erkennung">
<richcontent TYPE="NOTE"><html> <richcontent TYPE="NOTE"><html>
<head> <head/>
</head>
<body> <body>
<p> <p>
im Beispiel: in dieser Closure wird zun&#228;chste eine Verdrahtung auf das button_down-Event angelegt. Wenn diese aktiviert wird, schaltet die die Beobachtung eines ebenfalls vorsorglich verdrahteten motion_notify_event ein, sowie analog das Warten auf ein button_up im Beispiel: in dieser Closure wird zun&#228;chste eine Verdrahtung auf das button_down-Event angelegt. Wenn diese aktiviert wird, schaltet die die Beobachtung eines ebenfalls vorsorglich verdrahteten motion_notify_event ein, sowie analog das Warten auf ein button_up
@ -39389,9 +39371,7 @@
<icon BUILTIN="yes"/> <icon BUILTIN="yes"/>
<node CREATED="1621097661601" ID="ID_1771351130" MODIFIED="1621097708271"> <node CREATED="1621097661601" ID="ID_1771351130" MODIFIED="1621097708271">
<richcontent TYPE="NODE"><html> <richcontent TYPE="NODE"><html>
<head> <head/>
</head>
<body> <body>
<p> <p>
der Gesten-Controller sollte hier nicht mitmischen der Gesten-Controller sollte hier nicht mitmischen
@ -40307,9 +40287,7 @@
<icon BUILTIN="stop-sign"/> <icon BUILTIN="stop-sign"/>
<node CREATED="1666966164548" ID="ID_1667782386" MODIFIED="1666966185522" TEXT="nicht alle Parameter sind Zeiten"> <node CREATED="1666966164548" ID="ID_1667782386" MODIFIED="1666966185522" TEXT="nicht alle Parameter sind Zeiten">
<richcontent TYPE="NOTE"><html> <richcontent TYPE="NOTE"><html>
<head> <head/>
</head>
<body> <body>
<p> <p>
aber time::Control ist nur auf Zeiten ausgelegt aber time::Control ist nur auf Zeiten ausgelegt
@ -40685,9 +40663,7 @@
</node> </node>
<node CREATED="1667610042409" ID="ID_1645790878" MODIFIED="1667610212422" TEXT="es kann nicht die Aufgabe des ZoomWindow sein, sinnvolle Speicher-Limits einzuhalten"> <node CREATED="1667610042409" ID="ID_1645790878" MODIFIED="1667610212422" TEXT="es kann nicht die Aufgabe des ZoomWindow sein, sinnvolle Speicher-Limits einzuhalten">
<richcontent TYPE="NOTE"><html> <richcontent TYPE="NOTE"><html>
<head> <head/>
</head>
<body> <body>
<p> <p>
insofern mu&#223; es dann aber auch mit maximal gro&#223;en Integer-Zahlen noch sauber funktionieren insofern mu&#223; es dann aber auch mit maximal gro&#223;en Integer-Zahlen noch sauber funktionieren
@ -40937,9 +40913,7 @@
<node CREATED="1667688595090" ID="ID_1458378798" MODIFIED="1667688601683" TEXT="&#xe4;quivalent +1 &#xb5;Tick"/> <node CREATED="1667688595090" ID="ID_1458378798" MODIFIED="1667688601683" TEXT="&#xe4;quivalent +1 &#xb5;Tick"/>
<node CREATED="1667688946763" ID="ID_376119418" MODIFIED="1667689144112" TEXT="trotzdem unerw&#xfc;nscht &#x27f9; man kommt nicht zum Anfrang zur&#xfc;ck"> <node CREATED="1667688946763" ID="ID_376119418" MODIFIED="1667689144112" TEXT="trotzdem unerw&#xfc;nscht &#x27f9; man kommt nicht zum Anfrang zur&#xfc;ck">
<richcontent TYPE="NOTE"><html> <richcontent TYPE="NOTE"><html>
<head> <head/>
</head>
<body> <body>
<p> <p>
einmal stark reinzoomen, und dann wieder zur&#252;ck &#10233; Bereich ist beschnitten und kleiner geworden; das ist l&#228;stig, weil die n&#228;chst gr&#246;&#223;ere Stufe deutlich gr&#246;&#223;er ist; meiner Einsch&#228;tzung nach w&#228;re es weniger l&#228;stig, wenn man ein kleines bischen zu viel sieht, zumal sich das auf der n&#228;chsten Zweierpotenz einpendeln d&#252;rfte einmal stark reinzoomen, und dann wieder zur&#252;ck &#10233; Bereich ist beschnitten und kleiner geworden; das ist l&#228;stig, weil die n&#228;chst gr&#246;&#223;ere Stufe deutlich gr&#246;&#223;er ist; meiner Einsch&#228;tzung nach w&#228;re es weniger l&#228;stig, wenn man ein kleines bischen zu viel sieht, zumal sich das auf der n&#228;chsten Zweierpotenz einpendeln d&#252;rfte
@ -41205,9 +41179,7 @@
<node CREATED="1667760086102" ID="ID_1300680991" MODIFIED="1667760242140" TEXT="S &#xb7; dur mu&#xdf; Ganzzahl werden"/> <node CREATED="1667760086102" ID="ID_1300680991" MODIFIED="1667760242140" TEXT="S &#xb7; dur mu&#xdf; Ganzzahl werden"/>
<node CREATED="1667760247368" ID="ID_1551257128" MODIFIED="1667770564715" TEXT="lieder gibt es daf&#xfc;r viele M&#xf6;glichkeiten..."> <node CREATED="1667760247368" ID="ID_1551257128" MODIFIED="1667770564715" TEXT="lieder gibt es daf&#xfc;r viele M&#xf6;glichkeiten...">
<richcontent TYPE="NOTE"><html> <richcontent TYPE="NOTE"><html>
<head> <head/>
</head>
<body> <body>
<ul> <ul>
<li> <li>
@ -87527,8 +87499,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
der Build-Proze&#223; belegt sukzessiv mehrere <i>abstrakte Slots</i> der Build-Proze&#223; belegt sukzessiv mehrere <i>abstrakte Slots</i>
</p> </p>
</body> </body>
</html> </html></richcontent>
</richcontent>
</node> </node>
<node CREATED="1733611835596" ID="ID_858478342" MODIFIED="1733611855402" TEXT="einzelne ParamAgent-Nodes verwenden jeweils einen solchen Slot"/> <node CREATED="1733611835596" ID="ID_858478342" MODIFIED="1733611855402" TEXT="einzelne ParamAgent-Nodes verwenden jeweils einen solchen Slot"/>
<node CREATED="1733611679582" ID="ID_1095525966" MODIFIED="1733611712314" TEXT="ein Buffer-Storage-Typ wird festgelegt"> <node CREATED="1733611679582" ID="ID_1095525966" MODIFIED="1733611712314" TEXT="ein Buffer-Storage-Typ wird festgelegt">
@ -87658,8 +87629,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
...das w&#228;re fatal, denn dann w&#252;rde die Abstraktion zusammenbrechen; etweder der Builder, oder (noch schlimmer) das Library-Plug-in m&#252;&#223;te Render-Engine-Internals instrumentieren ...das w&#228;re fatal, denn dann w&#252;rde die Abstraktion zusammenbrechen; etweder der Builder, oder (noch schlimmer) das Library-Plug-in m&#252;&#223;te Render-Engine-Internals instrumentieren
</p> </p>
</body> </body>
</html> </html></richcontent>
</richcontent>
</node> </node>
<node CREATED="1733619646970" ID="ID_1558562041" MODIFIED="1733619675762" TEXT="sondern (angepa&#xdf;t an das beteits etablierte Nutz-Schema)...."> <node CREATED="1733619646970" ID="ID_1558562041" MODIFIED="1733619675762" TEXT="sondern (angepa&#xdf;t an das beteits etablierte Nutz-Schema)....">
<node CREATED="1733619679644" ID="ID_1725579009" MODIFIED="1733619836796" TEXT="baue Node f&#xfc;r Parameter-Funktion"/> <node CREATED="1733619679644" ID="ID_1725579009" MODIFIED="1733619836796" TEXT="baue Node f&#xfc;r Parameter-Funktion"/>
@ -87732,8 +87702,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
Damit w&#228;re n&#228;mlich eine relativ sichere Storage auf dem Stack gegeben, und die Gegenwart der Parameter w&#228;re trotzdem stets eindeutig dokumentiert. Auch im Hinblick darauf, da&#223; vermutlich sehr h&#228;ufig irgend welche Parameter fest gesetzt werden m&#252;ssen (aber nicht per Automation bestimmt) Damit w&#228;re n&#228;mlich eine relativ sichere Storage auf dem Stack gegeben, und die Gegenwart der Parameter w&#228;re trotzdem stets eindeutig dokumentiert. Auch im Hinblick darauf, da&#223; vermutlich sehr h&#228;ufig irgend welche Parameter fest gesetzt werden m&#252;ssen (aber nicht per Automation bestimmt)
</p> </p>
</body> </body>
</html> </html></richcontent>
</richcontent>
</node> </node>
<node CREATED="1733700311670" ID="ID_459128266" MODIFIED="1733700345967"> <node CREATED="1733700311670" ID="ID_459128266" MODIFIED="1733700345967">
<richcontent TYPE="NODE"><html> <richcontent TYPE="NODE"><html>
@ -87743,8 +87712,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
die <b>explizite</b>&#160;Behandlung w&#252;rde damit in das <b>konkrete Weaving-Pattern</b>&#160;verlegt die <b>explizite</b>&#160;Behandlung w&#252;rde damit in das <b>konkrete Weaving-Pattern</b>&#160;verlegt
</p> </p>
</body> </body>
</html> </html></richcontent>
</richcontent>
<node CREATED="1733700351350" ID="ID_579640246" MODIFIED="1733700474434" TEXT="Node und Port bleiben unver&#xe4;ndert"> <node CREATED="1733700351350" ID="ID_579640246" MODIFIED="1733700474434" TEXT="Node und Port bleiben unver&#xe4;ndert">
<icon BUILTIN="idea"/> <icon BUILTIN="idea"/>
</node> </node>
@ -87771,8 +87739,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
in diesem Fall h&#228;tten alle Bindings die gleiche Port-Subklasse, w&#252;rden aber beim Zugriff auf die Parameter einen virtual call machen in diesem Fall h&#228;tten alle Bindings die gleiche Port-Subklasse, w&#252;rden aber beim Zugriff auf die Parameter einen virtual call machen
</p> </p>
</body> </body>
</html> </html></richcontent>
</richcontent>
<icon BUILTIN="idea"/> <icon BUILTIN="idea"/>
</node> </node>
</node> </node>
@ -87812,8 +87779,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
Ich wollte mehr, und deshalb halte ich die Stelle f&#252;r das TurnoutSystem offen &#8212; obwohl auf gegenw&#228;rtigem Stand seine verbleibende Funktionalit&#228;t komplett in die interne Mechanik integriert werden k&#246;nnte. Auf diesem gegenw&#228;rtigen Stand kann ich die Vorstellung noch nicht weiter entwickeln, weil mir der klare Blick auf den realen Gebrauch in den tats&#228;chlichen Proportionen fehlt &#8212; aber ich hoffe, da&#223; sich dann aus dem Einsatz eines Baukasten-Systems irgendwann klarere Muster codifizieren lassen Ich wollte mehr, und deshalb halte ich die Stelle f&#252;r das TurnoutSystem offen &#8212; obwohl auf gegenw&#228;rtigem Stand seine verbleibende Funktionalit&#228;t komplett in die interne Mechanik integriert werden k&#246;nnte. Auf diesem gegenw&#228;rtigen Stand kann ich die Vorstellung noch nicht weiter entwickeln, weil mir der klare Blick auf den realen Gebrauch in den tats&#228;chlichen Proportionen fehlt &#8212; aber ich hoffe, da&#223; sich dann aus dem Einsatz eines Baukasten-Systems irgendwann klarere Muster codifizieren lassen
</p> </p>
</body> </body>
</html> </html></richcontent>
</richcontent>
</node> </node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1733704467954" ID="ID_747211178" MODIFIED="1733704491711" TEXT="und alle konkreten Festlegungen k&#xf6;nnen gefahrlos auf sp&#xe4;ter verschoben werden"> <node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1733704467954" ID="ID_747211178" MODIFIED="1733704491711" TEXT="und alle konkreten Festlegungen k&#xf6;nnen gefahrlos auf sp&#xe4;ter verschoben werden">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/> <font ITALIC="true" NAME="SansSerif" SIZE="14"/>
@ -87830,8 +87796,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<u>Fazit</u>: zur&#252;ck zum ersten Konzept <u>Fazit</u>: zur&#252;ck zum ersten Konzept
</p> </p>
</body> </body>
</html> </html></richcontent>
</richcontent>
<icon BUILTIN="forward"/> <icon BUILTIN="forward"/>
<node CREATED="1733704588158" ID="ID_1436422105" MODIFIED="1733704675964" TEXT="Intrusiv verkn&#xfc;pfte Storage-Frames f&#xfc;r das Turnout-System"/> <node CREATED="1733704588158" ID="ID_1436422105" MODIFIED="1733704675964" TEXT="Intrusiv verkn&#xfc;pfte Storage-Frames f&#xfc;r das Turnout-System"/>
<node CREATED="1733761653882" ID="ID_950074593" MODIFIED="1733761667427" TEXT="allerdings h&#xe4;lt jeder Storage-Frame gleich ein Tupel von Werten"/> <node CREATED="1733761653882" ID="ID_950074593" MODIFIED="1733761667427" TEXT="allerdings h&#xe4;lt jeder Storage-Frame gleich ein Tupel von Werten"/>
@ -87855,8 +87820,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
einen Satz Parameter an anderer Stelle platzieren und <i>anh&#228;ngen</i> einen Satz Parameter an anderer Stelle platzieren und <i>anh&#228;ngen</i>
</p> </p>
</body> </body>
</html> </html></richcontent>
</richcontent>
</node> </node>
<node CREATED="1733765203927" ID="ID_39536680" MODIFIED="1733765221728" TEXT="Accessor f&#xfc;r einen Einzelwert bereitstellen"/> <node CREATED="1733765203927" ID="ID_39536680" MODIFIED="1733765221728" TEXT="Accessor f&#xfc;r einen Einzelwert bereitstellen"/>
<node CREATED="1733765657476" ID="ID_381368973" MODIFIED="1733765679248" TEXT="Zugriff per Accessor auf einer konkreten TurnoutSystem-Instanz"/> <node CREATED="1733765657476" ID="ID_381368973" MODIFIED="1733765679248" TEXT="Zugriff per Accessor auf einer konkreten TurnoutSystem-Instanz"/>
@ -87868,8 +87832,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
Der Zugriff erfolgt unchecked, aber ein typsicherer Zugriff soll durch einen compile-time-Overlay gew&#228;hrleistet sein. Essentiell ist, da&#223; die typsicheren Accessoren erzeugt werden k&#246;nnen <b>bevor</b>&#160;die konkrete Storage-Adressen bekannt sind Der Zugriff erfolgt unchecked, aber ein typsicherer Zugriff soll durch einen compile-time-Overlay gew&#228;hrleistet sein. Essentiell ist, da&#223; die typsicheren Accessoren erzeugt werden k&#246;nnen <b>bevor</b>&#160;die konkrete Storage-Adressen bekannt sind
</p> </p>
</body> </body>
</html> </html></richcontent>
</richcontent>
<icon BUILTIN="yes"/> <icon BUILTIN="yes"/>
</node> </node>
</node> </node>
@ -87886,6 +87849,29 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node> </node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1733767147610" ID="ID_966052237" MODIFIED="1733767188150" TEXT="Zugriff auf einzelne Datenwerte per Accessor"> <node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1733767147610" ID="ID_966052237" MODIFIED="1733767188150" TEXT="Zugriff auf einzelne Datenwerte per Accessor">
<icon BUILTIN="flag-yellow"/> <icon BUILTIN="flag-yellow"/>
<node CREATED="1733794253049" ID="ID_524032108" MODIFIED="1733794287860" TEXT="Grundlage: das C++ - Tuple-Protocol implementieren">
<icon BUILTIN="idea"/>
<node CREATED="1733794297502" ID="ID_351966457" MODIFIED="1733794342665" TEXT="std::get&lt;i&gt;, tuple_element, tuple_size"/>
<node CREATED="1733794365237" ID="ID_623398750" MODIFIED="1733794391965" TEXT="per Rekursion-auf-den-Rest"/>
<node CREATED="1733794394120" ID="ID_1043742242" MODIFIED="1733794404675" TEXT="alles Weitere ist dann nur noch Umverpackung">
<icon BUILTIN="ksmiletris"/>
</node>
</node>
<node CREATED="1733799780425" ID="ID_1147018230" MODIFIED="1733799890156" TEXT="Konsequenz: intrusive linked-List direkt implementieren">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
der Umweg &#252;ber lib::LinkedElements ist &#252;berfl&#252;ssig, zumal ich durch direkte rekursive Implementierung auch noch eine klare Fehlermeldung erzeugen kann, falls ein Nachfolge-Extent noch nicht alloziert wurde
</p>
</body>
</html>
</richcontent>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1733799750738" ID="ID_532258033" MODIFIED="1733799768652" TEXT="Implementierung ausarbeiten">
<icon BUILTIN="pencil"/>
</node> </node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1733767161520" ID="ID_1853669534" MODIFIED="1733767188150" TEXT="Standard-Definition f&#xfc;r TurnoutSystem auf dieser Basis"> <node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1733767161520" ID="ID_1853669534" MODIFIED="1733767188150" TEXT="Standard-Definition f&#xfc;r TurnoutSystem auf dieser Basis">
<icon BUILTIN="flag-yellow"/> <icon BUILTIN="flag-yellow"/>
@ -87893,7 +87879,6 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node> </node>
</node> </node>
</node> </node>
</node>
<node CREATED="1733588494688" ID="ID_1675794578" MODIFIED="1733588502918" TEXT="alles Weitere: in Buffer legen"> <node CREATED="1733588494688" ID="ID_1675794578" MODIFIED="1733588502918" TEXT="alles Weitere: in Buffer legen">
<node CREATED="1733588511019" ID="ID_1891013981" MODIFIED="1733588526527" TEXT="die jeweilge Node kennt die ben&#xf6;tige Buffer-Gr&#xf6;&#xdf;e"/> <node CREATED="1733588511019" ID="ID_1891013981" MODIFIED="1733588526527" TEXT="die jeweilge Node kennt die ben&#xf6;tige Buffer-Gr&#xf6;&#xdf;e"/>
<node CREATED="1733588527383" ID="ID_409052438" MODIFIED="1733588542281" TEXT="der Aufruf erzeugt in zwei Schritten"> <node CREATED="1733588527383" ID="ID_409052438" MODIFIED="1733588542281" TEXT="der Aufruf erzeugt in zwei Schritten">