Invocation: provide simplified API to inject fixed parameter values
* ...by defining a parameter-functor to »drop off« a given value * ...also add a static sanity check to reject unsuitable parameter-functor \\ (e.g. for a processing-functor with different or even no parameters)
This commit is contained in:
parent
52d2c47439
commit
c4b2902dd4
5 changed files with 79 additions and 25 deletions
|
|
@ -605,6 +605,13 @@ namespace engine {
|
|||
template<typename PFX>
|
||||
using Adapted = FeedPrototype<FUN,PFX>;
|
||||
|
||||
/** is the given functor suitable as parameter functor for this Feed? */
|
||||
template<typename PFX>
|
||||
static constexpr bool isSuitable()
|
||||
{
|
||||
return hasParam() and _Trait::template isParamFun<PFX>();
|
||||
}
|
||||
|
||||
/**
|
||||
* Cross-Builder to add configuration with a given parameter-functor.
|
||||
* @return new FeedPrototype instance outfitted with the current
|
||||
|
|
|
|||
|
|
@ -369,6 +369,29 @@ namespace engine {
|
|||
};
|
||||
}
|
||||
|
||||
template<class AUTO>
|
||||
auto
|
||||
attachAutomation (AUTO&& aFun)
|
||||
{
|
||||
return attachParamFun ([automation = forward<AUTO>(aFun)]
|
||||
(TurnoutSystem& turnoutSys)
|
||||
{
|
||||
Time nomTime = Time::ZERO; ////////////////////OOO need to retrieve that from turnoutSys
|
||||
return automation(nomTime);
|
||||
});
|
||||
}
|
||||
|
||||
template<typename PAR>
|
||||
auto
|
||||
setParam (PAR paramVal)
|
||||
{
|
||||
return attachParamFun ([=](TurnoutSystem&) -> PAR
|
||||
{
|
||||
return paramVal;
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*************************************************************//**
|
||||
* Terminal: complete the Port wiring and return to the node level.
|
||||
|
|
|
|||
|
|
@ -301,6 +301,9 @@ namespace engine {
|
|||
auto
|
||||
adaptParam (PFX paramFunctor)
|
||||
{
|
||||
static_assert (PROT::template isSuitable<PFX>()
|
||||
,"suitable as param-functor for given processing-functor");
|
||||
//
|
||||
using AdaptedWeavingBuilder = Adapted<PFX>;
|
||||
//
|
||||
return AdaptedWeavingBuilder{move(*this)
|
||||
|
|
|
|||
|
|
@ -95,30 +95,27 @@ namespace test {
|
|||
}
|
||||
|
||||
|
||||
/** @test TODO build a Node with a fixed invocation parameter
|
||||
* @todo WIP 12/24 🔁 define ⟶ implement
|
||||
/** @test build a Node with a fixed invocation parameter
|
||||
* @todo 12/24 ✔ define ⟶ ✔ implement
|
||||
*/
|
||||
void
|
||||
build_Node_fixedParam()
|
||||
{
|
||||
auto procFun = [](ushort param, uint* buff){ *buff = param; };
|
||||
auto paramFun = [](TurnoutSystem&){ return LIFE_AND_UNIVERSE_4EVER; };
|
||||
|
||||
ProcNode node{prepareNode("Test")
|
||||
.preparePort()
|
||||
.invoke("fun()",procFun)
|
||||
.attachParamFun(paramFun)
|
||||
.invoke("fun()", procFun)
|
||||
.setParam (LIFE_AND_UNIVERSE_4EVER)
|
||||
.completePort()
|
||||
.build()};
|
||||
|
||||
CHECK (LIFE_AND_UNIVERSE_4EVER == invokeRenderNode (node));
|
||||
|
||||
UNIMPLEMENTED ("build node with fixed param");
|
||||
}
|
||||
|
||||
|
||||
/** @test TODO build a Node with dynamically generated parameter
|
||||
* @todo WIP 12/24 define ⟶ implement
|
||||
* @todo WIP 12/24 🔁 define ⟶ implement
|
||||
*/
|
||||
void
|
||||
build_Node_dynamicParam()
|
||||
|
|
|
|||
|
|
@ -82346,8 +82346,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<i>»dropper-Funktion«</i> verwenden, die einen fest hinterlegten Parameter-Wert für jede Invocation in die FeedManifold setzt
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
<node CREATED="1735181310482" ID="ID_222695945" MODIFIED="1735234327441" TEXT="retrieveParam(Accessor)">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
|
|
@ -82377,8 +82376,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
beliebiger Parameter-Funktor, der auf dem TurnoutSystem arbeitet und einen passenden Parameter-Wert produziert; Typisierung wird zur compile-Zeit geprüft.
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1720146340213" ID="ID_1871545026" MODIFIED="1720230570516" TEXT="TODO: API für Mapping">
|
||||
|
|
@ -88866,10 +88864,13 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1734877552951" ID="ID_1383452569" MODIFIED="1734879501751" TEXT="Parameter: fest und funktionsgeneriert">
|
||||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1734877552951" ID="ID_1383452569" MODIFIED="1735267749563" TEXT="Parameter: fest und funktionsgeneriert">
|
||||
<linktarget COLOR="#406cd3" DESTINATION="ID_1383452569" ENDARROW="Default" ENDINCLINATION="-1339;91;" ID="Arrow_ID_1946653398" SOURCE="ID_600115804" STARTARROW="None" STARTINCLINATION="-1035;100;"/>
|
||||
<linktarget COLOR="#406cd3" DESTINATION="ID_1383452569" ENDARROW="Default" ENDINCLINATION="-1070;72;" ID="Arrow_ID_71441743" SOURCE="ID_985974600" STARTARROW="None" STARTINCLINATION="-1035;100;"/>
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<icon BUILTIN="pencil"/>
|
||||
<node COLOR="#338800" CREATED="1735267723607" ID="ID_1259281567" MODIFIED="1735267745234" TEXT="»Dropper« Parameter-Funktor">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1733531449614" ID="ID_481525559" MODIFIED="1734059241149" TEXT="speziell auch Anlegen einer Parameter-Node">
|
||||
<linktarget COLOR="#406cd3" DESTINATION="ID_481525559" ENDARROW="Default" ENDINCLINATION="-140;9;" ID="Arrow_ID_55724637" SOURCE="ID_1678162572" STARTARROW="None" STARTINCLINATION="-358;-24;"/>
|
||||
|
|
@ -91582,8 +91583,8 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<node CREATED="1734060427954" ID="ID_714381100" MODIFIED="1734060440806" TEXT="draus dann ein Storage-Layout in der Render-Engine entwickelt"/>
|
||||
<node CREATED="1734060460509" ID="ID_1434138828" LINK="#ID_532258033" MODIFIED="1734060510084" TEXT="HetroData : Hilfskomponente zur Implementierung des Turnout-Systems"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1734132938355" ID="ID_695632181" MODIFIED="1734755866478" TEXT="Umbauten">
|
||||
<icon BUILTIN="pencil"/>
|
||||
<node COLOR="#338800" CREATED="1734132938355" ID="ID_695632181" MODIFIED="1735267849984" TEXT="Umbauten">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#582d92" CREATED="1734133041626" ID="ID_1421951599" MODIFIED="1734725184858">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
<head/>
|
||||
|
|
@ -93710,7 +93711,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
</node>
|
||||
<node COLOR="#338800" CREATED="1734133474862" ID="ID_1734639141" MODIFIED="1734831257737" TEXT="MediaWeavingPattern intern anpassen">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node COLOR="#338800" CREATED="1734730549338" ID="ID_979346169" MODIFIED="1734831179403" TEXT="Schwenk auf die neue Architektur">
|
||||
<node COLOR="#338800" CREATED="1734730549338" FOLDED="true" ID="ID_979346169" MODIFIED="1735267873376" TEXT="Schwenk auf die neue Architektur">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node CREATED="1734730561471" ID="ID_645384678" MODIFIED="1734732327705">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
|
|
@ -97348,6 +97349,9 @@ StM_bind(Builder<R1> b1, Extension<R1,R2> extension)
|
|||
<node COLOR="#338800" CREATED="1735180184969" ID="ID_1122594888" MODIFIED="1735233392749" TEXT="builder-API: adaptParam (FUN)">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1735267648052" ID="ID_1897790338" MODIFIED="1735267667745" TEXT="static-Check auf passende Param-Fun-Signatur">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1735180359089" ID="ID_1172912698" MODIFIED="1735244903164" TEXT="Umstellung im PortBuilder">
|
||||
<icon BUILTIN="pencil"/>
|
||||
|
|
@ -97357,13 +97361,13 @@ StM_bind(Builder<R1> b1, Extension<R1,R2> extension)
|
|||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1735181233629" ID="ID_1985191791" MODIFIED="1735236214569" TEXT="builder-API">
|
||||
<linktarget COLOR="#3c90e2" DESTINATION="ID_1985191791" ENDARROW="Default" ENDINCLINATION="-235;385;" ID="Arrow_ID_1852952623" SOURCE="ID_1227470787" STARTARROW="None" STARTINCLINATION="512;27;"/>
|
||||
<icon BUILTIN="pencil"/>
|
||||
<node CREATED="1735181285893" ID="ID_922294490" MODIFIED="1735181304690" TEXT="setParam(PAR)">
|
||||
<node COLOR="#435e98" CREATED="1735181285893" ID="ID_922294490" MODIFIED="1735267634837" TEXT="setParam(PAR)">
|
||||
<node CREATED="1735181646685" HGAP="92" ID="ID_537303944" MODIFIED="1735181686682" TEXT="feste dropper-Funktion verwenden" VSHIFT="-1">
|
||||
<font NAME="SansSerif" SIZE="10"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1735181310482" ID="ID_828844081" MODIFIED="1735181326359" TEXT="retrieveParam(Accessor)">
|
||||
<node CREATED="1735181646685" HGAP="31" ID="ID_1181419965" MODIFIED="1735181823571" TEXT="Parameter aus TurnoutSystem per Accessro abholen">
|
||||
<node CREATED="1735181646685" HGAP="31" ID="ID_1181419965" MODIFIED="1735265718809" TEXT="Parameter aus TurnoutSystem per Accessor abholen">
|
||||
<font NAME="SansSerif" SIZE="10"/>
|
||||
</node>
|
||||
</node>
|
||||
|
|
@ -97383,8 +97387,8 @@ StM_bind(Builder<R1> b1, Extension<R1,R2> extension)
|
|||
<node CREATED="1735235825819" ID="ID_340685726" MODIFIED="1735235829758" TEXT="Testfälle">
|
||||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1735235055662" ID="ID_895934657" LINK="#ID_1383452569" MODIFIED="1735235856739" TEXT="Parameterbehandlung im Node-Builder">
|
||||
<icon BUILTIN="pencil"/>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1735245149850" ID="ID_1185930169" MODIFIED="1735245179039" TEXT="»Dropper« für fest konfigurierte Parameter-Werte">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node COLOR="#338800" CREATED="1735245149850" ID="ID_1185930169" MODIFIED="1735267765133" TEXT="»Dropper« für fest konfigurierte Parameter-Werte">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1735245164581" ID="ID_1648154346" MODIFIED="1735245175431" TEXT="Automations-Funktion über die nominalTime">
|
||||
<icon BUILTIN="hourglass"/>
|
||||
|
|
@ -97461,8 +97465,30 @@ StM_bind(Builder<R1> b1, Extension<R1,R2> extension)
|
|||
</html></richcontent>
|
||||
<icon BUILTIN="yes"/>
|
||||
</node>
|
||||
<node CREATED="1735246648677" ID="ID_1390294887" MODIFIED="1735246967617" TEXT="SimpleWeavnigPattern ⟶ MediaWeavingPattern ist jetzt Default">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
Über das Prototyping hat eine Art Normierung stattgefunden; ich bin jetzt sicher, daß die allermeisten Aufgaben zur Medien-Berechnung in dieses Standard-Pattern abgebildet werden können, vor allem durch die stark erweiterte Flexibilität des Buffer- und Parameter-Bindings
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
<arrowlink COLOR="#4b5f94" DESTINATION="ID_1436882221" ENDARROW="Default" ENDINCLINATION="114;-2;" ID="Arrow_ID_1816177660" STARTARROW="None" STARTINCLINATION="-320;14;"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node COLOR="#435e98" CREATED="1735246847847" ID="ID_183039781" MODIFIED="1735246927561" TEXT="preparePort().invoke<FUN>()">
|
||||
<icon BUILTIN="info"/>
|
||||
<node CREATED="1735246883954" ID="ID_1713827403" MODIFIED="1735246895021" TEXT="das wurde nun zum Standard-Pattern normiert"/>
|
||||
<node CREATED="1735246896422" ID="ID_1436882221" MODIFIED="1735246967617" TEXT="verwendet MediaWeavingPattern">
|
||||
<linktarget COLOR="#4b5f94" DESTINATION="ID_1436882221" ENDARROW="Default" ENDINCLINATION="114;-2;" ID="Arrow_ID_1816177660" SOURCE="ID_1390294887" STARTARROW="None" STARTINCLINATION="-320;14;"/>
|
||||
</node>
|
||||
<node CREATED="1735246909755" ID="ID_403760027" MODIFIED="1735246916593" TEXT="adaptiert processing-functor"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1734139914450" ID="ID_284201304" MODIFIED="1735245128858" TEXT="Steuerung der Parameter-Verarbeitung">
|
||||
<linktarget COLOR="#d90755" DESTINATION="ID_284201304" ENDARROW="Default" ENDINCLINATION="428;-33;" ID="Arrow_ID_1685749535" SOURCE="ID_1127056731" STARTARROW="None" STARTINCLINATION="-2201;158;"/>
|
||||
<linktarget COLOR="#a71e73" DESTINATION="ID_284201304" ENDARROW="Default" ENDINCLINATION="-170;12;" ID="Arrow_ID_170732865" SOURCE="ID_616768316" STARTARROW="None" STARTINCLINATION="150;11;"/>
|
||||
|
|
@ -97476,8 +97502,7 @@ StM_bind(Builder<R1> b1, Extension<R1,R2> extension)
|
|||
erfolgt <i>als Teil der Konfiguration</i> eines Ports
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
<node CREATED="1735236128667" ID="ID_1783311284" MODIFIED="1735236188426">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
|
|
@ -97487,8 +97512,7 @@ StM_bind(Builder<R1> b1, Extension<R1,R2> extension)
|
|||
also <i>nachdem</i> man den Processing-Functor gegeben hat
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
<node CREATED="1735236141057" ID="ID_1227470787" MODIFIED="1735236224224" TEXT="feste oder dynamische Parameter werden unterstützt">
|
||||
<arrowlink COLOR="#3c90e2" DESTINATION="ID_1985191791" ENDARROW="Default" ENDINCLINATION="-235;385;" ID="Arrow_ID_1852952623" STARTARROW="None" STARTINCLINATION="512;27;"/>
|
||||
|
|
|
|||
Loading…
Reference in a new issue