From e7b68427d316f79aa43a6baa204a2480d7967d3b Mon Sep 17 00:00:00 2001 From: Ichthyostega Date: Thu, 11 Jul 2024 16:31:11 +0200 Subject: [PATCH] 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'' --- src/lib/uninitialised-storage.hpp | 2 + src/steam/engine/turnout.hpp | 33 +++++-- wiki/thinkPad.ichthyo.mm | 154 +++++++++++++++++++++++------- 3 files changed, 149 insertions(+), 40 deletions(-) diff --git a/src/lib/uninitialised-storage.hpp b/src/lib/uninitialised-storage.hpp index 466582bba..193c3d263 100644 --- a/src/lib/uninitialised-storage.hpp +++ b/src/lib/uninitialised-storage.hpp @@ -123,6 +123,8 @@ namespace lib { { operator[](idx).~T(); } + + static constexpr size_t size() { return cnt; } }; diff --git a/src/steam/engine/turnout.hpp b/src/steam/engine/turnout.hpp index f047aff3a..6f036a49a 100644 --- a/src/steam/engine/turnout.hpp +++ b/src/steam/engine/turnout.hpp @@ -77,6 +77,7 @@ //#include "lib/util.hpp" //#include +#include //#include @@ -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 + template 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 + template struct InvocationAdapter - : FeedManifold + : 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; + using Manifold = FeedManifold; + using Feed = InvocationAdapter; + + static_assert (_verify_usable_as_InvocationAdapter()); uint fanIn{0}; uint fanOut{0}; diff --git a/wiki/thinkPad.ichthyo.mm b/wiki/thinkPad.ichthyo.mm index 7964b66e3..d5d32fd1e 100644 --- a/wiki/thinkPad.ichthyo.mm +++ b/wiki/thinkPad.ichthyo.mm @@ -981,9 +981,7 @@ - - - +

muß eigens aktiviert werden @@ -1124,9 +1122,7 @@ - - - +

...das ist nützlich zur Diagnose, @@ -1185,9 +1181,7 @@ - - - +

ist schon schlimm genug.... @@ -1258,9 +1252,7 @@ - - - +

das wird sowiso ein Desaster @@ -2702,9 +2694,7 @@ - - - +

er ist nämlich auch aufgerufen worden, nachdem die GTK-Loop bereits beendet war. @@ -4460,9 +4450,7 @@ - - - +

Shutdown tricky @@ -6664,9 +6652,7 @@ - - - +

arbeitet dann freischwebend @@ -10170,9 +10156,7 @@ - - - +

Stichwort HierarchyOrientationIndicator @@ -86120,8 +86104,8 @@ Date:   Thu Apr 20 18:53:17 2023 +0200
- + @@ -87886,8 +87870,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200
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

- -
+
@@ -87902,8 +87885,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200
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

- - + @@ -87912,8 +87894,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200
meine Einschätzung: diese Kombinatorik ist unvermeidbar

- -
+
@@ -87936,12 +87917,121 @@ Date:   Thu Apr 20 18:53:17 2023 +0200
- + + + + + + + + + +

+ ...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 +

+ + +
+
+ + + + + +

+ ...denn ich sehe genau wohin selbst die leiseste Festlegung führt: +

+

+  — zu einer gewaltigen universellen Klassifikation jedweden Medien-Processings +

+ + +
+ +
+ + + + +
+ + + + + +

+ und zwar durch die Entscheidungen der letzten Wochen +

+ + +
+
+ + + + + + + + + + + + + + + + + + +

+ ⟹ muß dafür den Buffer-Typ kennen +

+ + +
+ + + + + + + + + + + +

+ der hier gecodete InvocationAdapter ist kein Inteface (sondern ein Concept) +

+ + +
+ +
+ + + + + + +

+ Trennmauern zwischen allen Bauelementen im Baukastensystem +

+ +
+
+
+
+
+
+
+