From c0d5341b1549f347fa67a3997bdd7621efe0b4da Mon Sep 17 00:00:00 2001 From: Ichthyostega Date: Sun, 12 May 2024 17:27:07 +0200 Subject: [PATCH] Invocation: capture idea for sharpened invocation structure MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - the starting point is the idea to build a dedicated ''turnout system'' - `StateAdapter`, `BuffTable` ⟶ `FeedManifold` and _Invocation_ will be fused - actually, the `TurnoutSystem` will be ''pulled'' and orchestrate the invocation - the structure is assumed to be recursive The essence of the Node-Invocation, as developed 2009 / 2011 remains intact, yet it will be organised along a clearer structure --- doc/technical/overview.txt | 2 + src/lib/ref-array-impl.hpp | 1 + src/lib/ref-array.hpp | 2 + src/steam/engine/render-invocation.cpp | 2 +- .../{stateproxy.cpp => turnout-system.cpp} | 8 +- .../{stateproxy.hpp => turnout-system.hpp} | 10 +- tests/core/steam/engine/node-basic-test.cpp | 2 +- wiki/thinkPad.ichthyo.mm | 131 ++++++++++++++++-- 8 files changed, 133 insertions(+), 25 deletions(-) rename src/steam/engine/{stateproxy.cpp => turnout-system.cpp} (89%) rename src/steam/engine/{stateproxy.hpp => turnout-system.hpp} (90%) diff --git a/doc/technical/overview.txt b/doc/technical/overview.txt index 1026a2cc7..7531e988e 100644 --- a/doc/technical/overview.txt +++ b/doc/technical/overview.txt @@ -862,6 +862,8 @@ exposed elements within the ``array''. The Lumiera library provides a set of standard implementations for this +lib::RefArray+ interface, including a vector based and a directly array based variant. +WARNING: in rework 2024 (Playback Vertical Slice) + Unique Identifiers ~~~~~~~~~~~~~~~~~~ diff --git a/src/lib/ref-array-impl.hpp b/src/lib/ref-array-impl.hpp index a30a0e324..9cf5226f7 100644 --- a/src/lib/ref-array-impl.hpp +++ b/src/lib/ref-array-impl.hpp @@ -33,6 +33,7 @@ ** storage of variant-records, able to hold a mixture of subclasses. (the latter cases ** will be implemented when needed). ** + ** @warning in rework 5/2025 ** @see ref-array-test.cpp ** */ diff --git a/src/lib/ref-array.hpp b/src/lib/ref-array.hpp index 5e70c768f..13b90f9c3 100644 --- a/src/lib/ref-array.hpp +++ b/src/lib/ref-array.hpp @@ -25,6 +25,7 @@ ** Abstraction interface: array-like access by subscript ** @todo as of 2016, this concept seems very questionable: do we _really_ want ** to abstract over random access, or do we _actually_ want for-iteration?? + ** @warning in rework 5/2025 */ @@ -43,6 +44,7 @@ namespace lib { * and the Implementation wraps some datastructure * holding subclasses. * @todo ouch -- a collection that isn't iterable... ///////////////////////TICKET #1040 + * @warning in rework 5/2025 */ template class RefArray diff --git a/src/steam/engine/render-invocation.cpp b/src/steam/engine/render-invocation.cpp index 642a165c3..038007b0b 100644 --- a/src/steam/engine/render-invocation.cpp +++ b/src/steam/engine/render-invocation.cpp @@ -29,7 +29,7 @@ #include "steam/engine/render-invocation.hpp" -#include "steam/engine/stateproxy.hpp" +#include "steam/engine/turnout-system.hpp" namespace steam { diff --git a/src/steam/engine/stateproxy.cpp b/src/steam/engine/turnout-system.cpp similarity index 89% rename from src/steam/engine/stateproxy.cpp rename to src/steam/engine/turnout-system.cpp index 66d937987..2e3bcdcb6 100644 --- a/src/steam/engine/stateproxy.cpp +++ b/src/steam/engine/turnout-system.cpp @@ -1,5 +1,5 @@ /* - StateProxy - Encapsulation of the state corresponding to a render calculation + TurnoutSystem - Encapsulation of the state corresponding to a render calculation Copyright (C) Lumiera.org 2008, Hermann Vosseler @@ -21,13 +21,13 @@ * *****************************************************/ -/** @file stateproxy.cpp - ** Implementation details of some stateful operations needed from within the render calculation. +/** @file turnout-system.cpp + ** Implementation details of some statefull operations needed from within the render calculation. ** @todo unfinished draft from 2009 regarding the render process */ -#include "steam/engine/stateproxy.hpp" +#include "steam/engine/turnout-system.hpp" namespace steam { namespace engine { diff --git a/src/steam/engine/stateproxy.hpp b/src/steam/engine/turnout-system.hpp similarity index 90% rename from src/steam/engine/stateproxy.hpp rename to src/steam/engine/turnout-system.hpp index 59cf246a6..d7da73e30 100644 --- a/src/steam/engine/stateproxy.hpp +++ b/src/steam/engine/turnout-system.hpp @@ -1,5 +1,5 @@ /* - STATEPROXY.hpp - Encapsulation of the state corresponding to a render calculation + TURNOUT-SYSTEM.hpp - Encapsulation of the state corresponding to a render calculation Copyright (C) Lumiera.org 2008, Hermann Vosseler @@ -21,7 +21,7 @@ */ -/** @file stateproxy.hpp +/** @file turnout-system.hpp ** Access point to the state of a frame rendering evaluation. ** The rendering of frames is triggered from a render job, and recursively ** retrieves the data from predecessor nodes. Some statefull aspects are involved @@ -33,8 +33,8 @@ */ -#ifndef ENGINE_STATEPROXY_H -#define ENGINE_STATEPROXY_H +#ifndef ENGINE_TURNOUT_SYSTEM_H +#define ENGINE_TURNOUT_SYSTEM_H #include "steam/engine/state-closure.hpp" @@ -70,4 +70,4 @@ namespace engine { }} // namespace steam::engine -#endif +#endif /*ENGINE_TURNOUT_SYSTEM_H*/ diff --git a/tests/core/steam/engine/node-basic-test.cpp b/tests/core/steam/engine/node-basic-test.cpp index e4fb2fa02..a3b0b4bf2 100644 --- a/tests/core/steam/engine/node-basic-test.cpp +++ b/tests/core/steam/engine/node-basic-test.cpp @@ -28,7 +28,7 @@ #include "lib/test/run.hpp" #include "steam/engine/nodefactory.hpp" #include "steam/engine/nodewiring.hpp" -#include "steam/engine/stateproxy.hpp" +#include "steam/engine/turnout-system.hpp" #include "steam/engine/channel-descriptor.hpp" #include "steam/mobject/session/effect.hpp" #include "lib/allocation-cluster.hpp" diff --git a/wiki/thinkPad.ichthyo.mm b/wiki/thinkPad.ichthyo.mm index 0beeaddb0..a67b042d9 100644 --- a/wiki/thinkPad.ichthyo.mm +++ b/wiki/thinkPad.ichthyo.mm @@ -79944,8 +79944,9 @@ Date:   Thu Apr 20 18:53:17 2023 +0200
- + + @@ -80331,10 +80332,16 @@ Date:   Thu Apr 20 18:53:17 2023 +0200
- + + + + + + + @@ -80681,6 +80688,17 @@ Date:   Thu Apr 20 18:53:17 2023 +0200
+ + + + + + + + + + +
@@ -80815,9 +80833,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200
- - - +

nicht nur welche Vorgänger, sondern auch wie diese angebunden sind @@ -80842,9 +80858,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200
- - - +

das „schreit“ gradezu nach einem Builder @@ -80855,9 +80869,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200
- - - +

...das Buch kannte ich damals noch nicht, und das merkt man @@ -80877,9 +80889,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200
- - - +

denn das high-Level-Model kann man genau deshalb im Kern (noch) nicht definieren, weil der Builder und das low-Level-Model fehlt @@ -80920,9 +80930,54 @@ Date:   Thu Apr 20 18:53:17 2023 +0200
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -80930,9 +80985,57 @@ Date:   Thu Apr 20 18:53:17 2023 +0200
+ + + + + + + + + +

+ wenn eine pull()-Kette nicht bis zur tatsächlichen Quelle reicht, sondern an irgend einer Stelle bereits Ausgangs-Daten in einem Buffer liegen müssen; beispielsweise weil diese Daten von einem IO-Job gelesen wurden, oder von einem Decoder/Demultiplexer aufbereitet wurden — es gibt dann eine hand-over-Node, und diese braucht ein konkret passendes BuffHandle für jeden einzelnen Frame +

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

+ es bekommt zusätzlch nur die Job-Parameter +

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