Invocation: look for ways to build an example InvocationAdapter

...even the initial effort to stub its operation turns into a
challenge, since honestly there is near nothing we can assume safely,
without sliding into uncovered provisions regarding the ''Domain Ontology''
This commit is contained in:
Fischlurch 2024-07-11 16:31:11 +02:00
parent 0d7d4b5afa
commit e7b68427d3
3 changed files with 149 additions and 40 deletions

View file

@ -123,6 +123,8 @@ namespace lib {
{
operator[](idx).~T();
}
static constexpr size_t size() { return cnt; }
};

View file

@ -77,6 +77,7 @@
//#include "lib/util.hpp"
//#include <utility>
#include <array>
//#include <stack>
@ -259,16 +260,14 @@ namespace engine {
* For each Proc-Asset, the corresponding Library Adapter must provide
* such adapters to access the input and result buffers and finally to
* invoke the processing functions from this library.
* - `connect(MAN&,fanIn,fanOut)` access the _Feed Manifold_ and link the buffers
* - `connect(fanIn,fanOut)` access the _Feed Manifold_ and link the buffers
* - `invoke()` invoke the processing function, passing the connected buffers
* @tparam MAN the concrete type of the Feed Manifold, holding an array with
* input and output _Buffer Handles_
*/
template<class ADA, class MAN>
template<class ADA>
constexpr void
_verify_usable_as_InvocationAdapter()
{
ASSERT_MEMBER_FUNCTOR (&ADA::connect, void(MAN&, uint, uint));
ASSERT_MEMBER_FUNCTOR (&ADA::connect, void(uint, uint));
ASSERT_MEMBER_FUNCTOR (&ADA::invoke, void());
}
@ -286,11 +285,26 @@ namespace engine {
};
template<uint N, class FUN>
template<class MAN, class FUN>
struct InvocationAdapter
: FeedManifold<N>
: MAN
{
static constexpr auto N = MAN::inBuff::size();
FUN process;
void
connect (uint fanIn, uint fanOut)
{
REQUIRE (fanIn <= N and fanOut <= N);
UNIMPLEMENTED ("wire up all input/output buffers");
}
void
invoke()
{
process();
}
};
@ -298,7 +312,10 @@ namespace engine {
struct SimpleWeavingPattern
: PAR
{
using Feed = InvocationAdapter<N, FUN>;
using Manifold = FeedManifold<N>;
using Feed = InvocationAdapter<Manifold, FUN>;
static_assert (_verify_usable_as_InvocationAdapter<Feed>());
uint fanIn{0};
uint fanOut{0};

View file

@ -981,9 +981,7 @@
</node>
<node CREATED="1501859470962" ID="ID_99706930" MODIFIED="1557498707217">
<richcontent TYPE="NODE"><html>
<head>
</head>
<head/>
<body>
<p>
mu&#223; eigens <b>aktiviert</b>&#160;werden
@ -1124,9 +1122,7 @@
<node CREATED="1502410176619" ID="ID_1188430411" MODIFIED="1538263469664" TEXT="AbstractTangible_test umschreiben"/>
<node CREATED="1502410190737" ID="ID_1036564813" MODIFIED="1576282358156" TEXT="operator string() in DiffMessage &#xfc;bernehmen">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
...das ist n&#252;tzlich zur Diagnose,
@ -1185,9 +1181,7 @@
<node CREATED="1502402266284" ID="ID_1573858698" MODIFIED="1518487921050" TEXT="IterSource&lt;DiffStep&gt; beim Generator"/>
<node CREATED="1502402516275" ID="ID_334129744" MODIFIED="1518487921050">
<richcontent TYPE="NODE"><html>
<head>
</head>
<head/>
<body>
<p>
ist schon <i>schlimm </i>genug....
@ -1258,9 +1252,7 @@
</node>
<node CREATED="1502402998859" ID="ID_1462873166" MODIFIED="1518487921051">
<richcontent TYPE="NODE"><html>
<head>
</head>
<head/>
<body>
<p>
das wird <i>sowiso</i>&#160;ein Desaster
@ -2702,9 +2694,7 @@
<node CREATED="1534630932821" ID="ID_669390115" MODIFIED="1534630940399" TEXT="h&#xe4;lt nur eine Referenz auf das DockItem"/>
<node CREATED="1534631014841" ID="ID_997149684" MODIFIED="1534631085070" TEXT="dieser Code ist gegenw&#xe4;rtig auskommentiert">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
er ist n&#228;mlich auch aufgerufen worden, nachdem die GTK-Loop bereits beendet war.
@ -4460,9 +4450,7 @@
<node CREATED="1481768014089" ID="ID_1260583976" MODIFIED="1518487921057" TEXT="con">
<node CREATED="1481768019848" ID="ID_1155187340" MODIFIED="1518487921057">
<richcontent TYPE="NODE"><html>
<head>
</head>
<head/>
<body>
<p>
Shutdown <i>tricky</i>
@ -6664,9 +6652,7 @@
<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>
<head/>
<body>
<p>
arbeitet dann <i>freischwebend</i>
@ -10170,9 +10156,7 @@
<node CREATED="1513395909914" ID="ID_866089441" MODIFIED="1513395921284" TEXT="Notwendigkeit nicht klar"/>
<node CREATED="1513395922513" ID="ID_1683537911" MODIFIED="1513396040896" TEXT="k&#xf6;nnte aber sehr sinnvoll werden">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
Stichwort HierarchyOrientationIndicator
@ -86120,8 +86104,8 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<node CREATED="1713823362710" ID="ID_66967253" MODIFIED="1719277373397" TEXT="Hilfsmittel zur Entwicklung und zum Aufbau">
<node CREATED="1719277267208" HGAP="29" ID="ID_594112005" MODIFIED="1719625152303" TEXT="brauche eine komplette Test-Ontologie" VSHIFT="7">
<linktarget COLOR="#df3950" DESTINATION="ID_594112005" ENDARROW="Default" ENDINCLINATION="666;-662;" ID="Arrow_ID_801625266" SOURCE="ID_973384222" STARTARROW="None" STARTINCLINATION="-1433;133;"/>
<linktarget COLOR="#ff2400" DESTINATION="ID_594112005" ENDARROW="Default" ENDINCLINATION="-136;-44;" ID="Arrow_ID_1657525718" SOURCE="ID_1706482104" STARTARROW="None" STARTINCLINATION="101;9;"/>
<linktarget COLOR="#df3950" DESTINATION="ID_594112005" ENDARROW="Default" ENDINCLINATION="524;-512;" ID="Arrow_ID_839086124" SOURCE="ID_605165611" STARTARROW="Default" STARTINCLINATION="-1300;117;"/>
<linktarget COLOR="#ff2400" DESTINATION="ID_594112005" ENDARROW="Default" ENDINCLINATION="-136;-44;" ID="Arrow_ID_1657525718" SOURCE="ID_1706482104" STARTARROW="None" STARTINCLINATION="101;9;"/>
<node CREATED="1719277376922" ID="ID_420782384" MODIFIED="1719787483524" TEXT="das ist zugleich ein Pr&#xfc;fstein f&#xfc;r das angestrebte &#xbb;generische Design&#xab;">
<arrowlink COLOR="#a63b5a" DESTINATION="ID_1834369403" ENDARROW="Default" ENDINCLINATION="-507;-32;" ID="Arrow_ID_249989493" STARTARROW="None" STARTINCLINATION="-211;811;"/>
<linktarget COLOR="#412dcd" DESTINATION="ID_420782384" ENDARROW="Default" ENDINCLINATION="131;-411;" ID="Arrow_ID_317368901" SOURCE="ID_746946876" STARTARROW="None" STARTINCLINATION="241;1448;"/>
@ -87886,8 +87870,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
Die FeedManifold h&#228;tte in diesem Fall einen zus&#228;tzlichen Platz f&#252;r ein spezielles BuffHandle. Dieses m&#252;&#223;te so konfiguriert werden, da&#223; der Typ des InvocationAdapters und seine Konstruktions-Parameter in dem zugeh&#246;rigen BufferDescriptor &#8222;versteckt&#8220; sind. Trotzdem m&#252;&#223;te man dann auch noch f&#252;r den Aufruf nochmal eine Referenz der FeedManifold an die Funktionen des InvocationAdapters durchgeben
</p>
</body>
</html>
</richcontent>
</html></richcontent>
</node>
<node CREATED="1720652375738" ID="ID_65844866" MODIFIED="1720652388866" TEXT="w&#xe4;re allerdings komplexer und hat schlechtere Locality"/>
<node CREATED="1720652413489" ID="ID_1011727475" MODIFIED="1720652426947" TEXT="Vorteil: FeedManifold mu&#xdf; seinen Typ nicht kennen"/>
@ -87902,8 +87885,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
denn die FeedManifold wird als &#187;eins&#171;, &#187;zwei&#171;, &#187;viele&#171; parametrisiert, und nun kommen hier m&#246;glicherweise noch weitere Kombinationen hinzu; ich erwarte allerdings kein volles cartesisiches Produkt, da es i.d.R. einen Zusammenhang gibt zwischen der konkreten Funktion und der Anzahl der Buffer
</p>
</body>
</html>
</richcontent>
</html></richcontent>
<node CREATED="1720657092672" ID="ID_1327037703" MODIFIED="1720657116940">
<richcontent TYPE="NODE"><html>
<head/>
@ -87912,8 +87894,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
meine Einsch&#228;tzung: <i>diese</i>&#160;Kombinatorik ist unvermeidbar
</p>
</body>
</html>
</richcontent>
</html></richcontent>
</node>
<node CREATED="1720657118372" ID="ID_963823658" MODIFIED="1720657177004" TEXT="sie wird aber nur voll wirksam in Turnout::weave()"/>
</node>
@ -87936,12 +87917,121 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<arrowlink COLOR="#fffddd" DESTINATION="ID_347915086" ENDARROW="Default" ENDINCLINATION="3;42;" ID="Arrow_ID_1339344530" STARTARROW="None" STARTINCLINATION="-126;5;"/>
<icon BUILTIN="idea"/>
<node CREATED="1720657389295" ID="ID_1877085698" MODIFIED="1720657407157" TEXT="eine gewisse Basis-Verdrahtung wird jeder Aufruf brauchen"/>
<node CREATED="1720657414308" ID="ID_1844002789" MODIFIED="1720657428934" TEXT="man w&#xfc;rde damit gleich auch den Standard-Fall dokumentieren"/>
<node CREATED="1720657414308" ID="ID_1844002789" MODIFIED="1720706651721" TEXT="man w&#xfc;rde damit gleich auch den Standard-Fall dokumentieren">
<arrowlink COLOR="#eefead" DESTINATION="ID_1942988364" ENDARROW="Default" ENDINCLINATION="323;-11;" ID="Arrow_ID_391652727" STARTARROW="Default" STARTINCLINATION="332;16;"/>
</node>
<node CREATED="1720657429677" ID="ID_1435197133" MODIFIED="1720657454373" TEXT="der Lib-Adapter kann aber Spezialisierungen dar&#xfc;ber bauen"/>
<node CREATED="1720657457921" ID="ID_903330536" MODIFIED="1720657469544" TEXT="oder letztlich doch ganz anders vorgehen (es ist ja generischer Code)"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#f8f1cb" COLOR="#a50125" CREATED="1720705953643" ID="ID_737601994" MODIFIED="1720705969673" TEXT="Problem: weitgehend offen und undefiniert">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1720705972285" ID="ID_173886683" MODIFIED="1720706252912" TEXT="das Problem qu&#xe4;lt mich die ganze Zeit">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
...und zwar seit dem Anfang des Lumiera-Projekts. Vorstellungen haben ist sch&#246;n; aber um zu bauen, brauche ich entweder ein Baumuster, oder ich brauche einen Plan und ein formal definiertes Ziel. Ich habe aber nur eine klar (negativ) abgegrenzte Finalit&#228;t
</p>
</body>
</html>
</richcontent>
</node>
<node CREATED="1720705996885" ID="ID_500742660" MODIFIED="1720706042427" TEXT="&#xbb;Butter bei die Fische&#xab; &#x27f9; mu&#xdf; mich festlegen">
<node COLOR="#5b280f" CREATED="1720706044862" ID="ID_205256998" MODIFIED="1720706842198" TEXT="kann darf und will ich nicht">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
...denn ich sehe genau wohin selbst die leiseste Festlegung f&#252;hrt:
</p>
<p>
&#160;&#8212; zu einer gewaltigen <b>universellen Klassifikation</b>&#160;jedweden Medien-Processings
</p>
</body>
</html>
</richcontent>
<icon BUILTIN="closed"/>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1720706055174" ID="ID_1229045724" MODIFIED="1720706085769" STYLE="bubble" TEXT="&#x21af;">
<edge COLOR="#b40175"/>
<font NAME="SansSerif" SIZE="22"/>
</node>
</node>
<node CREATED="1720706295213" ID="ID_382067516" MODIFIED="1720706447430" TEXT="&#xbb;grunds&#xe4;tzlich&#xab; ist das Problem aber gel&#xf6;st...">
<node CREATED="1720706327671" HGAP="23" ID="ID_1763311287" MODIFIED="1720706535256" VSHIFT="18">
<richcontent TYPE="NODE"><html>
<head/>
<body>
<p>
und zwar durch die <b>Entscheidungen der letzten Wochen</b>
</p>
</body>
</html>
</richcontent>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1720706357708" ID="ID_1152413069" MODIFIED="1720706444797" STYLE="bubble" TEXT=" im Rahmen einer Domain-Ontology kann ich die notwendigen Festlegungen treffen">
<edge COLOR="#650282"/>
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1720706481211" HGAP="15" ID="ID_1058597851" MODIFIED="1720706537926" TEXT="es verbleibt ein Design-Problem" VSHIFT="17">
<icon BUILTIN="yes"/>
<node CREATED="1720706560409" ID="ID_1942988364" MODIFIED="1720706640210" TEXT="der Builder mu&#xdf; soweit konkretisiert sein, da&#xdf; er nutzbar wird">
<linktarget COLOR="#eefead" DESTINATION="ID_1942988364" ENDARROW="Default" ENDINCLINATION="323;-11;" ID="Arrow_ID_391652727" SOURCE="ID_1844002789" STARTARROW="Default" STARTINCLINATION="332;16;"/>
</node>
<node COLOR="#5b3654" CREATED="1720706672282" ID="ID_259539234" MODIFIED="1720706704946" TEXT="(und noch viel naheliegender: ich mu&#xdf; ihn jetzt grunds&#xe4;tzlich festlegen)">
<font ITALIC="true" NAME="SansSerif" SIZE="11"/>
</node>
<node CREATED="1720706943501" ID="ID_1956447342" MODIFIED="1720706950784" TEXT="konkrete Aufgaben">
<node CREATED="1720707034097" ID="ID_1479426384" MODIFIED="1720707046468" TEXT="einfachste Form des &#xbb;shedding&#xab; implementieren"/>
<node CREATED="1720707047696" ID="ID_1008545178" MODIFIED="1720707071737">
<richcontent TYPE="NODE"><html>
<head/>
<body>
<p>
&#10233; mu&#223; daf&#252;r den <b>Buffer-Typ</b>&#160;kennen
</p>
</body>
</html>
</richcontent>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1720707077876" ID="ID_802952115" MODIFIED="1720707082031" TEXT="catch-22"/>
<node CREATED="1720707082547" ID="ID_975232757" MODIFIED="1720707097949" TEXT="schon wieder ein impliziter Vorgriff..."/>
<node CREATED="1720707273074" ID="ID_319694638" MODIFIED="1720707294216" TEXT="Einschr&#xe4;nkung: auch die Processing-Funktion ist ein Vorgriff"/>
<node CREATED="1720707295151" ID="ID_975619644" MODIFIED="1720707305063" TEXT="und auch die Entscheidung, ein Buffer-Array zu haben"/>
<node CREATED="1720707426637" ID="ID_1630837670" MODIFIED="1720707431583" TEXT="Konsequenzen">
<icon BUILTIN="forward"/>
<node CREATED="1720707433653" ID="ID_1772098945" MODIFIED="1720707477157">
<richcontent TYPE="NODE"><html>
<head/>
<body>
<p>
der hier gecodete InvocationAdapter ist <i>kein Inteface</i>&#160;(sondern ein <b>Concept</b>)
</p>
</body>
</html>
</richcontent>
<icon BUILTIN="idea"/>
</node>
<node CREATED="1720707481678" ID="ID_515646989" MODIFIED="1720707502245">
<richcontent TYPE="NODE"><html>
<head>
</head>
<body>
<p>
<b>Trennmauern</b>&#160;zwischen allen Bauelementen im Baukastensystem
</p>
</body>
</html></richcontent>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>