Dispatcher-Pipeline: direct implementation of frame-tick
start with demonstration of base technique in test setup
This commit is contained in:
parent
ad173540d9
commit
dda37365cc
2 changed files with 118 additions and 42 deletions
|
|
@ -26,11 +26,13 @@
|
|||
|
||||
|
||||
#include "lib/test/run.hpp"
|
||||
#include "lib/error.hpp"
|
||||
#include "lib/test/test-helper.hpp"
|
||||
#include "steam/engine/mock-dispatcher.hpp"
|
||||
#include "vault/engine/dummy-job.hpp"
|
||||
|
||||
#include "lib/format-cout.hpp"///////////////////////TODO
|
||||
#include "lib/iter-tree-explorer.hpp"
|
||||
#include "lib/format-util.hpp"
|
||||
|
||||
//#include "steam/engine/job-planning.hpp"
|
||||
|
||||
|
|
@ -38,6 +40,10 @@
|
|||
|
||||
using test::Test;
|
||||
//using std::rand;
|
||||
using lib::eachNum;
|
||||
using lib::treeExplore;
|
||||
using lib::time::PQuant;
|
||||
using lib::time::FrameRate;
|
||||
|
||||
|
||||
namespace steam {
|
||||
|
|
@ -45,9 +51,24 @@ namespace engine{
|
|||
namespace test {
|
||||
|
||||
using vault::engine::DummyJob;
|
||||
using lib::time::FixedFrameQuantiser;
|
||||
|
||||
namespace { // test fixture...
|
||||
|
||||
/** Diagnostic helper: join all the elements from some given container or iterable */
|
||||
template<class II>
|
||||
inline string
|
||||
materialise (II&& ii)
|
||||
{
|
||||
return util::join (std::forward<II> (ii), "-");
|
||||
}
|
||||
|
||||
inline PQuant
|
||||
frameGrid (FrameRate fps)
|
||||
{
|
||||
return PQuant (new FixedFrameQuantiser (fps));
|
||||
}
|
||||
|
||||
} // (End) test fixture
|
||||
|
||||
|
||||
|
|
@ -75,7 +96,6 @@ namespace test {
|
|||
run (Arg)
|
||||
{
|
||||
demonstrateScaffolding();
|
||||
UNIMPLEMENTED ("shape the interface of the job-planning pipeline");
|
||||
buildBaseTickGenerator();
|
||||
accessTopLevelJobTicket();
|
||||
exploreJobTickets();
|
||||
|
|
@ -130,11 +150,24 @@ namespace test {
|
|||
|
||||
|
||||
/** @test use the Dispatcher interface (mocked) to generate a frame »beat«
|
||||
* - demonstrate explicitly the mapping of a (frame) number sequence
|
||||
* onto a sequence of time points with the help of time quantisation
|
||||
* @remark this is the foundation to generate top-level frame render jobs
|
||||
*/
|
||||
void
|
||||
buildBaseTickGenerator()
|
||||
{
|
||||
auto grid = frameGrid(FrameRate::PAL);
|
||||
|
||||
CHECK (materialise (
|
||||
treeExplore (eachNum(5,13))
|
||||
.transform([&](FrameCnt frameNr) -> TimeVar
|
||||
{
|
||||
return grid->timeOf (frameNr);
|
||||
})
|
||||
)
|
||||
== "200ms-240ms-280ms-320ms-360ms-400ms-440ms-480ms"_expect);
|
||||
|
||||
UNIMPLEMENTED ("foundation of state core");
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -56926,17 +56926,20 @@
|
|||
<node CREATED="1536015513076" ID="ID_849722427" MODIFIED="1557498707236" TEXT="den Regex-Include opaque halten"/>
|
||||
<node CREATED="1536015525154" ID="ID_1039059758" MODIFIED="1557498707236" TEXT="soll mal in util.hpp"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1685583627381" ID="ID_1193075176" MODIFIED="1685585363445" TEXT="iterierbare Integer-Sequenz">
|
||||
<linktarget COLOR="#bc6489" DESTINATION="ID_1193075176" ENDARROW="Default" ENDINCLINATION="-872;80;" ID="Arrow_ID_49892110" SOURCE="ID_1477861363" STARTARROW="None" STARTINCLINATION="-1069;-69;"/>
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1685583658136" ID="ID_208810625" MODIFIED="1685583674253" TEXT="Basis-Baustein für diverse Iterations-Schemata">
|
||||
<node COLOR="#338800" CREATED="1685583627381" FOLDED="true" ID="ID_1193075176" MODIFIED="1685631528263" TEXT="iterierbare Integer-Sequenz">
|
||||
<linktarget COLOR="#64a3bc" DESTINATION="ID_1193075176" ENDARROW="Default" ENDINCLINATION="-872;80;" ID="Arrow_ID_49892110" SOURCE="ID_1477861363" STARTARROW="None" STARTINCLINATION="-1069;-69;"/>
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node COLOR="#435e98" CREATED="1685583658136" ID="ID_208810625" MODIFIED="1685631307702" TEXT="Basis-Baustein für diverse Iterations-Schemata">
|
||||
<icon BUILTIN="yes"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1685584188194" ID="ID_1817394648" MODIFIED="1685584223246" TEXT="NumIter gibt's schon in iter-adapter.hpp — ausreichend?">
|
||||
<node COLOR="#435e98" CREATED="1685584188194" ID="ID_1817394648" MODIFIED="1685631521912" TEXT="NumIter gibt's schon in iter-adapter.hpp — ausreichend?">
|
||||
<icon BUILTIN="idea"/>
|
||||
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1685584668136" ID="ID_1575464239" MODIFIED="1685584688433" TEXT="nebenbei: warum in iter-adapter #include <iterator> ?">
|
||||
<node COLOR="#435e98" CREATED="1685584668136" ID="ID_1575464239" MODIFIED="1685630942654" TEXT="nebenbei: warum in iter-adapter #include <iterator> ?">
|
||||
<font NAME="SansSerif" SIZE="12"/>
|
||||
<icon BUILTIN="help"/>
|
||||
<node COLOR="#338800" CREATED="1685630944569" ID="ID_263069891" MODIFIED="1685630959773" TEXT="kann problemlos weg">
|
||||
<icon BUILTIN="idea"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1685584919441" ID="ID_340863958" MODIFIED="1685584940405" TEXT="NumIter wird bisher noch überhaupt nicht verwendet!">
|
||||
<icon BUILTIN="idea"/>
|
||||
|
|
@ -56959,11 +56962,12 @@
|
|||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1685584692820" ID="ID_1638518253" MODIFIED="1685584731304" TEXT="ggfs eine Variante ohne Stop-Bedingung schaffen?">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1685584692820" ID="ID_1638518253" MODIFIED="1685631035675" TEXT="ggfs eine Variante ohne Stop-Bedingung schaffen?">
|
||||
<icon BUILTIN="hourglass"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1685584741200" ID="ID_1542512900" MODIFIED="1685584756229" TEXT="ggfs einen IteratorCore-Adapter">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node COLOR="#338800" CREATED="1685584741200" ID="ID_1542512900" MODIFIED="1685631186794" TEXT="IterStateCore-Adapter schaffen">
|
||||
<linktarget COLOR="#91c390" DESTINATION="ID_1542512900" ENDARROW="Default" ENDINCLINATION="-103;177;" ID="Arrow_ID_1478600662" SOURCE="ID_1531711213" STARTARROW="None" STARTINCLINATION="-149;129;"/>
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node CREATED="1685584762627" ID="ID_336248643" MODIFIED="1685584825968" TEXT="das Gegenstück zu IterStateWrapper">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
|
@ -56984,12 +56988,28 @@
|
|||
</body>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1685584828250" ID="ID_500985590" MODIFIED="1685584841833" TEXT="sinnvoll hier? oder doch in TreeExplorer?">
|
||||
<node COLOR="#435e98" CREATED="1685584828250" ID="ID_500985590" MODIFIED="1685630992855" TEXT="sinnvoll hier? oder doch in TreeExplorer?">
|
||||
<icon BUILTIN="help"/>
|
||||
<node CREATED="1685630996913" ID="ID_1014456461" MODIFIED="1685631016990" TEXT="paßt hier perfekt (auch für Doku)"/>
|
||||
<node CREATED="1685631002757" ID="ID_1375154872" MODIFIED="1685631008736" TEXT="braucht keinerlei weitere Hilfsmittel"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1685631328816" ID="ID_1360074797" MODIFIED="1685631519429" TEXT="ja: vorerst ausreichend">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
einfach und minimalistisch implementiert — und zudem sind <i>undendliche Folgen</i> nur etwas für Mathematiker und Freunde der funktionalen Programmierung; in der Praxis braucht man <b>zwingend</b> stets eine Abbruch-Bedingung, allein schon weil sonst die Engine „Amok laufen“ könnte (man bedenke nur, daß die interne Zeit-Repräsentation bereits <i>lange vor der Frame-Nummer </i>wrappt)
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
|
||||
<icon BUILTIN="yes"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1685583679366" ID="ID_132953496" MODIFIED="1685583701466">
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1685583679366" ID="ID_132953496" MODIFIED="1685631288209">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
<head>
|
||||
|
||||
|
|
@ -57000,29 +57020,16 @@
|
|||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1685583707964" ID="ID_1762574264" MODIFIED="1685583830423" TEXT="„optional“ meint compile-time">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
denn der Standard-Fall ist die <i>unendliche Sequenz</i> — und diese darf keinerlei unnötigen Ballast haben; weder einen Funktor (storage!), noch einen letztlich unnötigen Prädikat-Aufruf (denn sie läuft „für immer“)
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
<icon BUILTIN="yes"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1685583844103" ID="ID_1089487517" MODIFIED="1685583862869" TEXT="until-Dekorator">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1685584282950" ID="ID_537873518" MODIFIED="1685584289539" TEXT="wo ansiedeln?">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node COLOR="#338800" CREATED="1685583844103" ID="ID_1089487517" MODIFIED="1685631284892" TEXT="until-Dekorator">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node COLOR="#435e98" CREATED="1685584282950" ID="ID_537873518" MODIFIED="1685631096769" TEXT="wo ansiedeln?">
|
||||
<icon BUILTIN="help"/>
|
||||
<node CREATED="1685584292265" ID="ID_1449788515" MODIFIED="1685584302429" TEXT="iter-adapter wäre schön..."/>
|
||||
<node CREATED="1685584303269" ID="ID_535538930" MODIFIED="1685584316100" TEXT="aber der hat kein #include <functional>">
|
||||
<icon BUILTIN="stop-sign"/>
|
||||
</node>
|
||||
<node CREATED="1685584323374" ID="ID_553274601" MODIFIED="1685584469308" TEXT="itertools wäre OK (mit Einschränkung)">
|
||||
<node COLOR="#5b280f" CREATED="1685584323374" ID="ID_553274601" MODIFIED="1685631108394" TEXT="itertools wäre OK (mit Einschränkung)">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
|
|
@ -57038,21 +57045,33 @@
|
|||
</ul>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
<icon BUILTIN="button_cancel"/>
|
||||
</node>
|
||||
<node CREATED="1685584350243" ID="ID_72915504" MODIFIED="1685584473955" TEXT="sonst: direkt in TreeExplorer">
|
||||
<node COLOR="#338800" CREATED="1685584350243" ID="ID_72915504" MODIFIED="1685631094358" TEXT="sonst: direkt in TreeExplorer">
|
||||
<icon BUILTIN="yes"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1685584477881" ID="ID_1127172208" MODIFIED="1685584544101" TEXT="sollte eine Trigger-Funktion auswerten und daraufhin destruktiv stoppen">
|
||||
<node COLOR="#435e98" CREATED="1685584477881" ID="ID_1127172208" MODIFIED="1685631208219" TEXT="sollte eine Trigger-Funktion auswerten und daraufhin destruktiv stoppen">
|
||||
<icon BUILTIN="info"/>
|
||||
</node>
|
||||
<node CREATED="1685584554975" ID="ID_1326522890" MODIFIED="1685584586183" TEXT="wäre sehr einfach als StateCore zu implementieren">
|
||||
<node COLOR="#338800" CREATED="1685584554975" ID="ID_1326522890" MODIFIED="1685631217868" TEXT="sehr einfach als StateCore zu implementieren">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node CREATED="1685584586562" ID="ID_1932788934" MODIFIED="1685584592110" TEXT="ganz analog wie Filter"/>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1685584593570" ID="ID_1531711213" MODIFIED="1685584614109" TEXT="könnte von einer »IteratorCore« profitieren">
|
||||
<node COLOR="#435e98" CREATED="1685584593570" ID="ID_1531711213" MODIFIED="1685631233266" TEXT="profitiert von einer »IterStateCore« implementierung">
|
||||
<arrowlink COLOR="#91c390" DESTINATION="ID_1542512900" ENDARROW="Default" ENDINCLINATION="-103;177;" ID="Arrow_ID_1478600662" STARTARROW="None" STARTINCLINATION="-149;129;"/>
|
||||
<icon BUILTIN="idea"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1685631237101" ID="ID_301315375" MODIFIED="1685631283904" TEXT="while-Dokorator">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node COLOR="#338800" CREATED="1685631243653" ID="ID_1585823301" MODIFIED="1685631281410" TEXT="gegebenes Prädikat negiert verpacken">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1685631253952" ID="ID_688524471" MODIFIED="1685631280458" TEXT="λ verschieben und Argument-Typ abgreifen">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
|
|
@ -73258,8 +73277,8 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1681742836995" ID="ID_456677168" MODIFIED="1684878195489" TEXT="using a frame step as base tick">
|
||||
<icon BUILTIN="full-2"/>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1685063204038" ID="ID_1320162919" MODIFIED="1685401869753" TEXT="Vorarbeit">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1685063204038" ID="ID_1320162919" MODIFIED="1685631679971" TEXT="Vorarbeit">
|
||||
<icon BUILTIN="pencil"/>
|
||||
<node CREATED="1685396470984" ID="ID_977131570" MODIFIED="1685396475818" TEXT="Grundsätzliches...">
|
||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1685403171015" ID="ID_1491439076" MODIFIED="1685403230708" TEXT="der Code sieht konfus aus">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
|
|
@ -73371,9 +73390,27 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1685585183914" ID="ID_1477861363" MODIFIED="1685585363445" TEXT="einfache Integer-Sequenz iterieren (meist ∞)">
|
||||
<arrowlink COLOR="#bc6489" DESTINATION="ID_1193075176" ENDARROW="Default" ENDINCLINATION="-872;80;" ID="Arrow_ID_49892110" STARTARROW="None" STARTINCLINATION="-1069;-69;"/>
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node COLOR="#338800" CREATED="1685585183914" ID="ID_1477861363" MODIFIED="1685631559728" TEXT="einfache Integer-Sequenz iterieren">
|
||||
<arrowlink COLOR="#64a3bc" DESTINATION="ID_1193075176" ENDARROW="Default" ENDINCLINATION="-872;80;" ID="Arrow_ID_49892110" STARTARROW="None" STARTINCLINATION="-1069;-69;"/>
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1685631561759" ID="ID_196221498" MODIFIED="1685631585003" TEXT="die bestehende Implementierung aus iter-adapter.hpp ist völlig ausreichend">
|
||||
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
|
||||
<icon BUILTIN="yes"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#fefc4e" COLOR="#351d75" CREATED="1685631586855" ID="ID_1043516162" MODIFIED="1685631663098" TEXT="Einsicht: wir wollen niemals eine unendliche Sequenz">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
allein schon, weil wir eine limitierte Domäne haben bezüglich lib::time::Time
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
|
||||
<icon BUILTIN="idea"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1685063128431" ID="ID_1958871740" MODIFIED="1685063140918" TEXT="Startpunkt gewinnen">
|
||||
|
|
@ -73467,7 +73504,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1685583450800" ID="ID_9210672" MODIFIED="1685583462389" TEXT="frame-step Core">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1685583477662" ID="ID_1520687206" MODIFIED="1685583545340" TEXT="den einfachst möglichen Frame-Step als »state core« verpacken">
|
||||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1685583477662" ID="ID_1520687206" MODIFIED="1685631703092" TEXT="den einfachst möglichen Frame-Step als »state core« verpacken">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
|
|
@ -73478,8 +73515,14 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
<icon BUILTIN="pencil"/>
|
||||
<node COLOR="#338800" CREATED="1685635382818" ID="ID_182297187" MODIFIED="1685635412661" TEXT="Vorstufe: die Kern-Funktionalität direkt als Iterator-Pipeline demonstrieren">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1685635478500" ID="ID_1622487483" MODIFIED="1685635500053" TEXT="geeignetes Builder-API ausarbeiten">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1685583497277" ID="ID_1911386159" MODIFIED="1685583620738" TEXT="sinnvolles Ergänzungs-API bereitstellen">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
|
|
|||
Loading…
Reference in a new issue