Invocation: draft missing feature for integration test

It seemed that the integration test will end up as a dull repetition
of already coded stuff, just with more ports and thus more boilerplate;
and so I reconsidered what an actually relevant integration test might encompass
- getting parameters from the invocation
- translating and wiring parameters
- which entails to adapt / partially close a processing function!

Thus — surprise — there is a new feature not yet supported by the `NodeBuilder`,
which would be very likely to be used in many real-world use cases: which is
to adapt the parameter tuple expected by the binding from the library.
Obviously we want this, since many »raw« processing functions will expose a mix
of technical and artistic parameters; and we'd like to ''close'' the technical ones.

Such a feature ''should be implementable,'' based on the already developed
technique with the »cross builder«, which implies to switch the template arguments
from within a builder expression. We already do this very thing for adapting
parameter functor, and thus the main difficulty would be to compose an
adaptor functor to the correct argument of the processing functor...

Which is... (well, it is nasty and technical, yet feasible).
This commit is contained in:
Fischlurch 2025-02-11 01:10:25 +01:00
parent 8694d9ebc1
commit 61c685fa9f
8 changed files with 324 additions and 68 deletions

View file

@ -605,6 +605,9 @@ namespace engine {
template<typename PFX>
using Adapted = FeedPrototype<FUN,PFX>;
template<typename DEC>
using Decorated = FeedPrototype<DEC,PAM>;
/** is the given functor suitable as parameter functor for this Feed? */
template<typename PFX>
static constexpr bool isSuitable()
@ -623,12 +626,20 @@ namespace engine {
*/
template<typename PFX>
auto
moveAdapted (PFX otherParamFun =PFX{})
moveAdaptedParam (PFX otherParamFun =PFX{})
{
using OtherParamFun = std::decay_t<PFX>;
return Adapted<OtherParamFun>{move(procFun_), move(otherParamFun)};
}
template<typename DEC>
auto
moveDecoratedProc (DEC procFunDecorator)
{
using AugmentedProcFun = std::decay_t<decltype(procFunDecorator(move(procFun_)))>;
return Decorated<AugmentedProcFun>{procFunDecorator (move(procFun_)), move(paramFun_)};
}
/** build a clone-copy of this prototype, holding the same functors
* @note possible only if both proc-functor and param-functor are copyable

View file

@ -477,6 +477,18 @@ namespace engine {
});
}
template<typename ADA>
auto
adaptParam (ADA&& paramAdaptor)
{
using DecoratedPrototype = typename WAB::template Decorated<ADA>;
using AdaptedPortBuilder = PortBuilder<POL,DAT,DecoratedPrototype>;
//
return AdaptedPortBuilder{move(*this)
,weavingBuilder_.adaptProcFunParam (move (paramAdaptor))
};
}
/*************************************************************//**

View file

@ -294,7 +294,12 @@ namespace engine {
using AdaptedPrototype = typename PROT::template Adapted<PFX>;
template<class PFX>
using Adapted = WeavingBuilder<POL, AdaptedPrototype<PFX>>;
template<class DEC>
using DecoratedPrototype = typename PROT::template Decorated<DEC>;
template<class DEC>
using Decorated = WeavingBuilder<POL, DecoratedPrototype<DEC>>;
/** Adapt a parameter-functor into the _Feed Prototype,_
* so that it is invoked whenever a new `FeedManifold` is built.
* @return adapted WeavingBuilder marked with changed `FeedManifold` type.
@ -309,7 +314,23 @@ namespace engine {
using AdaptedWeavingBuilder = Adapted<PFX>;
//
return AdaptedWeavingBuilder{move(*this)
,prototype_.moveAdapted (move (paramFunctor))
,prototype_.moveAdaptedParam (move (paramFunctor))
};
}
/** @todo */
template<class DEC>
auto
adaptProcFunParam (DEC decorator)
{
// static_assert (PROT::template isSuitable<DEC>()
// ,"suitable as param-functor for given processing-functor"); //////////////////////////TODO
//
using AdaptedWeavingBuilder = Decorated<DEC>;
//
return AdaptedWeavingBuilder{move(*this)
,prototype_.moveDecoratedProc (move (decorator))
//////////////////////////////////////////////////////////////////////OOO need to do the actual adaptation here
};
}

View file

@ -370,7 +370,7 @@ namespace test {
CHECK ( P1x::hasParamFun());
CHECK (not P1x::canActivate());
P1x p1x = p1.moveAdapted (move(fun_paramSimple));
P1x p1x = p1.moveAdaptedParam (move(fun_paramSimple));
M1 m1x = p1x.buildFeed(turSys); // ◁————————— param-functor invoked here
CHECK (rr == m1x.param); // ...as indicated by the side-effect
short r1 = m1x.param;
@ -413,7 +413,7 @@ namespace test {
CHECK ( P1F::canActivate());
P1F p1f = p1x.clone() // if (and only if) the embedded functors allow clone-copy
.moveAdapted<ParamFunction>(); // then we can fork-off and then adapt a cloned prototype
.moveAdaptedParam<ParamFunction>(); // then we can fork-off and then adapt a cloned prototype
// Need to distinguish between static capability and runtime state...
CHECK (not p1 .canActivate()); // Case-1 had no param functor installed...

View file

@ -26,6 +26,7 @@
#include "lib/symbol.hpp"
#include <array>
#include <boost/lexical_cast.hpp>
using lib::Symbol;
using std::string;
@ -60,6 +61,7 @@ namespace test {
build_simpleNode();
build_Node_fixedParam();
build_Node_dynamicParam();
build_Node_adaptedParam();
build_connectedNodes();
build_ParamNode();
}
@ -164,6 +166,28 @@ namespace test {
}
/** @test build a node and _adapt the parameters_ for invocation.
* - again use a processing function which takes a parameter
* - but then _decorate_ this functor, so that it takes different arguments
* - attach parameter handling to supply these adapted arguments
* @todo 2/25 define 🔁 implement
*/
void
build_Node_adaptedParam()
{
auto procFun = [](ulong param, int* buff){ *buff = int(param); };
auto adaptor = [](string const& spec){ return boost::lexical_cast<int>(spec); };
ProcNode node{prepareNode("Test")
.preparePort()
.invoke ("fun()", procFun)
// .adaptParam (adaptor) /////////////////////OOO engage here!
// .setParam ("55")
.completePort()
.build()};
}
/** @test build a chain with three connected Nodes
* - have two source nodes, which accept a parameter
* - but configure them differently: one gets a constant,

View file

@ -22,10 +22,8 @@
#include "steam/engine/node-builder.hpp"
#include "steam/engine/test-rand-ontology.hpp"
#include "steam/engine/diagnostic-buffer-provider.hpp"
#include "lib/test/diagnostic-output.hpp"/////////////////TODO
#include "lib/iter-zip.hpp"
#include "lib/random.hpp"
//#include "lib/util.hpp"
#include <vector>
@ -40,7 +38,6 @@ namespace steam {
namespace engine{
namespace test {
namespace {
/** uninitialised local storage that can be passed
* as working buffer and accessed as TestFrame */
@ -66,6 +63,12 @@ namespace test {
/***************************************************************//**
* @test verify support for developing Render Node functionality.
* - raw processing functions to generate and manipulate
* \ref TestFrame data, including hash chaining.
* - a »TestRand-Ontology«, which is a test helper framework,
* and mimics a real _Domain Ontology_ (as would be accessible
* through the adapter plug-in of a specific media handling library.
* - some convenience shortcuts to build test-nodes
*/
class NodeDevel_test : public Test
{

View file

@ -319,6 +319,73 @@ namespace test {
void
trigger_node_port_invocation()
{
auto testGen = testRand().setupGenerator();
auto testMan = testRand().setupManipulator();
auto testMix = testRand().setupCombinator();
/*
// A Node with two (source) ports
ProcNode n1s{prepareNode("srcA")
.preparePort()
.invoke("a(int)", src_op)
.setParam(5)
.completePort()
.preparePort()
.invoke("b(int)", src_op)
.setParam(23)
.completePort()
.build()};
// A node to add some "processing" to each data chain
auto add1_op = [](int* src, int* res){ *res = 1 + *src; };
ProcNode n1f{prepareNode("filterA")
.preparePort()
.invoke("a+1(int)(int)", add1_op)
.connectLead(n1s)
.completePort()
.preparePort()
.invoke("b+1(int)(int)", add1_op)
.connectLead(n1s)
.completePort()
.build()};
// Need a secondary source, this time with three ports
ProcNode n2s{prepareNode("srcB")
.preparePort()
.invoke("a(int)", src_op)
.setParam(7)
.completePort()
.preparePort()
.invoke("b(int)", src_op)
.setParam(13)
.completePort()
.preparePort()
.invoke("c(int)", src_op)
.setParam(17)
.completePort()
.build()};
// Wiring for the Mix, building up three ports
// Since the first source-chain has only two ports,
// for the third result port we'll re-use the second source
ProcNode mix{prepareNode("mix")
.preparePort()
.invoke("a-mix(int/2)(int)", mix_op)
.connectLead(n1f)
.connectLead(n2s)
.completePort()
.preparePort()
.invoke("b-mix(int/2)(int)", mix_op)
.connectLead(n1f)
.connectLead(n2s)
.completePort()
.preparePort()
.invoke("c-mix(int/2)(int)", mix_op)
.connectLeadPort(n1f,1)
.connectLead(n2s)
.completePort()
.build()};
*/
UNIMPLEMENTED ("operate some render nodes as linked together");
}
};

View file

@ -93948,7 +93948,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<linktarget COLOR="#8e213e" DESTINATION="ID_495934512" ENDARROW="Default" ENDINCLINATION="548;-1633;" ID="Arrow_ID_1445467180" SOURCE="ID_797574499" STARTARROW="None" STARTINCLINATION="1411;76;"/>
<linktarget COLOR="#ff6936" DESTINATION="ID_495934512" ENDARROW="Default" ENDINCLINATION="-884;1900;" ID="Arrow_ID_1128127655" SOURCE="ID_860129802" STARTARROW="None" STARTINCLINATION="709;49;"/>
<icon BUILTIN="yes"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1728497991103" ID="ID_1877481634" MODIFIED="1728498077898" TEXT="Top-down Bottom-up">
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#435e98" CREATED="1728497991103" ID="ID_1877481634" MODIFIED="1739225176178" TEXT="Top-down Bottom-up">
<icon BUILTIN="yes"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1728498021030" ID="ID_274231525" MODIFIED="1728498309371" STYLE="bubble">
<richcontent TYPE="NODE"><html>
@ -94446,13 +94446,13 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1720546461284" ID="ID_704402784" MODIFIED="1720567304893" TEXT="Skizze ins Unreine : eine Invocation">
<icon BUILTIN="pencil"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1728498487559" ID="ID_1936996983" MODIFIED="1728498512539" TEXT="Einsicht: das mu&#xdf; ein bottom-up-Prototyping sein....">
<node BACKGROUND_COLOR="#ddd4af" COLOR="#61382a" CREATED="1728498487559" ID="ID_1936996983" MODIFIED="1739225147208" TEXT="Einsicht: das mu&#xdf; ein bottom-up-Prototyping sein....">
<icon BUILTIN="idea"/>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1720546405862" ID="ID_1380185144" MODIFIED="1720567309445" TEXT="Grundstruktur f&#xfc;r FeedManifold anlegen">
<node COLOR="#338800" CREATED="1720546405862" ID="ID_1380185144" MODIFIED="1739225059611" TEXT="Grundstruktur f&#xfc;r FeedManifold anlegen">
<arrowlink COLOR="#3563bc" DESTINATION="ID_723925333" ENDARROW="Default" ENDINCLINATION="-1;162;" ID="Arrow_ID_1608020834" STARTARROW="None" STARTINCLINATION="627;40;"/>
<icon BUILTIN="pencil"/>
<node CREATED="1728498677911" HGAP="36" ID="ID_1570528154" MODIFIED="1728498789076" TEXT="zweifelhaft ob es sich noch um ein &#xbb;Objekt&#xab; handelt" VSHIFT="22">
<icon BUILTIN="button_ok"/>
<node COLOR="#5b280f" CREATED="1728498677911" HGAP="36" ID="ID_1570528154" MODIFIED="1739225096701" TEXT="zweifelhaft ob es sich noch um ein &#xbb;Objekt&#xab; handelt" VSHIFT="22">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
@ -94461,19 +94461,26 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</p>
</body>
</html></richcontent>
<icon BUILTIN="button_cancel"/>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1739225070024" ID="ID_1213538617" MODIFIED="1739225089807" TEXT="definitiv: NEIN">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#435e98" CREATED="1739225076935" ID="ID_1906830725" MODIFIED="1739225093234" TEXT="es ist jetzt eine generische Implementierungs-Datenstruktur"/>
</node>
</node>
<node COLOR="#338800" CREATED="1720546521352" ID="ID_1680202759" MODIFIED="1739064566680" TEXT="ein einfaches WeavingPattern f&#xfc;r einen 1:1 Aufruf">
<linktarget COLOR="#4033e3" DESTINATION="ID_1680202759" ENDARROW="Default" ENDINCLINATION="-2222;-127;" ID="Arrow_ID_607031123" SOURCE="ID_882727048" STARTARROW="None" STARTINCLINATION="2266;131;"/>
<linktarget COLOR="#ff6936" DESTINATION="ID_1680202759" ENDARROW="Default" ENDINCLINATION="-884;1900;" ID="Arrow_ID_1934503032" SOURCE="ID_313412689" STARTARROW="None" STARTINCLINATION="789;48;"/>
<icon BUILTIN="button_ok"/>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1720567224202" ID="ID_933061351" MODIFIED="1720567366517" TEXT="Buffer-Konstruktor-Spec bereitstellen">
<node BACKGROUND_COLOR="#b8afd2" COLOR="#5c4d6e" CREATED="1720567224202" ID="ID_933061351" MODIFIED="1739225046231" TEXT="Buffer-Konstruktor-Spec bereitstellen">
<arrowlink COLOR="#6555a4" DESTINATION="ID_33806321" ENDARROW="Default" ENDINCLINATION="-432;713;" ID="Arrow_ID_1589842372" STARTARROW="None" STARTINCLINATION="-186;-18;"/>
<icon BUILTIN="pencil"/>
<icon BUILTIN="button_ok"/>
<icon BUILTIN="hourglass"/>
<node CREATED="1720567428212" ID="ID_492216775" MODIFIED="1720567474487" TEXT="&#xe4;hnlich und im Zusammenhang mit dem Routing-Array">
<icon BUILTIN="idea"/>
</node>
<node BACKGROUND_COLOR="#f8f1cb" COLOR="#a50125" CREATED="1720567519640" ID="ID_519445088" MODIFIED="1720567528168" TEXT="Problem: Storage-Layout">
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1720567519640" FOLDED="true" ID="ID_519445088" MODIFIED="1739224991406" TEXT="Problem: Storage-Layout">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1720567557003" ID="ID_908654776" MODIFIED="1720567570269" TEXT="ganz analog zum Problem f&#xfc;r die FeedManifold"/>
<node CREATED="1720567572241" ID="ID_1323500221" MODIFIED="1720567587579" TEXT="nur da&#xdf; ich hier weitere Optionen f&#xfc;r die Allokation habe">
@ -94546,7 +94553,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
</node>
</node>
<node COLOR="#5b280f" CREATED="1720572338140" ID="ID_1820151066" MODIFIED="1733079846598" TEXT="bin jetzt wieder im Zweifel wegen dem Konstruktor-&#x3bb;">
<node COLOR="#5b280f" CREATED="1720572338140" FOLDED="true" ID="ID_1820151066" MODIFIED="1733079846598" TEXT="bin jetzt wieder im Zweifel wegen dem Konstruktor-&#x3bb;">
<linktarget COLOR="#944347" DESTINATION="ID_1820151066" ENDARROW="Default" ENDINCLINATION="-878;49;" ID="Arrow_ID_1447249364" SOURCE="ID_1878650028" STARTARROW="None" STARTINCLINATION="767;30;"/>
<icon BUILTIN="stop-sign"/>
<node CREATED="1720572392179" ID="ID_1659889610" MODIFIED="1720573034935" TEXT="sehe das als einen ehr hypithetischen Spezialfall">
@ -94562,6 +94569,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
<node CREATED="1720572417472" ID="ID_1892978300" MODIFIED="1720572435945" TEXT="wenn das wirklich n&#xf6;tig wird (YAGNI)..."/>
<node CREATED="1720572436630" ID="ID_60200424" MODIFIED="1720572460182" TEXT="dann kann man immer noch ein spezielles Weaving-Pattern daf&#xfc;r aufbauen"/>
</node>
<node COLOR="#435e98" CREATED="1720572464914" ID="ID_1119846327" MODIFIED="1720572464914">
<richcontent TYPE="NODE"><html>
<head/>
@ -94577,6 +94585,9 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<node CREATED="1720573073663" ID="ID_1122948575" MODIFIED="1720573088876" TEXT="es wird ein unique-Key erzeugt und in einer Map registriert"/>
<node CREATED="1720573089822" ID="ID_247390072" MODIFIED="1720573104936" TEXT="abgesehen davon sind es Value-Objekte ohne Identit&#xe4;t"/>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1739225012264" ID="ID_295137870" MODIFIED="1739225022396" TEXT="Verfeinerung auf sp&#xe4;ter vertagt">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
</node>
<node BACKGROUND_COLOR="#cbaca6" COLOR="#435e98" CREATED="1720573559675" ID="ID_1900172091" MODIFIED="1736092103555" TEXT="versuche mal ein direkt Objekt-gelinktes Routing-Array zu implementieren">
@ -97878,7 +97889,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#435e98" CREATED="1720999952601" ID="ID_773939367" MODIFIED="1736107777486" TEXT="stelle fest: brauche einen Weaving-Pattern-Builder">
<icon BUILTIN="yes"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1721003436766" ID="ID_1888404885" MODIFIED="1721003651235" TEXT="AUA &#x2014; das wird sauschwer....">
<node BACKGROUND_COLOR="#cdafc5" COLOR="#930668" CREATED="1721003436766" ID="ID_1888404885" MODIFIED="1739224898955" TEXT="AUA &#x2014; das wird sauschwer....">
<arrowlink COLOR="#b90172" DESTINATION="ID_1111138525" ENDARROW="Default" ENDINCLINATION="2;-47;" ID="Arrow_ID_248579830" STARTARROW="None" STARTINCLINATION="-4;46;"/>
<icon BUILTIN="smily_bad"/>
<node CREATED="1721003505076" ID="ID_1263811335" MODIFIED="1721003523198" TEXT="es werden mehrere Familien von Weaving-Patterns"/>
@ -97916,24 +97927,24 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<icon BUILTIN="clanbomber"/>
</node>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1721061468811" ID="ID_137792611" MODIFIED="1721169773780" TEXT="brauche dann aber einen DataBuilder">
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#435e98" CREATED="1721061468811" ID="ID_137792611" MODIFIED="1739224864268" TEXT="brauche dann aber einen DataBuilder">
<arrowlink COLOR="#1b4e78" DESTINATION="ID_363153482" ENDARROW="Default" ENDINCLINATION="-628;2110;" ID="Arrow_ID_1635944215" STARTARROW="None" STARTINCLINATION="175;-879;"/>
<icon BUILTIN="yes"/>
<node CREATED="1721061478810" ID="ID_1413132436" MODIFIED="1721061494590" TEXT="das ist die gleiche L&#xf6;sung, die ich schon f&#xfc;r den NodeBuilder verwende">
<node COLOR="#435e98" CREATED="1721061478810" ID="ID_1413132436" MODIFIED="1739224858861" TEXT="das ist die gleiche L&#xf6;sung, die ich schon f&#xfc;r den NodeBuilder verwende">
<icon BUILTIN="idea"/>
</node>
<node BACKGROUND_COLOR="#f8f1cb" COLOR="#a50125" CREATED="1721169780631" ID="ID_1227400011" MODIFIED="1721169828363" TEXT="also handelt es sich um eine generische L&#xf6;sung f&#xfc;r beliebige lib::Several">
<node COLOR="#435e98" CREATED="1721169780631" FOLDED="true" ID="ID_1227400011" MODIFIED="1739224856374" TEXT="also handelt es sich um eine generische L&#xf6;sung f&#xfc;r beliebige lib::Several">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1721169840656" ID="ID_72435140" MODIFIED="1721169850986" TEXT="bedeutet: es mu&#xdf; noch weiter &#xbb;rund&#xab; gemacht werden"/>
<node CREATED="1721169851751" ID="ID_1051304468" MODIFIED="1721169865872" TEXT="es soll so einfach zu verwenden sein, wie lib::SeveralBuilder selber"/>
</node>
<node CREATED="1721061496223" ID="ID_1175711026" MODIFIED="1721061518294" TEXT="&#x27f9; Konsequenz: kann nicht mehr das Produkt als Mix-In im Builder haben"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1721061520328" ID="ID_447898484" MODIFIED="1721061541850" TEXT="mu&#xdf; stattdessen das Produkt (Tunrout) explizit konstruieren">
<icon BUILTIN="flag-yellow"/>
<node COLOR="#435e98" CREATED="1721061496223" ID="ID_1175711026" MODIFIED="1739224849886" TEXT="&#x27f9; Konsequenz: kann nicht mehr das Produkt als Mix-In im Builder haben"/>
<node COLOR="#435e98" CREATED="1721061520328" ID="ID_447898484" MODIFIED="1739224844677" TEXT="mu&#xdf; stattdessen das Produkt (Tunrout) explizit konstruieren">
<icon BUILTIN="yes"/>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1721061543907" ID="ID_631078035" MODIFIED="1721785476854" TEXT="tempor&#xe4;re Arbeitsdaten im Builder einf&#xfc;hren">
<icon BUILTIN="pencil"/>
<node BACKGROUND_COLOR="#f8f1cb" COLOR="#a50125" CREATED="1721782887971" ID="ID_388496633" MODIFIED="1721783207223" TEXT="erfordert Umstellung des Builder-Mechanismus">
<node COLOR="#338800" CREATED="1721061543907" ID="ID_631078035" MODIFIED="1739224833723" TEXT="tempor&#xe4;re Arbeitsdaten im Builder einf&#xfc;hren">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1721782887971" ID="ID_388496633" MODIFIED="1739224737349" TEXT="erfordert Umstellung des Builder-Mechanismus">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1721783212761" ID="ID_688164724" MODIFIED="1721783264389" TEXT="Vorsicht: Produkt (&#x2259;Turnout) wird sofort vom dar&#xfc;berliegenden Builder verarbeitet"/>
<node CREATED="1721783265456" ID="ID_16528841" MODIFIED="1729690120716" TEXT="dieser sammelt alle Turnouts im einem Several&lt;Port&gt;-Array">
@ -97945,10 +97956,10 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
</node>
<node COLOR="#435e98" CREATED="1721782897853" ID="ID_271206866" MODIFIED="1721785456553" TEXT="Konsequenz &#x27f9; fanIn und fanOut werden &#xfc;berfl&#xfc;ssig"/>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1721833352848" ID="ID_1921234844" MODIFIED="1721844764395" TEXT="das verschobene Probem stellt sich wieder: Einbinden des Model-Context">
<node COLOR="#338800" CREATED="1721833352848" ID="ID_1921234844" MODIFIED="1739224746587" TEXT="das verschobene Probem stellt sich wieder: Einbinden des Model-Context">
<arrowlink COLOR="#494465" DESTINATION="ID_611993343" ENDARROW="Default" ENDINCLINATION="-3;-124;" ID="Arrow_ID_490283859" STARTARROW="Default" STARTINCLINATION="-2;70;"/>
<linktarget COLOR="#614050" DESTINATION="ID_1921234844" ENDARROW="Default" ENDINCLINATION="-857;-31;" ID="Arrow_ID_440207625" SOURCE="ID_115679136" STARTARROW="None" STARTINCLINATION="-5;199;"/>
<icon BUILTIN="pencil"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1721833537792" ID="ID_1044157417" MODIFIED="1721833598223">
<richcontent TYPE="NODE"><html>
<head/>
@ -98016,7 +98027,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<node CREATED="1721834025376" ID="ID_853984700" MODIFIED="1721834036731" TEXT="aus zus&#xe4;tzlichen &#xdc;berlegungen zum Caching"/>
<node CREATED="1721834044974" ID="ID_1751951250" MODIFIED="1721834055712" TEXT="und als Fallback: ein generischer Memory-Buffer-Provider"/>
</node>
<node COLOR="#338800" CREATED="1721835912891" ID="ID_174258961" MODIFIED="1728654004568" TEXT="Aufgabe f&#xfc;r die Builder-Mechanik">
<node COLOR="#338800" CREATED="1721835912891" FOLDED="true" ID="ID_174258961" MODIFIED="1728654004568" TEXT="Aufgabe f&#xfc;r die Builder-Mechanik">
<icon BUILTIN="button_ok"/>
<node CREATED="1721835960018" ID="ID_393730575" MODIFIED="1721835975204" TEXT="der BufferDescriptor gilt als opaques Handle"/>
<node CREATED="1721835976166" ID="ID_1045731243" MODIFIED="1721835984813" TEXT="er ist implizit an den BufferProvider gebunden">
@ -98061,8 +98072,8 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1721838899545" ID="ID_960529387" MODIFIED="1734389385989" TEXT="doch wieder auf die Buffer-Konstruktor-Closure zur&#xfc;ckkommen?">
<arrowlink COLOR="#b42d6a" DESTINATION="ID_1819206244" ENDARROW="Default" ENDINCLINATION="43;40;" ID="Arrow_ID_1051671986" STARTARROW="None" STARTINCLINATION="13;-15;"/>
<linktarget COLOR="#332ba3" DESTINATION="ID_960529387" ENDARROW="Default" ENDINCLINATION="-46;-257;" ID="Arrow_ID_977971374" SOURCE="ID_1119846327" STARTARROW="None" STARTINCLINATION="-22;219;"/>
<linktarget COLOR="#a94eac" DESTINATION="ID_960529387" ENDARROW="Default" ENDINCLINATION="-357;-399;" ID="Arrow_ID_1864365252" SOURCE="ID_1655919747" STARTARROW="None" STARTINCLINATION="822;40;"/>
<linktarget COLOR="#332ba3" DESTINATION="ID_960529387" ENDARROW="Default" ENDINCLINATION="-46;-257;" ID="Arrow_ID_977971374" SOURCE="ID_1119846327" STARTARROW="None" STARTINCLINATION="-22;219;"/>
<font NAME="SansSerif" SIZE="12"/>
<icon BUILTIN="help"/>
<icon BUILTIN="hourglass"/>
@ -98146,8 +98157,8 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1721842299017" ID="ID_1202882632" MODIFIED="1721842607346" TEXT="daraus resultiert eine weitere &#xbb;Linie&#xab; von Builder-Funktionen">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1721842299017" ID="ID_1202882632" MODIFIED="1739224755207" TEXT="daraus resultiert eine weitere &#xbb;Linie&#xab; von Builder-Funktionen">
<icon BUILTIN="hourglass"/>
<node COLOR="#338800" CREATED="1721842328021" ID="ID_1494182835" MODIFIED="1721844743382" TEXT="selectOutputSlot()">
<icon BUILTIN="button_ok"/>
</node>
@ -98155,6 +98166,10 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<icon BUILTIN="bell"/>
</node>
<node CREATED="1721842384902" ID="ID_533404449" MODIFIED="1721842395765" TEXT="setCached(i...i)"/>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1739224761634" ID="ID_1751390944" MODIFIED="1739224773545" TEXT="Ausarbeitung auf sp&#xe4;ter vertagt">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1721842523924" ID="ID_1665424296" MODIFIED="1721842678142" TEXT="zudem: &#xbb;Service-Kontext&#xab; bereitstellen">
<arrowlink COLOR="#5d434b" DESTINATION="ID_611993343" ENDARROW="Default" ENDINCLINATION="60;-165;" ID="Arrow_ID_819933510" STARTARROW="None" STARTINCLINATION="-74;5;"/>
@ -99191,8 +99206,8 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1722384676729" ID="ID_1680039499" MODIFIED="1722384690496" TEXT="Herausf&#xfc;hren des Ergebnis-Buffers">
<icon BUILTIN="flag-yellow"/>
<node COLOR="#338800" CREATED="1722384676729" ID="ID_1680039499" MODIFIED="1739225235822" TEXT="Herausf&#xfc;hren des Ergebnis-Buffers">
<icon BUILTIN="button_ok"/>
<node CREATED="1722384697659" ID="ID_1809654586" MODIFIED="1722385140236" TEXT="Analyse ergab bisher....">
<linktarget COLOR="#3159bc" DESTINATION="ID_1809654586" ENDARROW="Default" ENDINCLINATION="151;-415;" ID="Arrow_ID_946061354" SOURCE="ID_537635442" STARTARROW="None" STARTINCLINATION="-305;0;"/>
<icon BUILTIN="edit"/>
@ -99206,7 +99221,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1722385152329" ID="ID_1882977627" MODIFIED="1722470581306" TEXT="Problem: Aufrufstruktur">
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1722385152329" FOLDED="true" ID="ID_1882977627" MODIFIED="1722470581306" TEXT="Problem: Aufrufstruktur">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1722385165975" ID="ID_59108048" MODIFIED="1722385176210" TEXT="die Formulierung ist generisch-rekursiv"/>
<node CREATED="1722385177230" ID="ID_795154055" MODIFIED="1722385231890" TEXT="das LocalTag wird aber nur an einer Stelle (top-Level) gebraucht"/>
@ -99382,8 +99397,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
umbenannt in <font face="Monospaced"><b>MediaWeavingPattern</b></font>
</p>
</body>
</html>
</richcontent>
</html></richcontent>
</node>
<node COLOR="#435e98" CREATED="1739222329994" ID="ID_1535855210" MODIFIED="1739222344620" TEXT="das ist jetzt der 80%-Standardfall"/>
</node>
@ -99392,11 +99406,11 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<node CREATED="1728516514596" ID="ID_378624147" MODIFIED="1728516534984" TEXT="gegeben: eine Media-Processing-Function"/>
<node CREATED="1728516546003" ID="ID_1336878974" MODIFIED="1728516576658" TEXT="gesucht: Spec oder Pattern der Verdrahtung um diese im pull() aufzurufen"/>
</node>
<node COLOR="#338800" CREATED="1728516623352" ID="ID_352122889" MODIFIED="1739222294032" TEXT="L&#xf6;sungsweg: einen WeavingBuilder konstruieren">
<node COLOR="#338800" CREATED="1728516623352" FOLDED="true" ID="ID_352122889" MODIFIED="1739222294032" TEXT="L&#xf6;sungsweg: einen WeavingBuilder konstruieren">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1728517219272" ID="ID_1949349210" MODIFIED="1739222284363" TEXT="Aufgaben zu l&#xf6;sen....">
<icon BUILTIN="yes"/>
<node COLOR="#338800" CREATED="1728517232983" ID="ID_1901356657" MODIFIED="1739222270459" TEXT="Storage: wo und wie wird er erzeugt und gehalten?">
<node COLOR="#338800" CREATED="1728517232983" FOLDED="true" ID="ID_1901356657" MODIFIED="1739222270459" TEXT="Storage: wo und wie wird er erzeugt und gehalten?">
<icon BUILTIN="button_ok"/>
<node COLOR="#435e98" CREATED="1728517853488" ID="ID_207532070" MODIFIED="1739222263760">
<richcontent TYPE="NODE"><html>
@ -99466,7 +99480,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1728517256203" ID="ID_480014054" MODIFIED="1739222273866" TEXT="Verdrahtung auf die eigentliche Processing-Function">
<node COLOR="#338800" CREATED="1728517256203" FOLDED="true" ID="ID_480014054" MODIFIED="1739222273866" TEXT="Verdrahtung auf die eigentliche Processing-Function">
<icon BUILTIN="button_ok"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1728611071455" ID="ID_1880473287" MODIFIED="1739221844237" TEXT="hier mu&#xdf; i.A. tats&#xe4;chlich ein Init-Argument durchgereicht werden">
<icon BUILTIN="messagebox_warning"/>
@ -99504,7 +99518,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
</node>
</node>
<node CREATED="1728517306077" ID="ID_781615859" MODIFIED="1728517400020" TEXT="Verdrahtung Service-Context / DI f&#xfc;r runtime-services">
<node COLOR="#435e98" CREATED="1728517306077" FOLDED="true" ID="ID_781615859" MODIFIED="1739224613425" TEXT="Verdrahtung Service-Context / DI f&#xfc;r runtime-services">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
@ -99513,6 +99527,8 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</p>
</body>
</html></richcontent>
<node CREATED="1739224594704" ID="ID_1314321799" MODIFIED="1739224599572" TEXT="gel&#xf6;st via DI"/>
<node CREATED="1739224600799" ID="ID_597550317" MODIFIED="1739224611226" TEXT="und einen Policy-Template-Parameter"/>
</node>
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#435e98" CREATED="1728517479781" ID="ID_1252289489" MODIFIED="1728606973889" TEXT="wer setzt dann eigentlich die &#xbb;einfache Verdrahtung&#xab; um?">
<icon BUILTIN="help"/>
@ -99537,9 +99553,9 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
</node>
<node COLOR="#435e98" CREATED="1728575095471" ID="ID_807507393" MODIFIED="1739222278984" TEXT="mu&#xdf; aber auch API-Design bedenken">
<arrowlink COLOR="#507ec8" DESTINATION="ID_1267841334" ENDARROW="Default" ENDINCLINATION="-66;-100;" ID="Arrow_ID_537610685" STARTARROW="None" STARTINCLINATION="-257;20;"/>
<arrowlink COLOR="#507ec8" DESTINATION="ID_1267841334" ENDARROW="Default" ENDINCLINATION="-26;-60;" ID="Arrow_ID_537610685" STARTARROW="None" STARTINCLINATION="-178;14;"/>
</node>
<node COLOR="#338800" CREATED="1729689530770" ID="ID_1326944262" MODIFIED="1736112532016" TEXT="brauche Allocator f&#xfc;r die DataBuilder">
<node COLOR="#338800" CREATED="1729689530770" FOLDED="true" ID="ID_1326944262" MODIFIED="1736112532016" TEXT="brauche Allocator f&#xfc;r die DataBuilder">
<linktarget COLOR="#1f1a57" DESTINATION="ID_1326944262" ENDARROW="Default" ENDINCLINATION="-226;-782;" ID="Arrow_ID_973510776" SOURCE="ID_1567678998" STARTARROW="None" STARTINCLINATION="-147;11;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1729689651901" ID="ID_1976833854" MODIFIED="1729689674827" TEXT="DataBuilder &#x2259; vorkonfigurierter SeveralBuilder"/>
@ -99549,7 +99565,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<node COLOR="#435e98" CREATED="1736112542693" ID="ID_1953279249" MODIFIED="1736112564900" TEXT="&#x27f9; Allocator-Typ per Descriptor weitergebbar machen..."/>
</node>
</node>
<node COLOR="#005688" CREATED="1728856264065" ID="ID_647212329" MODIFIED="1739221303711" TEXT="erst im completePort() ggfs fall-back auf 1:1-Verdrahtung">
<node COLOR="#005688" CREATED="1728856264065" FOLDED="true" ID="ID_647212329" MODIFIED="1739221303711" TEXT="erst im completePort() ggfs fall-back auf 1:1-Verdrahtung">
<linktarget COLOR="#4225b0" DESTINATION="ID_647212329" ENDARROW="Default" ENDINCLINATION="-964;48;" ID="Arrow_ID_287970761" SOURCE="ID_1204792955" STARTARROW="None" STARTINCLINATION="-440;43;"/>
<linktarget COLOR="#667ba9" DESTINATION="ID_647212329" ENDARROW="Default" ENDINCLINATION="73;-4;" ID="Arrow_ID_198065069" SOURCE="ID_1013813267" STARTARROW="None" STARTINCLINATION="-159;7;"/>
<icon BUILTIN="button_ok"/>
@ -99590,9 +99606,9 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
<node COLOR="#338800" CREATED="1728856777992" ID="ID_1457051384" MODIFIED="1739221227946" TEXT="Verdrahtung (fertig) ausf&#xfc;hren">
<icon BUILTIN="button_ok"/>
<node CREATED="1728858555925" ID="ID_65764746" MODIFIED="1736049191261" TEXT="was zu leisten ist....">
<node COLOR="#435e98" CREATED="1728858555925" ID="ID_65764746" MODIFIED="1739224645648" TEXT="was zu leisten ist....">
<icon BUILTIN="yes"/>
<node CREATED="1728858604761" ID="ID_790361441" MODIFIED="1728858624320" TEXT="eingangsseitig mu&#xdf; f&#xfc;r jeden Slot eine Lead-Connection bestehen">
<node CREATED="1728858604761" FOLDED="true" ID="ID_790361441" MODIFIED="1728858624320" TEXT="eingangsseitig mu&#xdf; f&#xfc;r jeden Slot eine Lead-Connection bestehen">
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1728858628016" ID="ID_303987757" MODIFIED="1728858659791" TEXT="Datentyp mu&#xdf; pasen &#x2014; hier nicht mehr &#xfc;berpr&#xfc;fbar">
<icon BUILTIN="messagebox_warning"/>
</node>
@ -99610,7 +99626,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<icon BUILTIN="yes"/>
</node>
</node>
<node CREATED="1728858952853" ID="ID_157065776" MODIFIED="1728858971152" TEXT="ausgangsseitig hat der WeavingBuilder ein Array mit Typinfos">
<node CREATED="1728858952853" FOLDED="true" ID="ID_157065776" MODIFIED="1728858971152" TEXT="ausgangsseitig hat der WeavingBuilder ein Array mit Typinfos">
<node CREATED="1728859055657" ID="ID_1509836267" MODIFIED="1728859066657" TEXT="das mu&#xdf; mit Typ-Markern gef&#xfc;llt werden"/>
<node CREATED="1728859075077" ID="ID_708925676" MODIFIED="1728859099002" TEXT="1:1-Verdrahtung hei&#xdf;t hier: den festen Output-Typ einf&#xfc;llen"/>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1728861156109" FOLDED="true" ID="ID_717078277" MODIFIED="1736049330373" TEXT="den mu&#xdf; daher der PortBuilder ermitteln">
@ -100886,7 +100902,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<linktarget COLOR="#596573" DESTINATION="ID_173220882" ENDARROW="Default" ENDINCLINATION="-96;5;" ID="Arrow_ID_940636281" SOURCE="ID_162016103" STARTARROW="None" STARTINCLINATION="-162;7;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1728575111581" FOLDED="true" ID="ID_1267841334" LINK="#ID_973244167" MODIFIED="1736112107757" TEXT="Nutz-Kontext">
<linktarget COLOR="#507ec8" DESTINATION="ID_1267841334" ENDARROW="Default" ENDINCLINATION="-66;-100;" ID="Arrow_ID_537610685" SOURCE="ID_807507393" STARTARROW="None" STARTINCLINATION="-257;20;"/>
<linktarget COLOR="#507ec8" DESTINATION="ID_1267841334" ENDARROW="Default" ENDINCLINATION="-26;-60;" ID="Arrow_ID_537610685" SOURCE="ID_807507393" STARTARROW="None" STARTINCLINATION="-178;14;"/>
<icon BUILTIN="edit"/>
<node CREATED="1728575154175" ID="ID_649373795" MODIFIED="1728576988741" TEXT="liegt in der Implementierung eines Lib-Plugins">
<icon BUILTIN="info"/>
@ -102538,7 +102554,7 @@ StM_bind(Builder&lt;R1&gt; b1, Extension&lt;R1,R2&gt; extension)
</node>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1728785502988" HGAP="66" ID="ID_1973895762" MODIFIED="1732848541775" TEXT="Prototyping-1" VSHIFT="6">
<linktarget COLOR="#ed384d" DESTINATION="ID_1973895762" ENDARROW="Default" ENDINCLINATION="-1324;220;" ID="Arrow_ID_95845616" SOURCE="ID_623146928" STARTARROW="None" STARTINCLINATION="481;51;"/>
<linktarget COLOR="#28c32f" DESTINATION="ID_1973895762" ENDARROW="Default" ENDINCLINATION="-1324;220;" ID="Arrow_ID_95845616" SOURCE="ID_623146928" STARTARROW="None" STARTINCLINATION="481;51;"/>
<linktarget COLOR="#ff6936" DESTINATION="ID_1973895762" ENDARROW="Default" ENDINCLINATION="-884;1900;" ID="Arrow_ID_208548527" SOURCE="ID_694989290" STARTARROW="None" STARTINCLINATION="369;22;"/>
<icon BUILTIN="pencil"/>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1728787061205" ID="ID_1090922930" MODIFIED="1733007833664" TEXT="das wird jetzt der &#xbb;Butter-bei-die-Fische&#xab;-Testfall">
@ -103191,7 +103207,7 @@ StM_bind(Builder&lt;R1&gt; b1, Extension&lt;R1,R2&gt; extension)
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1730821117360" ID="ID_887734089" MODIFIED="1739117221196" TEXT="komplexere Node-Trees">
<icon BUILTIN="pencil"/>
<node CREATED="1730827675866" ID="ID_97803520" MODIFIED="1730830237210" TEXT="Auspr&#xe4;gungen">
<node BACKGROUND_COLOR="#b0bbe9" COLOR="#435e98" CREATED="1730827675866" ID="ID_97803520" MODIFIED="1739225330512" TEXT="Auspr&#xe4;gungen">
<linktarget COLOR="#3e56b6" DESTINATION="ID_97803520" ENDARROW="Default" ENDINCLINATION="-355;-656;" ID="Arrow_ID_552101308" SOURCE="ID_1277388080" STARTARROW="None" STARTINCLINATION="874;55;"/>
<icon BUILTIN="info"/>
<node CREATED="1730821466695" ID="ID_164711242" MODIFIED="1730821477121" TEXT="zwei Ports auf der Quell-Node">
@ -104452,8 +104468,7 @@ StM_bind(Builder&lt;R1&gt; b1, Extension&lt;R1,R2&gt; extension)
ergibt hier keinen Sinn &#8212; berechnet wird eine einfache lineare Interpolation, zwar ohne Beschr&#228;nkung des Wertebereichs, jedoch sind aus Sicht des Aufrufers nur Werte [0.0 ... 1.0] plausibel
</p>
</body>
</html>
</richcontent>
</html></richcontent>
<icon BUILTIN="button_cancel"/>
</node>
<node CREATED="1739208244478" ID="ID_1264878668" MODIFIED="1739208249667" TEXT="makeFun()">
@ -105406,8 +105421,7 @@ StM_bind(Builder&lt;R1&gt; b1, Extension&lt;R1,R2&gt; extension)
...da war doch irgendwas mit der Sequenz-Nr und Channel-Nr, die habe ich entweder mit anderen Aufrufen harmonisiert oder die Anordnung im Cache ver&#228;ndert; wenn ich mich blo&#223; an die Details erinnern k&#246;nnte
</p>
</body>
</html>
</richcontent>
</html></richcontent>
</node>
<node CREATED="1739220584294" ID="ID_986523911" MODIFIED="1739220595007" TEXT="und dann sp&#xe4;ter noch in anderen Bereichen fixen mu&#xdf;te"/>
</node>
@ -105451,6 +105465,110 @@ StM_bind(Builder&lt;R1&gt; b1, Extension&lt;R1,R2&gt; extension)
<arrowlink COLOR="#2c80c0" DESTINATION="ID_596205632" ENDARROW="Default" ENDINCLINATION="1567;83;" ID="Arrow_ID_1998396288" STARTARROW="None" STARTINCLINATION="-765;-533;"/>
<icon BUILTIN="pencil"/>
</node>
<node BACKGROUND_COLOR="#f8f1cb" COLOR="#a50125" CREATED="1739227357843" ID="ID_1733197389" MODIFIED="1739227371209" TEXT="komplexere Situation hier">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1739227373529" ID="ID_1597993872" MODIFIED="1739227383031" TEXT="es sollen mehrere Str&#xe4;nge gebaut werden"/>
<node CREATED="1739227384419" ID="ID_1635488686" MODIFIED="1739227406112" TEXT="partielle Closure an den Src-Nodes">
<node CREATED="1739227408236" ID="ID_636692395" MODIFIED="1739227421038" TEXT="den &#xbb;flavour&#xab;-Parameter m&#xf6;chte ich fest parametrisieren"/>
<node CREATED="1739227422164" ID="ID_1152507517" MODIFIED="1739227498532" TEXT="aber die FrameNr soll zentral f&#xfc;r den Aufruf gesteuert werden"/>
<node CREATED="1739227586467" ID="ID_185979462" MODIFIED="1739227592207" TEXT="ebenso der mix-Parameter"/>
</node>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1739227626959" ID="ID_1247032689" MODIFIED="1739227642973" TEXT="wie weit geht dieser Test sinvollerweise?">
<icon BUILTIN="help"/>
<node CREATED="1739227653557" ID="ID_1671511099" MODIFIED="1739227668629" TEXT="einerseits: Emulieren einer realistischen Situation">
<node CREATED="1739227917876" ID="ID_1784104074" MODIFIED="1739227925718" TEXT="realistisch w&#xe4;re....">
<node CREATED="1739227928094" ID="ID_1808304833" MODIFIED="1739227946245" TEXT="ein Quantiser Time &#x27fc; FrameNr"/>
<node CREATED="1739227947839" ID="ID_663306986" MODIFIED="1739227955534" TEXT="eine Automation Time &#x27fc; mix"/>
</node>
<node CREATED="1739228016222" ID="ID_244975178" MODIFIED="1739228087144" TEXT="denkbar w&#xe4;re auch da&#xdf; der mix-Parameter &#xbb;frei&#xab; ist">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
...was auch immer das hei&#223;t &#8212; es gibt n&#228;mlich daf&#252;r noch kein Konzept; nur die Vorstellung, da&#223; daf&#252;r <i>irgendwo ein Schieberegler </i>existiert
</p>
</body>
</html>
</richcontent>
</node>
</node>
<node CREATED="1739227669817" ID="ID_190154455" MODIFIED="1739227683744" TEXT="andererseits: immer noch ein explizites Node-Setup">
<node CREATED="1739228150624" ID="ID_1099570719" MODIFIED="1739228189863" TEXT="&#x27f9; also mu&#xdf; das Parameter-Handling durch einfache &#x3bb;-Funktionen erfolgen"/>
</node>
<node CREATED="1739227684914" ID="ID_1108065190" MODIFIED="1739227736066" TEXT="und das scaffolding mu&#xdf; im Test-Code verst&#xe4;ndlich bleiben">
<node CREATED="1739228198716" ID="ID_566097177" MODIFIED="1739228220611" TEXT="sollte also m&#xf6;glichst die Standard Node-Builder-F&#xe4;lle nutzen"/>
</node>
<node CREATED="1739227741390" ID="ID_803165715" MODIFIED="1739227795410" TEXT="aber dieser 3.Testfall kann schon noch ein Zacken komplexer sein">
<node CREATED="1739228229334" ID="ID_1295084534" MODIFIED="1739228240372" TEXT="es k&#xf6;nnte schon ein Integrationstest sein"/>
<node CREATED="1739228241556" ID="ID_481563144" MODIFIED="1739228254206" TEXT="...der diese ganze Prototyping-Phase besiegelt"/>
<node CREATED="1739228257834" ID="ID_980216686" MODIFIED="1739228281727">
<richcontent TYPE="NODE"><html>
<head/>
<body>
<p>
demnach sollte auch die <b>Param-Node</b>&#160;zum Einsatz kommen
</p>
</body>
</html>
</richcontent>
</node>
</node>
</node>
<node CREATED="1739229073559" ID="ID_742095594" MODIFIED="1739229078976" TEXT="Test-Konzept">
<node CREATED="1739229080787" ID="ID_508301525" MODIFIED="1739229206584" TEXT="komplett &#xfc;ber das Turnout-System steuern"/>
<node CREATED="1739229119334" ID="ID_144074931" MODIFIED="1739229138054" TEXT="es gibt ein einfaches Frame-Grid zur &#xdc;bersetzung in Frame-Nr"/>
<node CREATED="1739229092233" ID="ID_687505824" MODIFIED="1739229232886" TEXT="der ProcessingKey wird testhalber in den Mix-Parameter (0...100) &#xfc;bersetzt"/>
<node CREATED="1739229243685" ID="ID_1117664884" MODIFIED="1739229263638" TEXT="eine Param-Node demonstriert das Aufbauen synthetischer Parameter"/>
<node CREATED="1739229265043" ID="ID_1535044883" MODIFIED="1739229289864" TEXT="neues Feature: ein Param-Tupel im Builder partiell schlie&#xdf;en">
<node CREATED="1739229510473" ID="ID_362663614" MODIFIED="1739229672781" TEXT="brauche daf&#xfc;r eine Adaptierung des Processing-Functors">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
definitiv nicht des Parameter-Funktors, denn letzterer empf&#228;ngt immer das Turnout-System, kann also sowiso beliebige Anpassungen vornehmen; was aber gebraucht wird ist eine Processing-function, die andere (angepa&#223;te) Parameter nimmt
</p>
</body>
</html></richcontent>
</node>
<node CREATED="1739229688225" ID="ID_735829344" MODIFIED="1739229726986">
<richcontent TYPE="NODE"><html>
<head/>
<body>
<p>
das <i>sollte</i>&#160;&#252;ber die bestehenden <b>cross-Builder</b>-Techniken l&#246;sbar sein <font size="2">(seufz)</font>
</p>
</body>
</html></richcontent>
<node CREATED="1739230163961" ID="ID_167078459" MODIFIED="1739230168732" TEXT="ja wirklich"/>
<node CREATED="1739230169888" ID="ID_1381527951" MODIFIED="1739230174349" TEXT="ist ganz einfach"/>
<node CREATED="1739230175479" ID="ID_1244437448" MODIFIED="1739230182793" TEXT="nur nicht die Nerven verlieren"/>
<node CREATED="1739230222313" ID="ID_1885735081" MODIFIED="1739230235891" TEXT="es zahlt sich nun aus, da&#xdf; PROT eine Policy ist"/>
</node>
<node CREATED="1739242229992" ID="ID_639089925" MODIFIED="1739242251537" TEXT="L&#xf6;sung in mehreren Schritten">
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1739242253189" ID="ID_420283346" MODIFIED="1739242287474" TEXT="grunds&#xe4;tzlich den Proc-Functor adaptieren k&#xf6;nnen">
<icon BUILTIN="full-1"/>
<node CREATED="1739242379940" ID="ID_1980382512" MODIFIED="1739242388022" TEXT="das ist komplett boilerplate"/>
<node CREATED="1739242389157" ID="ID_1269699565" MODIFIED="1739242401453" TEXT="man h&#xe4;ngt die jeweiligen Template-Parameter um und gut is"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1739242402448" ID="ID_936602196" MODIFIED="1739242425912" TEXT="einzige Aufgabe: sinnvolle static_assertion bereitstellen">
<icon BUILTIN="yes"/>
</node>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1739242290552" ID="ID_575620979" MODIFIED="1739242324334" TEXT="spezielle Funktions-Komposition auf die Parameter-Stelle setzen">
<icon BUILTIN="full-2"/>
<node BACKGROUND_COLOR="#f8f1cb" COLOR="#a50125" CREATED="1739242429615" ID="ID_1933481502" MODIFIED="1739242459785" TEXT="mu&#xdf; die verschiedenen Definitionsvarianten des Processing-Functors beachten">
<icon BUILTIN="messagebox_warning"/>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1739242477076" ID="ID_509590719" MODIFIED="1739242501812" TEXT="statische Fehlermeldung wenn es gar keine Parameter gibt">
<icon BUILTIN="yes"/>
</node>
</node>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1739242327059" ID="ID_1669934372" MODIFIED="1739242373123" TEXT="Adapter zum Binden bestimmter Argumente im Node-Builder generieren">
<icon BUILTIN="full-3"/>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
@ -105589,7 +105707,7 @@ StM_bind(Builder&lt;R1&gt; b1, Extension&lt;R1,R2&gt; extension)
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1730487601562" ID="ID_1132202867" MODIFIED="1738719934584" TEXT="ID-Records">
<node BACKGROUND_COLOR="#b1d6dc" COLOR="#338800" CREATED="1730487601562" ID="ID_1132202867" MODIFIED="1739225409758" TEXT="ID-Records">
<icon BUILTIN="button_ok"/>
<node CREATED="1730487688726" ID="ID_355149059" MODIFIED="1730487823126" TEXT="Node ist markiert mit...">
<linktarget COLOR="#708298" DESTINATION="ID_355149059" ENDARROW="Default" ENDINCLINATION="-295;886;" ID="Arrow_ID_1310337579" SOURCE="ID_1784608228" STARTARROW="None" STARTINCLINATION="655;34;"/>
@ -107552,8 +107670,8 @@ StM_bind(Builder&lt;R1&gt; b1, Extension&lt;R1,R2&gt; extension)
<icon BUILTIN="pencil"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1719185917965" ID="ID_1211128567" MODIFIED="1719185925767" TEXT="zu kl&#xe4;ren">
<icon BUILTIN="yes"/>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1719185927515" ID="ID_977612187" MODIFIED="1719964762105" TEXT="wie werden Nodes gebaut?">
<linktarget COLOR="#ff002c" DESTINATION="ID_977612187" ENDARROW="Default" ENDINCLINATION="195;18;" ID="Arrow_ID_1597591970" SOURCE="ID_886839618" STARTARROW="None" STARTINCLINATION="-8;-35;"/>
<node COLOR="#435e98" CREATED="1719185927515" ID="ID_977612187" MODIFIED="1739225489424" TEXT="wie werden Nodes gebaut?">
<linktarget COLOR="#0088ff" DESTINATION="ID_977612187" ENDARROW="Default" ENDINCLINATION="195;18;" ID="Arrow_ID_1597591970" SOURCE="ID_886839618" STARTARROW="None" STARTINCLINATION="-8;-35;"/>
<icon BUILTIN="help"/>
<node COLOR="#338800" CREATED="1719964797735" ID="ID_742525092" MODIFIED="1730829487036" TEXT="minimale Repr&#xe4;sentation">
<icon BUILTIN="button_ok"/>
@ -107566,16 +107684,16 @@ StM_bind(Builder&lt;R1&gt; b1, Extension&lt;R1,R2&gt; extension)
</node>
<node COLOR="#338800" CREATED="1728785339793" HGAP="89" ID="ID_1367192130" MODIFIED="1739055183093" TEXT="eine reine Quell-Node" VSHIFT="-1">
<icon BUILTIN="button_ok"/>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1728785462721" ID="ID_623146928" MODIFIED="1728785648725" TEXT="Prototyping des Aufrufs">
<arrowlink COLOR="#ed384d" DESTINATION="ID_1973895762" ENDARROW="Default" ENDINCLINATION="-1324;220;" ID="Arrow_ID_95845616" STARTARROW="None" STARTINCLINATION="481;51;"/>
<icon BUILTIN="pencil"/>
<node COLOR="#338800" CREATED="1728785462721" ID="ID_623146928" MODIFIED="1739225477785" TEXT="Prototyping des Aufrufs">
<arrowlink COLOR="#28c32f" DESTINATION="ID_1973895762" ENDARROW="Default" ENDINCLINATION="-1324;220;" ID="Arrow_ID_95845616" STARTARROW="None" STARTINCLINATION="481;51;"/>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node COLOR="#338800" CREATED="1728785339793" HGAP="89" ID="ID_699668988" MODIFIED="1739055191919" TEXT="verkn&#xfc;pfte Nodes" VSHIFT="-24">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1719185943913" ID="ID_393811539" MODIFIED="1719185992634" TEXT="was ist die Identit&#xe4;t einer Node?">
<node COLOR="#435e98" CREATED="1719185943913" ID="ID_393811539" MODIFIED="1739225510191" TEXT="was ist die Identit&#xe4;t einer Node?">
<icon BUILTIN="help"/>
<node CREATED="1730424187705" ID="ID_529100852" MODIFIED="1730424340366" TEXT="Gleichheit und Wiederauffinden spielen nur eine untergeordnete Rolle">
<richcontent TYPE="NOTE"><html>
@ -107778,11 +107896,11 @@ StM_bind(Builder&lt;R1&gt; b1, Extension&lt;R1,R2&gt; extension)
<node COLOR="#338800" CREATED="1719186160563" ID="ID_1991257351" MODIFIED="1739055380228" TEXT="Interna eines Turnout auslesen">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1719186204738" ID="ID_228985489" MODIFIED="1719186208982" TEXT="Testdatenquelle">
<icon BUILTIN="flag-yellow"/>
<node COLOR="#338800" CREATED="1719186204738" ID="ID_228985489" MODIFIED="1739225538855" TEXT="Testdatenquelle">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1719186220945" ID="ID_1096357803" MODIFIED="1719186228089" TEXT="verifizierbare Test-Operation">
<icon BUILTIN="flag-yellow"/>
<node COLOR="#338800" CREATED="1719186220945" ID="ID_1096357803" MODIFIED="1739225540260" TEXT="verifizierbare Test-Operation">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1719186257383" ID="ID_1944249057" MODIFIED="1719186263807" TEXT="Test-Datensenke">
<icon BUILTIN="flag-yellow"/>
@ -107795,7 +107913,7 @@ StM_bind(Builder&lt;R1&gt; b1, Extension&lt;R1,R2&gt; extension)
<icon BUILTIN="yes"/>
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#435e98" CREATED="1719964569422" ID="ID_886839618" MODIFIED="1730829540845" STYLE="bubble" TEXT="erst mal irgend eine Node irgendwie bauen">
<edge COLOR="#fe6f46"/>
<arrowlink COLOR="#ff002c" DESTINATION="ID_977612187" ENDARROW="Default" ENDINCLINATION="195;18;" ID="Arrow_ID_1597591970" STARTARROW="None" STARTINCLINATION="-8;-35;"/>
<arrowlink COLOR="#0088ff" DESTINATION="ID_977612187" ENDARROW="Default" ENDINCLINATION="195;18;" ID="Arrow_ID_1597591970" STARTARROW="None" STARTINCLINATION="-8;-35;"/>
<icon BUILTIN="full-1"/>
</node>
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#435e98" CREATED="1719964579700" ID="ID_1905345149" MODIFIED="1736199257619" STYLE="bubble" TEXT="schon mal ein Turnout-System skizzieren">
@ -107955,8 +108073,8 @@ StM_bind(Builder&lt;R1&gt; b1, Extension&lt;R1,R2&gt; extension)
<icon BUILTIN="idea"/>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1721238814245" ID="ID_799936512" MODIFIED="1739222807587" TEXT="Aufgabe: Mehrkanal-Verdrahtung &#x27f9; Library-Plug-in">
<linktarget COLOR="#fe512a" DESTINATION="ID_799936512" ENDARROW="Default" ENDINCLINATION="1101;-48;" ID="Arrow_ID_177101552" SOURCE="ID_1641863868" STARTARROW="None" STARTINCLINATION="-1254;84;"/>
<linktarget COLOR="#fe512a" DESTINATION="ID_799936512" ENDARROW="Default" ENDINCLINATION="1101;-48;" ID="Arrow_ID_941586779" SOURCE="ID_394369134" STARTARROW="None" STARTINCLINATION="-1254;84;"/>
<linktarget COLOR="#fe512a" DESTINATION="ID_799936512" ENDARROW="Default" ENDINCLINATION="1101;-48;" ID="Arrow_ID_177101552" SOURCE="ID_1641863868" STARTARROW="None" STARTINCLINATION="-1254;84;"/>
<icon BUILTIN="bell"/>
</node>
</node>