Invocation: decision logic for invoking a ''parameter functor''
Based on the usage concept developed thus far, we rely on a `FeedPrototype` to generate the actual `FeedManifold` for each invocation — and this is the extension point where a ''parameter functor'' can be attached. Notably, such a parameter functor will be configured from a different part of the builder logic than the underlying processing function, which is adapted by a Library Plug-in. Parameters on the other hand will be controlled mostly by configuration within the Session, because the user chooses to use specific settings, e.g. for an effect. An important extension to this scheme is **Parameter Automation** — which will be also attached over the extension point designed here. Since Parameter can be defined in various flavours, there is some concern that we'll end up with an excessive number of template instantiations. Thus, we'll explicitly create a »loop hole« by allowing to define the ''parameter functor'' to be a `std::function`. This would open a secondary possibility: configuring such a function, but leaving it empty, which would be a further control switch usable by the builder.
This commit is contained in:
parent
07410e14f1
commit
479ab8cb15
2 changed files with 153 additions and 56 deletions
|
|
@ -117,11 +117,13 @@ namespace engine {
|
||||||
using lib::meta::ElmTypes;
|
using lib::meta::ElmTypes;
|
||||||
using lib::meta::Tagged;
|
using lib::meta::Tagged;
|
||||||
using lib::meta::TySeq;
|
using lib::meta::TySeq;
|
||||||
|
using std::declval;
|
||||||
using std::is_pointer;
|
using std::is_pointer;
|
||||||
using std::is_reference;
|
using std::is_reference;
|
||||||
using std::remove_reference_t;
|
using std::remove_reference_t;
|
||||||
using std::remove_pointer_t;
|
using std::remove_pointer_t;
|
||||||
using std::tuple_element_t;
|
using std::tuple_element_t;
|
||||||
|
using std::void_t;
|
||||||
using std::__and_;
|
using std::__and_;
|
||||||
using std::__not_;
|
using std::__not_;
|
||||||
|
|
||||||
|
|
@ -244,6 +246,44 @@ namespace engine {
|
||||||
using BuffI = typename std::conditional<hasInput(), typename ArgI::List::Head, BuffO>::type; /////////////////////////TODO obsolete ... remove after switch
|
using BuffI = typename std::conditional<hasInput(), typename ArgI::List::Head, BuffO>::type; /////////////////////////TODO obsolete ... remove after switch
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Trait template to handle an _associated parameter functor._
|
||||||
|
* In those cases, where the basic processing function is classified such
|
||||||
|
* as to accept parameter(s), it may be desirable to _generate_ those parameters
|
||||||
|
* at invocation — be it as a fixed parametrisation chosen for this usage, or even
|
||||||
|
* by evaluation of an _Automation function_ for some parameters.
|
||||||
|
* @tparam FUN type of the underlying _processing function_
|
||||||
|
*/
|
||||||
|
template<class FUN>
|
||||||
|
struct _ParamFun
|
||||||
|
{
|
||||||
|
using _Proc = _ProcFun<FUN>;
|
||||||
|
|
||||||
|
static constexpr bool hasParam() { return _Proc::hasParam(); }
|
||||||
|
|
||||||
|
using Param = std::conditional_t<hasParam(), typename _Proc::ArgP, std::tuple<>>;
|
||||||
|
|
||||||
|
template<class PF>
|
||||||
|
using isSuitable = std::is_constructible<Param, decltype(std::declval<PF> (std::declval<TurnoutSystem&>()))>;
|
||||||
|
|
||||||
|
template<class PF>
|
||||||
|
using isConfigurable = std::is_constructible<bool, PF&>;
|
||||||
|
|
||||||
|
template<class PF>
|
||||||
|
static bool
|
||||||
|
isActivated (PF const& paramFun)
|
||||||
|
{
|
||||||
|
if constexpr (isSuitable<PF>())
|
||||||
|
{ if constexpr (isConfigurable<PF>())
|
||||||
|
return bool(paramFun);
|
||||||
|
else
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
}//(End)Introspection helpers.
|
}//(End)Introspection helpers.
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -485,9 +525,20 @@ namespace engine {
|
||||||
class FeedPrototype
|
class FeedPrototype
|
||||||
: util::MoveOnly
|
: util::MoveOnly
|
||||||
{
|
{
|
||||||
|
using _Trait = _ParamFun<FUN>;
|
||||||
|
using Feed = FeedManifold<FUN>;
|
||||||
|
|
||||||
FUN procFun_;
|
FUN procFun_;
|
||||||
PAM paramFun_;
|
PAM paramFun_;
|
||||||
|
|
||||||
|
Feed
|
||||||
|
createFeed (TurnoutSystem& turnoutSys)
|
||||||
|
{
|
||||||
|
if constexpr (_Trait::hasParam())
|
||||||
|
if (_Trait::isActivated(paramFun_))
|
||||||
|
return Feed{paramFun_(turnoutSys), procFun_};
|
||||||
|
return Feed{procFun_};
|
||||||
|
}
|
||||||
///////////////////////////////////////////////////////////////////////////////////////////////////////TICKET #1386 : elaborate setup / binding for parameter-creation
|
///////////////////////////////////////////////////////////////////////////////////////////////////////TICKET #1386 : elaborate setup / binding for parameter-creation
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -26380,9 +26380,7 @@
|
||||||
</node>
|
</node>
|
||||||
<node CREATED="1611478373512" ID="ID_1982297015" MODIFIED="1611478399631">
|
<node CREATED="1611478373512" ID="ID_1982297015" MODIFIED="1611478399631">
|
||||||
<richcontent TYPE="NODE"><html>
|
<richcontent TYPE="NODE"><html>
|
||||||
<head>
|
<head/>
|
||||||
|
|
||||||
</head>
|
|
||||||
<body>
|
<body>
|
||||||
<p>
|
<p>
|
||||||
es ist auf <i>nein</i> hinausgelaufen....
|
es ist auf <i>nein</i> hinausgelaufen....
|
||||||
|
|
@ -26987,9 +26985,7 @@
|
||||||
<node CREATED="1677241733629" ID="ID_71114216" MODIFIED="1677241738194" TEXT="Grade, Strecke, Winkel"/>
|
<node CREATED="1677241733629" ID="ID_71114216" MODIFIED="1677241738194" TEXT="Grade, Strecke, Winkel"/>
|
||||||
<node CREATED="1677241738953" ID="ID_1098408302" MODIFIED="1677241773986" TEXT=""point and shot"-Interface">
|
<node CREATED="1677241738953" ID="ID_1098408302" MODIFIED="1677241773986" TEXT=""point and shot"-Interface">
|
||||||
<richcontent TYPE="NOTE"><html>
|
<richcontent TYPE="NOTE"><html>
|
||||||
<head>
|
<head/>
|
||||||
|
|
||||||
</head>
|
|
||||||
<body>
|
<body>
|
||||||
<p>
|
<p>
|
||||||
Anweisungen in der Statuszeile: wähle ersten Punkt, setze zweiten Punkt....
|
Anweisungen in der Statuszeile: wähle ersten Punkt, setze zweiten Punkt....
|
||||||
|
|
@ -27692,9 +27688,7 @@
|
||||||
<icon BUILTIN="idea"/>
|
<icon BUILTIN="idea"/>
|
||||||
<node CREATED="1678049589007" ID="ID_114677730" MODIFIED="1678049717907" TEXT="damit die Verbindung am Nullpunkt der Kind-Klammer ansetzt">
|
<node CREATED="1678049589007" ID="ID_114677730" MODIFIED="1678049717907" TEXT="damit die Verbindung am Nullpunkt der Kind-Klammer ansetzt">
|
||||||
<richcontent TYPE="NOTE"><html>
|
<richcontent TYPE="NOTE"><html>
|
||||||
<head>
|
<head/>
|
||||||
|
|
||||||
</head>
|
|
||||||
<body>
|
<body>
|
||||||
<p>
|
<p>
|
||||||
mache hier die vereinfachtende Annahme, daß alle Brackets die gleiche Metrik haben
|
mache hier die vereinfachtende Annahme, daß alle Brackets die gleiche Metrik haben
|
||||||
|
|
@ -28409,9 +28403,7 @@
|
||||||
<node CREATED="1563456762562" ID="ID_968633527" MODIFIED="1563456775217" TEXT="Leaf: häufig verborgen"/>
|
<node CREATED="1563456762562" ID="ID_968633527" MODIFIED="1563456775217" TEXT="Leaf: häufig verborgen"/>
|
||||||
<node CREATED="1563456781637" ID="ID_1656158229" MODIFIED="1576282358066" TEXT="Fork: kommt darauf an....">
|
<node CREATED="1563456781637" ID="ID_1656158229" MODIFIED="1576282358066" TEXT="Fork: kommt darauf an....">
|
||||||
<richcontent TYPE="NOTE"><html>
|
<richcontent TYPE="NOTE"><html>
|
||||||
<head>
|
<head/>
|
||||||
|
|
||||||
</head>
|
|
||||||
<body>
|
<body>
|
||||||
<p>
|
<p>
|
||||||
....ob es was sinnvolles in einem Overview-Ruler anzuzeigen gibt
|
....ob es was sinnvolles in einem Overview-Ruler anzuzeigen gibt
|
||||||
|
|
@ -29332,9 +29324,7 @@
|
||||||
</node>
|
</node>
|
||||||
<node COLOR="#435e98" CREATED="1560303951038" ID="ID_353953611" MODIFIED="1576282358059" TEXT="Frage: wirklich zweistufig konstruieren??">
|
<node COLOR="#435e98" CREATED="1560303951038" ID="ID_353953611" MODIFIED="1576282358059" TEXT="Frage: wirklich zweistufig konstruieren??">
|
||||||
<richcontent TYPE="NOTE"><html>
|
<richcontent TYPE="NOTE"><html>
|
||||||
<head>
|
<head/>
|
||||||
|
|
||||||
</head>
|
|
||||||
<body>
|
<body>
|
||||||
<ol>
|
<ol>
|
||||||
<li>
|
<li>
|
||||||
|
|
@ -29615,9 +29605,7 @@
|
||||||
</node>
|
</node>
|
||||||
<node CREATED="1678840039597" ID="ID_1655268668" MODIFIED="1678840689222" TEXT="wird festelegt durch �� bodyCanvas_.signal_size_allocate()">
|
<node CREATED="1678840039597" ID="ID_1655268668" MODIFIED="1678840689222" TEXT="wird festelegt durch �� bodyCanvas_.signal_size_allocate()">
|
||||||
<richcontent TYPE="NOTE"><html>
|
<richcontent TYPE="NOTE"><html>
|
||||||
<head>
|
<head/>
|
||||||
|
|
||||||
</head>
|
|
||||||
<body>
|
<body>
|
||||||
<p style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; text-indent: 0px">
|
<p style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; text-indent: 0px">
|
||||||
Empfänger(»Slot«): <font face="Monospaced" color="#552694">TimelineLayout::sizeZoomWindow (Gtk::Allocation&)</font>
|
Empfänger(»Slot«): <font face="Monospaced" color="#552694">TimelineLayout::sizeZoomWindow (Gtk::Allocation&)</font>
|
||||||
|
|
@ -31856,9 +31844,7 @@
|
||||||
</node>
|
</node>
|
||||||
<node CREATED="1563145010348" ID="ID_1404407551" MODIFIED="1576282358047">
|
<node CREATED="1563145010348" ID="ID_1404407551" MODIFIED="1576282358047">
|
||||||
<richcontent TYPE="NODE"><html>
|
<richcontent TYPE="NODE"><html>
|
||||||
<head>
|
<head/>
|
||||||
|
|
||||||
</head>
|
|
||||||
<body>
|
<body>
|
||||||
<p>
|
<p>
|
||||||
<i>rein gefühlsmäßig</i> wäre aber vorher wohl geschickter
|
<i>rein gefühlsmäßig</i> wäre aber vorher wohl geschickter
|
||||||
|
|
@ -32230,9 +32216,7 @@
|
||||||
<node CREATED="1566401134943" ID="ID_432602619" MODIFIED="1566401141050" TEXT="box-shadow ist nutzbar">
|
<node CREATED="1566401134943" ID="ID_432602619" MODIFIED="1566401141050" TEXT="box-shadow ist nutzbar">
|
||||||
<node CREATED="1566401142268" ID="ID_1379290604" MODIFIED="1576282358045" TEXT="outset nur im Rahmen des Margin">
|
<node CREATED="1566401142268" ID="ID_1379290604" MODIFIED="1576282358045" TEXT="outset nur im Rahmen des Margin">
|
||||||
<richcontent TYPE="NOTE"><html>
|
<richcontent TYPE="NOTE"><html>
|
||||||
<head>
|
<head/>
|
||||||
|
|
||||||
</head>
|
|
||||||
<body>
|
<body>
|
||||||
<p>
|
<p>
|
||||||
weil über alles andere darübergezeichnet wird
|
weil über alles andere darübergezeichnet wird
|
||||||
|
|
@ -33732,9 +33716,7 @@
|
||||||
</node>
|
</node>
|
||||||
<node CREATED="1678063198596" ID="ID_1800094446" MODIFIED="1679073586554" TEXT="wenn man den Splitter zieht, springt die vertikale Platzverteilung">
|
<node CREATED="1678063198596" ID="ID_1800094446" MODIFIED="1679073586554" TEXT="wenn man den Splitter zieht, springt die vertikale Platzverteilung">
|
||||||
<richcontent TYPE="NOTE"><html>
|
<richcontent TYPE="NOTE"><html>
|
||||||
<head>
|
<head/>
|
||||||
|
|
||||||
</head>
|
|
||||||
<body>
|
<body>
|
||||||
<p>
|
<p>
|
||||||
sichtbar an der Höhe der Sub-Scope-Verbindungen auf den StaveBrackets
|
sichtbar an der Höhe der Sub-Scope-Verbindungen auf den StaveBrackets
|
||||||
|
|
@ -34652,9 +34634,7 @@
|
||||||
</node>
|
</node>
|
||||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1611124813478" ID="ID_107886915" MODIFIED="1611124859455">
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1611124813478" ID="ID_107886915" MODIFIED="1611124859455">
|
||||||
<richcontent TYPE="NODE"><html>
|
<richcontent TYPE="NODE"><html>
|
||||||
<head>
|
<head/>
|
||||||
|
|
||||||
</head>
|
|
||||||
<body>
|
<body>
|
||||||
<p>
|
<p>
|
||||||
Aufgabe: wie geht man mit einem Anzeigestil um, der den Effkt<i> gar nicht</i>  darstellt
|
Aufgabe: wie geht man mit einem Anzeigestil um, der den Effkt<i> gar nicht</i>  darstellt
|
||||||
|
|
@ -35031,9 +35011,7 @@
|
||||||
<icon BUILTIN="messagebox_warning"/>
|
<icon BUILTIN="messagebox_warning"/>
|
||||||
<node COLOR="#435e98" CREATED="1612471205161" ID="ID_544296566" MODIFIED="1665962213180" TEXT="GTK erlaubt keine explizite Größe">
|
<node COLOR="#435e98" CREATED="1612471205161" ID="ID_544296566" MODIFIED="1665962213180" TEXT="GTK erlaubt keine explizite Größe">
|
||||||
<richcontent TYPE="NOTE"><html>
|
<richcontent TYPE="NOTE"><html>
|
||||||
<head>
|
<head/>
|
||||||
|
|
||||||
</head>
|
|
||||||
<body>
|
<body>
|
||||||
<p>
|
<p>
|
||||||
...das ist eine grundlegende Design-Enscheidung (und zwar eine Gute), aber in der Praxis muß es natürlich trotzdem einen Weg geben, nur ist der dann relativ indirekt und auch nicht wirklich dokumentiert
|
...das ist eine grundlegende Design-Enscheidung (und zwar eine Gute), aber in der Praxis muß es natürlich trotzdem einen Weg geben, nur ist der dann relativ indirekt und auch nicht wirklich dokumentiert
|
||||||
|
|
@ -35538,9 +35516,7 @@
|
||||||
</body>
|
</body>
|
||||||
</html></richcontent>
|
</html></richcontent>
|
||||||
<richcontent TYPE="NOTE"><html>
|
<richcontent TYPE="NOTE"><html>
|
||||||
<head>
|
<head/>
|
||||||
|
|
||||||
</head>
|
|
||||||
<body>
|
<body>
|
||||||
<p>
|
<p>
|
||||||
...anstatt eine auf den konkreten Typ getemplatete Subklasse zu verwenden,
|
...anstatt eine auf den konkreten Typ getemplatete Subklasse zu verwenden,
|
||||||
|
|
@ -88388,8 +88364,8 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
||||||
</node>
|
</node>
|
||||||
</node>
|
</node>
|
||||||
</node>
|
</node>
|
||||||
<node COLOR="#338800" CREATED="1734310118603" ID="ID_1954508996" MODIFIED="1734631398113" TEXT="Feed-Manifold: Eigenschaften demonstrieren">
|
<node COLOR="#338800" CREATED="1734310118603" ID="ID_1954508996" MODIFIED="1734634792828" TEXT="Feed-Manifold: Eigenschaften demonstrieren">
|
||||||
<linktarget COLOR="#406cd3" DESTINATION="ID_1954508996" ENDARROW="Default" ENDINCLINATION="-484;30;" ID="Arrow_ID_640616380" SOURCE="ID_1710382999" STARTARROW="None" STARTINCLINATION="-2974;268;"/>
|
<linktarget COLOR="#406cd3" DESTINATION="ID_1954508996" ENDARROW="Default" ENDINCLINATION="-552;35;" ID="Arrow_ID_640616380" SOURCE="ID_1710382999" STARTARROW="None" STARTINCLINATION="-2974;268;"/>
|
||||||
<icon BUILTIN="button_ok"/>
|
<icon BUILTIN="button_ok"/>
|
||||||
<node COLOR="#338800" CREATED="1734310213994" ID="ID_691754137" MODIFIED="1734631391185" TEXT="mehrere Varianten von Funktions-Signaturen vorstellen">
|
<node COLOR="#338800" CREATED="1734310213994" ID="ID_691754137" MODIFIED="1734631391185" TEXT="mehrere Varianten von Funktions-Signaturen vorstellen">
|
||||||
<icon BUILTIN="yes"/>
|
<icon BUILTIN="yes"/>
|
||||||
|
|
@ -88777,7 +88753,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
||||||
</node>
|
</node>
|
||||||
</node>
|
</node>
|
||||||
<node COLOR="#338800" CREATED="1734631471232" ID="ID_1048829589" MODIFIED="1734631527235" TEXT="Feed-Prototype: Parameter-Behandlung zeigen">
|
<node COLOR="#338800" CREATED="1734631471232" ID="ID_1048829589" MODIFIED="1734631527235" TEXT="Feed-Prototype: Parameter-Behandlung zeigen">
|
||||||
<linktarget DESTINATION="ID_1048829589" ENDARROW="Default" ID="Arrow_ID_58841322" SOURCE="ID_1416331336" STARTARROW="None" STARTINCLINATION="-90;-5;" COLOR="#406cd3" ENDINCLINATION="-484;30;"/>
|
<linktarget COLOR="#406cd3" DESTINATION="ID_1048829589" ENDARROW="Default" ENDINCLINATION="-675;40;" ID="Arrow_ID_58841322" SOURCE="ID_1416331336" STARTARROW="None" STARTINCLINATION="-3038;178;"/>
|
||||||
<icon BUILTIN="button_ok"/>
|
<icon BUILTIN="button_ok"/>
|
||||||
</node>
|
</node>
|
||||||
</node>
|
</node>
|
||||||
|
|
@ -92053,8 +92029,8 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
||||||
<node CREATED="1734226511062" ID="ID_1899717504" MODIFIED="1734226537968" TEXT="ProcFunctor (mandatory)"/>
|
<node CREATED="1734226511062" ID="ID_1899717504" MODIFIED="1734226537968" TEXT="ProcFunctor (mandatory)"/>
|
||||||
<node CREATED="1734226564932" ID="ID_696691756" MODIFIED="1734226570322" TEXT="Constructor (static)"/>
|
<node CREATED="1734226564932" ID="ID_696691756" MODIFIED="1734226570322" TEXT="Constructor (static)"/>
|
||||||
</node>
|
</node>
|
||||||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1734582866744" ID="ID_1616386454" MODIFIED="1734583016228" TEXT="nochmal restrukturieren: muß nun Param-Tupel durchreichen">
|
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1734582866744" ID="ID_1616386454" MODIFIED="1734634929289" TEXT="nochmal restrukturieren: muß nun Param-Tupel durchreichen">
|
||||||
<linktarget COLOR="#c1428c" DESTINATION="ID_1616386454" ENDARROW="Default" ENDINCLINATION="-1351;60;" ID="Arrow_ID_676623897" SOURCE="ID_1465521206" STARTARROW="None" STARTINCLINATION="-527;29;"/>
|
<linktarget COLOR="#427ec1" DESTINATION="ID_1616386454" ENDARROW="Default" ENDINCLINATION="-1351;60;" ID="Arrow_ID_676623897" SOURCE="ID_1465521206" STARTARROW="None" STARTINCLINATION="-531;27;"/>
|
||||||
<icon BUILTIN="pencil"/>
|
<icon BUILTIN="pencil"/>
|
||||||
<node COLOR="#5b280f" CREATED="1734583035971" ID="ID_662389818" MODIFIED="1734583156432" TEXT="ich möchte nicht das Param-Tupel nachträglich zuweisen">
|
<node COLOR="#5b280f" CREATED="1734583035971" ID="ID_662389818" MODIFIED="1734583156432" TEXT="ich möchte nicht das Param-Tupel nachträglich zuweisen">
|
||||||
<richcontent TYPE="NOTE"><html>
|
<richcontent TYPE="NOTE"><html>
|
||||||
|
|
@ -92069,7 +92045,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
||||||
</node>
|
</node>
|
||||||
<node CREATED="1734583026544" ID="ID_1494983661" MODIFIED="1734583167914" TEXT="bedeutet: Konstrkutor-Kette und in Basis-Klasse durchreichen"/>
|
<node CREATED="1734583026544" ID="ID_1494983661" MODIFIED="1734583167914" TEXT="bedeutet: Konstrkutor-Kette und in Basis-Klasse durchreichen"/>
|
||||||
<node CREATED="1734583169204" ID="ID_960536834" MODIFIED="1734583185511" TEXT="das ist schwierig ... weil die Basis-Klasse komplex aufgebaut wird"/>
|
<node CREATED="1734583169204" ID="ID_960536834" MODIFIED="1734583185511" TEXT="das ist schwierig ... weil die Basis-Klasse komplex aufgebaut wird"/>
|
||||||
<node CREATED="1734583186883" ID="ID_445121292" MODIFIED="1734583380956" TEXT="Idee: eine Basis-Klasse »Storage« in einer Konfigurations-Klasse definieren">
|
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#435e98" CREATED="1734583186883" ID="ID_445121292" MODIFIED="1734634891132" TEXT="Idee: eine Basis-Klasse »Storage« in einer Konfigurations-Klasse definieren">
|
||||||
<icon BUILTIN="idea"/>
|
<icon BUILTIN="idea"/>
|
||||||
<node CREATED="1734583221142" ID="ID_49260434" MODIFIED="1734583235671" TEXT="also _StorageSetup<FUN> als äußerer Container"/>
|
<node CREATED="1734583221142" ID="ID_49260434" MODIFIED="1734583235671" TEXT="also _StorageSetup<FUN> als äußerer Container"/>
|
||||||
<node CREATED="1734583236900" ID="ID_63905696" MODIFIED="1734583247122" TEXT="da kann dann alles Metaprogramming rein..."/>
|
<node CREATED="1734583236900" ID="ID_63905696" MODIFIED="1734583247122" TEXT="da kann dann alles Metaprogramming rein..."/>
|
||||||
|
|
@ -92087,7 +92063,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
||||||
<node CREATED="1734583343988" ID="ID_430940225" MODIFIED="1734583360386" TEXT="und definiert dann erst die nested struct Storage"/>
|
<node CREATED="1734583343988" ID="ID_430940225" MODIFIED="1734583360386" TEXT="und definiert dann erst die nested struct Storage"/>
|
||||||
<node CREATED="1734583361711" ID="ID_568129151" MODIFIED="1734583372909" TEXT="FeedManifold erbt dann von dieser"/>
|
<node CREATED="1734583361711" ID="ID_568129151" MODIFIED="1734583372909" TEXT="FeedManifold erbt dann von dieser"/>
|
||||||
</node>
|
</node>
|
||||||
<node COLOR="#338800" CREATED="1734583395510" ID="ID_1700565848" MODIFIED="1734625568156" TEXT="muß dann einen weiteren Ctor auf dieser Basisklasse conditional sichtbar machen">
|
<node COLOR="#338800" CREATED="1734583395510" FOLDED="true" ID="ID_1700565848" MODIFIED="1734625568156" TEXT="muß dann einen weiteren Ctor auf dieser Basisklasse conditional sichtbar machen">
|
||||||
<icon BUILTIN="button_ok"/>
|
<icon BUILTIN="button_ok"/>
|
||||||
<node BACKGROUND_COLOR="#e8d88a" COLOR="#d5017d" CREATED="1734583422523" ID="ID_907955668" MODIFIED="1734625367025" TEXT="puh .... FEHLER FEHLER FEHLER FEHLER">
|
<node BACKGROUND_COLOR="#e8d88a" COLOR="#d5017d" CREATED="1734583422523" ID="ID_907955668" MODIFIED="1734625367025" TEXT="puh .... FEHLER FEHLER FEHLER FEHLER">
|
||||||
<arrowlink COLOR="#fee7c1" DESTINATION="ID_1031755621" ENDARROW="Default" ENDINCLINATION="367;-22;" ID="Arrow_ID_988126033" STARTARROW="None" STARTINCLINATION="377;26;"/>
|
<arrowlink COLOR="#fee7c1" DESTINATION="ID_1031755621" ENDARROW="Default" ENDINCLINATION="367;-22;" ID="Arrow_ID_988126033" STARTARROW="None" STARTINCLINATION="377;26;"/>
|
||||||
|
|
@ -92123,8 +92099,7 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
||||||
enable_if_hasParam : verwendet statt <font face="Monospaced" color="#ac0909">Type</font> statt <font face="Monospaced" color="#ac0909">type</font>
|
enable_if_hasParam : verwendet statt <font face="Monospaced" color="#ac0909">Type</font> statt <font face="Monospaced" color="#ac0909">type</font>
|
||||||
</p>
|
</p>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html></richcontent>
|
||||||
</richcontent>
|
|
||||||
<icon BUILTIN="broken-line"/>
|
<icon BUILTIN="broken-line"/>
|
||||||
</node>
|
</node>
|
||||||
<node COLOR="#ff00ca" CREATED="1734624978674" ID="ID_514782434" MODIFIED="1734625013697" TEXT="ja dann KANNs ja gar nicht funktionieren...">
|
<node COLOR="#ff00ca" CREATED="1734624978674" ID="ID_514782434" MODIFIED="1734625013697" TEXT="ja dann KANNs ja gar nicht funktionieren...">
|
||||||
|
|
@ -92328,12 +92303,83 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
||||||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1734572424754" ID="ID_1186353623" MODIFIED="1734582798770" TEXT="Typ anlegen mit zwei Funktor-Parametern">
|
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1734572424754" ID="ID_1186353623" MODIFIED="1734582798770" TEXT="Typ anlegen mit zwei Funktor-Parametern">
|
||||||
<icon BUILTIN="pencil"/>
|
<icon BUILTIN="pencil"/>
|
||||||
</node>
|
</node>
|
||||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1734572571310" ID="ID_762884176" MODIFIED="1734572593981" TEXT="Traits-Template für Parmeter-Funktor vorsehen">
|
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1734572571310" ID="ID_762884176" MODIFIED="1734642685926" TEXT="Traits-Template für Parmeter-Funktor vorsehen">
|
||||||
<icon BUILTIN="flag-yellow"/>
|
<icon BUILTIN="pencil"/>
|
||||||
|
<node COLOR="#435e98" CREATED="1734642562758" ID="ID_124741811" MODIFIED="1734642577949" TEXT="_ParamFun<FUN>">
|
||||||
|
<font BOLD="true" NAME="SansSerif" SIZE="12"/>
|
||||||
|
<icon BUILTIN="info"/>
|
||||||
|
<node CREATED="1734642580172" ID="ID_1594598889" MODIFIED="1734642601285" TEXT="FUN ≡ Typ der zugehörigen Processing-Function"/>
|
||||||
|
<node COLOR="#338800" CREATED="1734642607512" ID="ID_225155388" MODIFIED="1734642679519" TEXT="Trait soll jedoch direkt einsetzbar sein">
|
||||||
|
<richcontent TYPE="NOTE"><html>
|
||||||
|
<head/>
|
||||||
|
<body>
|
||||||
|
<p>
|
||||||
|
....das heißt, alle wichtigen Eigenschaften aus _ProcFun<FUN> müssen delegiert bereitgestellt werden...
|
||||||
|
</p>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
</richcontent>
|
||||||
|
<icon BUILTIN="button_ok"/>
|
||||||
</node>
|
</node>
|
||||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1734572439920" ID="ID_955026014" MODIFIED="1734573339521" TEXT="createFeed (TurnoutSystem&) implementieren">
|
</node>
|
||||||
|
<node CREATED="1734640371452" ID="ID_762706800" MODIFIED="1734640376664" TEXT="herauszufinden ....">
|
||||||
|
<node COLOR="#435e98" CREATED="1734640381115" ID="ID_1284162123" MODIFIED="1734642552192" TEXT="kann dieser Funktor die Parameter initialisieren?">
|
||||||
|
<node CREATED="1734642478889" ID="ID_537176146" MODIFIED="1734642491427" TEXT="das läuft auf decltype() hinaus..."/>
|
||||||
|
<node CREATED="1734642492691" ID="ID_1140592492" MODIFIED="1734642500411" TEXT="man wendet den Funktor an"/>
|
||||||
|
<node CREATED="1734642501830" ID="ID_15418917" MODIFIED="1734642513812" TEXT="und konstruiert daraus den Parameter-Datentyp"/>
|
||||||
|
<node CREATED="1734642516516" ID="ID_371749462" MODIFIED="1734642545785">
|
||||||
|
<richcontent TYPE="NODE"><html>
|
||||||
|
<head/>
|
||||||
|
<body>
|
||||||
|
<p>
|
||||||
|
valide  ⟹  Funktor ist <i>brauchbar</i>
|
||||||
|
</p>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
</richcontent>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
<node COLOR="#435e98" CREATED="1734640447354" ID="ID_1513968039" MODIFIED="1734642552192" TEXT="ist dieser Funktor dynamisch aktivierbar?">
|
||||||
|
<node CREATED="1734640469377" ID="ID_1527659185" MODIFIED="1734640480593" TEXT="er darf dann nur verwendet werden, wenn aktiviert"/>
|
||||||
|
<node CREATED="1734640482114" ID="ID_1955370545" MODIFIED="1734642852699" TEXT="wichtiges Beispiel: std::function">
|
||||||
|
<arrowlink COLOR="#79a6a8" DESTINATION="ID_1746010324" ENDARROW="Default" ENDINCLINATION="117;-9;" ID="Arrow_ID_1965190462" STARTARROW="None" STARTINCLINATION="269;24;"/>
|
||||||
|
</node>
|
||||||
|
<node CREATED="1734640604005" ID="ID_758754868" MODIFIED="1734640611064" TEXT="Kriterium: bool-Konversion"/>
|
||||||
|
</node>
|
||||||
|
<node COLOR="#435e98" CREATED="1734640580222" ID="ID_1970054522" MODIFIED="1734642552192" TEXT="wenn es keine Parameter gibt...?">
|
||||||
|
<node CREATED="1734642435463" ID="ID_1603419819" MODIFIED="1734642448761" TEXT="...wird dieser Zweig eigentlich auch gar nicht aufgerufen"/>
|
||||||
|
<node CREATED="1734642450134" ID="ID_21738548" MODIFIED="1734642472763" TEXT="sicherheitshalber doch auch die Param-Funktion dann deaktiveren"/>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
|
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1734572439920" ID="ID_955026014" MODIFIED="1734642701637" TEXT="createFeed (TurnoutSystem&) implementieren">
|
||||||
<linktarget COLOR="#d35582" DESTINATION="ID_955026014" ENDARROW="Default" ENDINCLINATION="-620;38;" ID="Arrow_ID_278216824" SOURCE="ID_112390056" STARTARROW="None" STARTINCLINATION="1203;53;"/>
|
<linktarget COLOR="#d35582" DESTINATION="ID_955026014" ENDARROW="Default" ENDINCLINATION="-620;38;" ID="Arrow_ID_278216824" SOURCE="ID_112390056" STARTARROW="None" STARTINCLINATION="1203;53;"/>
|
||||||
<icon BUILTIN="flag-yellow"/>
|
<icon BUILTIN="pencil"/>
|
||||||
|
<node COLOR="#5b280f" CREATED="1734642711594" ID="ID_628059323" MODIFIED="1734642730462" TEXT="man könnte hier von der Konfiguration ein Lambda generieren lassen">
|
||||||
|
<icon BUILTIN="button_cancel"/>
|
||||||
|
</node>
|
||||||
|
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1734642738502" ID="ID_847666328" MODIFIED="1734642756487" TEXT="nein — besser direkt">
|
||||||
|
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
|
||||||
|
<icon BUILTIN="yes"/>
|
||||||
|
</node>
|
||||||
|
<node COLOR="#435e98" CREATED="1734642758924" ID="ID_1231534004" MODIFIED="1734643023205" TEXT="ist eine einfache Kaskade von Fallunterscheidungen">
|
||||||
|
<node COLOR="#435e98" CREATED="1734642773621" ID="ID_1090553293" MODIFIED="1734643031879" TEXT="not hasParam() ⟹ das ganze Thema ignorieren"/>
|
||||||
|
<node COLOR="#435e98" CREATED="1734642801730" ID="ID_1980769926" MODIFIED="1734643029296" TEXT="spezielle Erweiterung: konfigurierbare Funktion">
|
||||||
|
<node CREATED="1734642820012" ID="ID_1746010324" MODIFIED="1734642962465" TEXT="wichtig (wegen std::function)">
|
||||||
|
<richcontent TYPE="NOTE"><html>
|
||||||
|
<head/>
|
||||||
|
<body>
|
||||||
|
<p>
|
||||||
|
...die werde ich voraussichtlich per Default (oder zumindest in wichtigen Fällen) einsetzen, um den Template-Bloat zu begrenzen. Das hat dann zur Folge, daß noch zur Laufzeit entschieden werden könnte, ob überhaupt eine Parameter-Konfiguration gemacht wird, oder ob default-konstruierte Parameter-Werte genügen
|
||||||
|
</p>
|
||||||
|
</body>
|
||||||
|
</html></richcontent>
|
||||||
|
<linktarget COLOR="#79a6a8" DESTINATION="ID_1746010324" ENDARROW="Default" ENDINCLINATION="117;-9;" ID="Arrow_ID_1965190462" SOURCE="ID_1955370545" STARTARROW="None" STARTINCLINATION="269;24;"/>
|
||||||
|
</node>
|
||||||
|
<node CREATED="1734642970639" ID="ID_496362197" MODIFIED="1734642986760" TEXT="entweder compile-Time oder Runtime"/>
|
||||||
|
<node CREATED="1734642990109" ID="ID_182746911" MODIFIED="1734643009042" TEXT="nicht konfigurierbar, aber generell brauchbar ⟹ immer aktiviert"/>
|
||||||
|
</node>
|
||||||
|
</node>
|
||||||
</node>
|
</node>
|
||||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1734572530013" ID="ID_765842112" MODIFIED="1734572593980" TEXT="dynamische quer-Builder hinzufügen">
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1734572530013" ID="ID_765842112" MODIFIED="1734572593980" TEXT="dynamische quer-Builder hinzufügen">
|
||||||
<icon BUILTIN="flag-yellow"/>
|
<icon BUILTIN="flag-yellow"/>
|
||||||
|
|
@ -92839,9 +92885,9 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
||||||
</body>
|
</body>
|
||||||
</html></richcontent>
|
</html></richcontent>
|
||||||
</node>
|
</node>
|
||||||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1734582923838" ID="ID_1465521206" MODIFIED="1734583016228" TEXT="muß dafür nochmal Definitions-Struktur umkrempeln">
|
<node COLOR="#338800" CREATED="1734582923838" ID="ID_1465521206" MODIFIED="1734634938017" TEXT="muß dafür nochmal Definitions-Struktur umkrempeln">
|
||||||
<arrowlink COLOR="#c1428c" DESTINATION="ID_1616386454" ENDARROW="Default" ENDINCLINATION="-1351;60;" ID="Arrow_ID_676623897" STARTARROW="None" STARTINCLINATION="-527;29;"/>
|
<arrowlink COLOR="#427ec1" DESTINATION="ID_1616386454" ENDARROW="Default" ENDINCLINATION="-1351;60;" ID="Arrow_ID_676623897" STARTARROW="None" STARTINCLINATION="-531;27;"/>
|
||||||
<icon BUILTIN="pencil"/>
|
<icon BUILTIN="yes"/>
|
||||||
</node>
|
</node>
|
||||||
</node>
|
</node>
|
||||||
</node>
|
</node>
|
||||||
|
|
@ -92857,14 +92903,14 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
||||||
</html></richcontent>
|
</html></richcontent>
|
||||||
<icon BUILTIN="button_cancel"/>
|
<icon BUILTIN="button_cancel"/>
|
||||||
</node>
|
</node>
|
||||||
<node CREATED="1734309990069" ID="ID_1710382999" MODIFIED="1734633414037" TEXT="angesiedelt in NodeBase_test">
|
<node CREATED="1734309990069" ID="ID_1710382999" MODIFIED="1734634800005" TEXT="angesiedelt in NodeBase_test">
|
||||||
<arrowlink COLOR="#406cd3" DESTINATION="ID_1954508996" ENDARROW="Default" ENDINCLINATION="-484;30;" ID="Arrow_ID_640616380" STARTARROW="None" STARTINCLINATION="-2974;268;"/>
|
<arrowlink COLOR="#406cd3" DESTINATION="ID_1954508996" ENDARROW="Default" ENDINCLINATION="-552;35;" ID="Arrow_ID_640616380" STARTARROW="None" STARTINCLINATION="-2974;268;"/>
|
||||||
<linktarget COLOR="#16a2aa" DESTINATION="ID_1710382999" ENDARROW="Default" ENDINCLINATION="539;-32;" ID="Arrow_ID_129574515" SOURCE="ID_1348489291" STARTARROW="None" STARTINCLINATION="183;11;"/>
|
<linktarget COLOR="#16a2aa" DESTINATION="ID_1710382999" ENDARROW="Default" ENDINCLINATION="539;-32;" ID="Arrow_ID_129574515" SOURCE="ID_1348489291" STARTARROW="None" STARTINCLINATION="183;11;"/>
|
||||||
<linktarget COLOR="#467fbe" DESTINATION="ID_1710382999" ENDARROW="Default" ENDINCLINATION="73;6;" ID="Arrow_ID_1026737432" SOURCE="ID_1795683894" STARTARROW="None" STARTINCLINATION="97;6;"/>
|
<linktarget COLOR="#467fbe" DESTINATION="ID_1710382999" ENDARROW="Default" ENDINCLINATION="73;6;" ID="Arrow_ID_1026737432" SOURCE="ID_1795683894" STARTARROW="None" STARTINCLINATION="97;6;"/>
|
||||||
<icon BUILTIN="info"/>
|
<icon BUILTIN="info"/>
|
||||||
</node>
|
</node>
|
||||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1734573209952" ID="ID_1416331336" MODIFIED="1734631527235" TEXT="FeedPrototype in separatem Testfall abhandeln">
|
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1734573209952" ID="ID_1416331336" MODIFIED="1734634800005" TEXT="FeedPrototype in separatem Testfall abhandeln">
|
||||||
<arrowlink DESTINATION="ID_1048829589" ENDARROW="Default" ID="Arrow_ID_58841322" STARTARROW="None" STARTINCLINATION="-90;-5;" COLOR="#406cd3" ENDINCLINATION="-484;30;"/>
|
<arrowlink COLOR="#406cd3" DESTINATION="ID_1048829589" ENDARROW="Default" ENDINCLINATION="-675;40;" ID="Arrow_ID_58841322" STARTARROW="None" STARTINCLINATION="-3038;178;"/>
|
||||||
<linktarget COLOR="#35a1d3" DESTINATION="ID_1416331336" ENDARROW="Default" ENDINCLINATION="420;24;" ID="Arrow_ID_1552949599" SOURCE="ID_112390056" STARTARROW="None" STARTINCLINATION="245;11;"/>
|
<linktarget COLOR="#35a1d3" DESTINATION="ID_1416331336" ENDARROW="Default" ENDINCLINATION="420;24;" ID="Arrow_ID_1552949599" SOURCE="ID_112390056" STARTARROW="None" STARTINCLINATION="245;11;"/>
|
||||||
<icon BUILTIN="flag-yellow"/>
|
<icon BUILTIN="flag-yellow"/>
|
||||||
</node>
|
</node>
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue