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:
parent
0d7d4b5afa
commit
e7b68427d3
3 changed files with 149 additions and 40 deletions
|
|
@ -123,6 +123,8 @@ namespace lib {
|
|||
{
|
||||
operator[](idx).~T();
|
||||
}
|
||||
|
||||
static constexpr size_t size() { return cnt; }
|
||||
};
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -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};
|
||||
|
|
|
|||
|
|
@ -981,9 +981,7 @@
|
|||
</node>
|
||||
<node CREATED="1501859470962" ID="ID_99706930" MODIFIED="1557498707217">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
muß eigens <b>aktiviert</b> 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 übernehmen">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
...das ist nützlich zur Diagnose,
|
||||
|
|
@ -1185,9 +1181,7 @@
|
|||
<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>
|
||||
<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> ein Desaster
|
||||
|
|
@ -2702,9 +2694,7 @@
|
|||
<node CREATED="1534630932821" ID="ID_669390115" MODIFIED="1534630940399" TEXT="hält nur eine Referenz auf das DockItem"/>
|
||||
<node CREATED="1534631014841" ID="ID_997149684" MODIFIED="1534631085070" TEXT="dieser Code ist gegenwärtig auskommentiert">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
er ist nä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önnte aber sehr sinnvoll werden">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
Stichwort HierarchyOrientationIndicator
|
||||
|
|
@ -86120,8 +86104,8 @@ Date:   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üfstein für das angestrebte »generische Design«">
|
||||
<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:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
Die FeedManifold hätte in diesem Fall einen zusätzlichen Platz für ein spezielles BuffHandle. Dieses müßte so konfiguriert werden, daß der Typ des InvocationAdapters und seine Konstruktions-Parameter in dem zugehörigen BufferDescriptor „versteckt“ sind. Trotzdem müßte man dann auch noch fü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äre allerdings komplexer und hat schlechtere Locality"/>
|
||||
<node CREATED="1720652413489" ID="ID_1011727475" MODIFIED="1720652426947" TEXT="Vorteil: FeedManifold muß seinen Typ nicht kennen"/>
|
||||
|
|
@ -87902,8 +87885,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
denn die FeedManifold wird als »eins«, »zwei«, »viele« parametrisiert, und nun kommen hier mö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:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
meine Einschätzung: <i>diese</i> 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:   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ürde damit gleich auch den Standard-Fall dokumentieren"/>
|
||||
<node CREATED="1720657414308" ID="ID_1844002789" MODIFIED="1720706651721" TEXT="man wü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ü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ält mich die ganze Zeit">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
...und zwar seit dem Anfang des Lumiera-Projekts. Vorstellungen haben ist schö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ät
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</node>
|
||||
<node CREATED="1720705996885" ID="ID_500742660" MODIFIED="1720706042427" TEXT="»Butter bei die Fische« ⟹ muß 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ührt:
|
||||
</p>
|
||||
<p>
|
||||
 — zu einer gewaltigen <b>universellen Klassifikation</b> 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="↯">
|
||||
<edge COLOR="#b40175"/>
|
||||
<font NAME="SansSerif" SIZE="22"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1720706295213" ID="ID_382067516" MODIFIED="1720706447430" TEXT="»grundsätzlich« ist das Problem aber gelö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ß soweit konkretisiert sein, daß 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ß ihn jetzt grundsä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 »shedding« implementieren"/>
|
||||
<node CREATED="1720707047696" ID="ID_1008545178" MODIFIED="1720707071737">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
⟹ muß dafür den <b>Buffer-Typ</b> 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ä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> (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> zwischen allen Bauelementen im Baukastensystem
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
|
|
|
|||
Loading…
Reference in a new issue