Job-Planning: Attempt to build a prerequisite-Pipeline failed -- investigate why
To complete the mock setup, the next step would be to extend the GenNode-based spec langage to allow defining prerequisite Mock-JobTickets. Setting this up seems rather straight forward -- however, defining a simple testcase to cover this extension runs into surprisingly tricky problems.. - for one, the singleValIterator from Itertools has serious difficulties handling references - but even more surprising, it seems impossible to make the "prerequisites iterator" fit into the Tree-Explorer framework (which I intend to use as replacement for the monadic approach) after some extended analysis of generic types and template instances, it seems that not TreeExplorer as such is the primary problem, but rather there is a conceptual mismatch somewhere deep down in Itertools or Iter-Adapter
This commit is contained in:
parent
27a8e91fa2
commit
67468f15d5
4 changed files with 594 additions and 7 deletions
|
|
@ -282,6 +282,14 @@ namespace meta {
|
|||
typedef TY value_type;
|
||||
};
|
||||
|
||||
template<typename TY>
|
||||
struct RefTraits<TY &&>
|
||||
{
|
||||
typedef TY* pointer;
|
||||
typedef TY& reference;
|
||||
typedef TY value_type;
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -152,7 +152,7 @@ using lib::LUID;
|
|||
getPrerequisites (uint slotNr =0) const
|
||||
{
|
||||
return lib::transformIterator (provision_[slotNr].requirements.begin()
|
||||
,[](Prerequisite& prq) -> JobTicket&
|
||||
,[](Prerequisite& prq) -> JobTicket const&
|
||||
{
|
||||
return prq.descriptor;
|
||||
});
|
||||
|
|
|
|||
|
|
@ -29,18 +29,29 @@
|
|||
#include "steam/engine/mock-dispatcher.hpp"
|
||||
#include "vault/engine/nop-job-functor.hpp"
|
||||
#include "vault/engine/dummy-job.hpp"
|
||||
#include "lib/iter-tree-explorer.hpp"
|
||||
#include "lib/util-tuple.hpp"
|
||||
#include "lib/util.hpp"
|
||||
#include "lib/format-cout.hpp"
|
||||
#include "lib/test/test-helper.hpp"
|
||||
|
||||
using test::Test;
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////TODO WIP for investigation
|
||||
namespace lib {
|
||||
namespace iter_explorer {
|
||||
template<class RES>
|
||||
using DecoTraits = _DecoratorTraits<RES>;
|
||||
}}
|
||||
///////////////////////////////////////////////////////TODO WIP for investigation
|
||||
namespace steam {
|
||||
namespace engine{
|
||||
namespace test {
|
||||
|
||||
using steam::fixture::Segment;
|
||||
using vault::engine::DummyJob;
|
||||
using lib::singleValIterator;
|
||||
using util::isSameObject;
|
||||
using util::seqTuple;
|
||||
|
||||
|
|
@ -329,6 +340,59 @@ namespace test {
|
|||
CHECK (23 == DummyJob::invocationAdditionalKey (job1));
|
||||
CHECK (11 == DummyJob::invocationAdditionalKey (job2));
|
||||
}
|
||||
//-----------------------------------------------------------------/// deep nested prerequisite
|
||||
{
|
||||
MockSegmentation mockSegs{MakeRec()
|
||||
.attrib("mark", 11)
|
||||
.scope(MakeRec()
|
||||
.attrib("mark",23)
|
||||
.genNode())
|
||||
.genNode()};
|
||||
|
||||
using RTick = std::reference_wrapper<JobTicket>;
|
||||
auto start = singleValIterator (& util::unConst(mockSegs[Time::ZERO].jobTicket()));
|
||||
|
||||
using SrC = lib::iter_explorer::BaseAdapter<lib::SingleValIter<engine::JobTicket*> >;
|
||||
|
||||
auto bunny = [](JobTicket* ticket)
|
||||
{
|
||||
return lib::transformIterator(ticket->getPrerequisites()
|
||||
,[](JobTicket const& preq) -> JobTicket*
|
||||
{ return unConst(&preq); }
|
||||
);
|
||||
};
|
||||
using ExIt = decltype(bunny(std::declval<JobTicket*>()));
|
||||
// ergibt: lib::TransformIter<lib::TransformIter<lib::IterStateWrapper<steam::engine::JobTicket::Prerequisite, lib::LinkedElements<steam::engine::JobTicket::Prerequisite>::IterationState>, const steam::engine::JobTicket&>, steam::engine::JobTicket*>
|
||||
|
||||
using Funny = std::function<ExIt(JobTicket*)>;
|
||||
Funny funny = bunny;
|
||||
|
||||
using ExpandedChildren = typename lib::iter_explorer::_FunTraits<Funny,SrC>::Res;
|
||||
|
||||
// using ResCore = lib::iter_explorer::Expander<SrC, ExpandedChildren>;
|
||||
|
||||
using ResIter = typename lib::iter_explorer::DecoTraits<ExpandedChildren>::SrcIter;
|
||||
using ResIterVal = typename ResIter::value_type;
|
||||
using SrcIterVal = typename SrC::value_type;
|
||||
// lib::test::TypeDebugger<SrcIterVal> buggy;
|
||||
// lib::test::TypeDebugger<ExIt> bugggy;
|
||||
|
||||
|
||||
#if false /////////////////////////////////////////////////////////////////////////////////////////////////////////////UNIMPLEMENTED :: TICKET #1294
|
||||
auto it = lib::explore(start)
|
||||
// .transform ([](RTick t) -> JobTicket const&
|
||||
// {
|
||||
// return t.get();
|
||||
// })
|
||||
.expand (funny)
|
||||
.expandAll()
|
||||
.transform ([&](JobTicket const& ticket)
|
||||
{
|
||||
return ticket.createJobFor(coord).parameter.invoKey.part.a;
|
||||
});
|
||||
cout << util::join(it,"-") <<endl;
|
||||
#endif /////////////////////////////////////////////////////////////////////////////////////////////////////////////UNIMPLEMENTED :: TICKET #1294
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -69415,8 +69415,8 @@
|
|||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1681425423695" ID="ID_1928295133" MODIFIED="1683836443972" TEXT="Reorganisation : RenderDrive verwenden">
|
||||
<linktarget COLOR="#f4fec9" DESTINATION="ID_1928295133" ENDARROW="Default" ENDINCLINATION="-1068;-69;" ID="Arrow_ID_362199078" SOURCE="ID_1888344503" STARTARROW="None" STARTINCLINATION="1381;58;"/>
|
||||
<linktarget COLOR="#ffe4c9" DESTINATION="ID_1928295133" ENDARROW="Default" ENDINCLINATION="-724;353;" ID="Arrow_ID_1773297165" SOURCE="ID_845968912" STARTARROW="None" STARTINCLINATION="-257;23;"/>
|
||||
<linktarget COLOR="#fed5d7" DESTINATION="ID_1928295133" ENDARROW="Default" ENDINCLINATION="-463;400;" ID="Arrow_ID_1972838231" SOURCE="ID_580321819" STARTARROW="None" STARTINCLINATION="-412;-64;"/>
|
||||
<linktarget COLOR="#ffe4c9" DESTINATION="ID_1928295133" ENDARROW="Default" ENDINCLINATION="-724;353;" ID="Arrow_ID_1773297165" SOURCE="ID_845968912" STARTARROW="None" STARTINCLINATION="-257;23;"/>
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node CREATED="1681597653622" ID="ID_1608883275" MODIFIED="1681597683317" TEXT="Eigenschaften">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
|
|
@ -69889,9 +69889,512 @@
|
|||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1683836490113" ID="ID_1045524420" MODIFIED="1683837475432" TEXT="per rekursiver GenNode-Auswertung">
|
||||
<icon BUILTIN="pencil"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1683836500089" ID="ID_993440863" MODIFIED="1683836585531" TEXT="testen über neues Interface getPrerequisites()">
|
||||
<arrowlink COLOR="#eb64a1" DESTINATION="ID_885444410" ENDARROW="Default" ENDINCLINATION="338;-2145;" ID="Arrow_ID_1011579074" STARTARROW="None" STARTINCLINATION="-152;9;"/>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1683836500089" ID="ID_993440863" MODIFIED="1683845290600" TEXT="testen über neues Interface getPrerequisites()">
|
||||
<arrowlink COLOR="#eb64a1" DESTINATION="ID_885444410" ENDARROW="Default" ENDINCLINATION="213;-1966;" ID="Arrow_ID_1011579074" STARTARROW="None" STARTINCLINATION="-384;23;"/>
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1683897388982" ID="ID_1523682954" MODIFIED="1683897457247" TEXT="dabei Möglichkeiten zur Pipeline-Verarbeitung ausloten">
|
||||
<linktarget COLOR="#dd399a" DESTINATION="ID_1523682954" ENDARROW="Default" ENDINCLINATION="-371;858;" ID="Arrow_ID_1803678506" SOURCE="ID_726660737" STARTARROW="None" STARTINCLINATION="267;-16;"/>
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1683897470433" ID="ID_293583902" MODIFIED="1683897488191" TEXT="ziemlich mühsam...">
|
||||
<icon BUILTIN="smiley-angry"/>
|
||||
<node COLOR="#ff0000" CREATED="1683897495069" ID="ID_668257697" MODIFIED="1683897532038" TEXT="Pipeline über JobTicket& gelingt überhaupt nicht">
|
||||
<icon BUILTIN="broken-line"/>
|
||||
<icon BUILTIN="button_cancel"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1683897542382" ID="ID_1067290974" MODIFIED="1683897564736" TEXT="auch mit JobTicket* geht nicht">
|
||||
<icon BUILTIN="broken-line"/>
|
||||
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1683897566957" ID="ID_1817158319" MODIFIED="1683897573478" TEXT="das muß gehen!!">
|
||||
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
|
||||
<icon BUILTIN="yes"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1683897595136" ID="ID_971835812" MODIFIED="1683897598775" TEXT="Untersuchung">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node COLOR="#435e98" CREATED="1683897607352" ID="ID_985878681" MODIFIED="1683897830578" TEXT="Expander-Functor explizit definiert">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
FUN = std::function<lib::TransformIter<
|
||||
</p>
|
||||
<p>
|
||||
                        lib::TransformIter<
|
||||
</p>
|
||||
<p>
|
||||
                            lib::IterStateWrapper<
|
||||
</p>
|
||||
<p>
|
||||
                                steam::engine::JobTicket::Prerequisite,
|
||||
</p>
|
||||
<p>
|
||||
                                LinkedElements<JobTicket::Prerequisite>::IterationState
|
||||
</p>
|
||||
<p>
|
||||
                            >,
|
||||
</p>
|
||||
<p>
|
||||
                            const steam::engine::JobTicket&
|
||||
</p>
|
||||
<p>
|
||||
                        >,
|
||||
</p>
|
||||
<p>
|
||||
                        steam::engine::JobTicket*
|
||||
</p>
|
||||
<p>
|
||||
                                      >(steam::engine::JobTicket*)
|
||||
</p>
|
||||
<p>
|
||||
                   >&
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
<icon BUILTIN="info"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1683897870753" ID="ID_259217789" MODIFIED="1683897957907" TEXT="zwei Assertion-Failures">
|
||||
<icon BUILTIN="broken-line"/>
|
||||
<node CREATED="1683897902860" ID="ID_809794871" MODIFIED="1683897955416" TEXT="iterator from the expansion must yield compatible values">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
src/lib/iter-tree-explorer.hpp:632
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
|
||||
</node>
|
||||
<node CREATED="1683897921602" ID="ID_1597038481" MODIFIED="1683897942154" TEXT="bound functor must accept the source iterator or state core as parameter">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
src/lib/iter-tree-explorer.hpp:513
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1683897959342" ID="ID_1569391939" MODIFIED="1684189646312" TEXT="Analyse">
|
||||
<icon BUILTIN="pencil"/>
|
||||
<node CREATED="1683897967984" ID="ID_98765669" MODIFIED="1684189289245" TEXT="der Pfad zur 1.Assertion ist dubios">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
Er geht über die Instantiierung des Expander-Typs -> _DecoratorTraits<RES>::SrcIter
|
||||
</p>
|
||||
<ul>
|
||||
<li>
|
||||
wobei RES der sichtbare Ergebnis-Typ des Expand-Funktors ist, also ein Iterator.
|
||||
</li>
|
||||
<li>
|
||||
mir fällt auf, daß die Auswertung von shall_wrap_STL_Iter<RES> geht
|
||||
</li>
|
||||
<li>
|
||||
<font color="#ac0122">etwas sonderbar ist</font>, daß dieser Auswertungspfad als Call-Stack für die Assertion-Failure auftaucht (könnte aber einfach der Arbeitsweise des Compilers geschuldet sein)
|
||||
</li>
|
||||
</ul>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
<linktarget COLOR="#7e8690" DESTINATION="ID_98765669" ENDARROW="Default" ENDINCLINATION="349;0;" ID="Arrow_ID_1245494875" SOURCE="ID_913649620" STARTARROW="None" STARTINCLINATION="-145;-3;"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1683898203764" ID="ID_1213067535" MODIFIED="1683898221962" TEXT="die 2. Assertion stellt ein allgemeineres Problem dar">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node CREATED="1683898228440" ID="ID_1125499200" MODIFIED="1683898237979" TEXT="Einstieg ist hier über den Expander-ctor">
|
||||
<node CREATED="1683898284523" ID="ID_589425980" MODIFIED="1683898284523" TEXT="_FunTraits<FUN,ResIter>::adaptFunctor"/>
|
||||
<node CREATED="1683898287377" ID="ID_913649620" MODIFIED="1684189300723" TEXT="ResIter ist im Umfeld der 1. Assertion failure definiert">
|
||||
<arrowlink COLOR="#7e8690" DESTINATION="ID_98765669" ENDARROW="Default" ENDINCLINATION="349;0;" ID="Arrow_ID_1245494875" STARTARROW="None" STARTINCLINATION="-145;-3;"/>
|
||||
</node>
|
||||
<node CREATED="1683898481412" ID="ID_660322820" MODIFIED="1683898487874" TEXT="das baut den ArgAdapter auf"/>
|
||||
</node>
|
||||
<node CREATED="1683898448043" ID="ID_860235777" MODIFIED="1684189469869" TEXT="offensichtlich läuft die Auswertung in den Base-Case">
|
||||
<icon BUILTIN="info"/>
|
||||
<node CREATED="1683898517698" ID="ID_1961360998" MODIFIED="1683898528437" TEXT="Base-Case: pass-through unaltered Fuctor"/>
|
||||
<node CREATED="1683898531617" ID="ID_1959356638" MODIFIED="1683898557176" TEXT="Special-1: monadic">
|
||||
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1683898704072" ID="ID_345436088" MODIFIED="1683898713032" TEXT="wollen wir nicht hier hin?">
|
||||
<icon BUILTIN="help"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1683898653511" ID="ID_1532959059" MODIFIED="1683898662713" TEXT="Special-2: IterSource"/>
|
||||
</node>
|
||||
</node>
|
||||
<node COLOR="#435e98" CREATED="1684191110019" ID="ID_1963874644" MODIFIED="1684192179077" TEXT="schon beim Ansetzen des Expander-Functors tritt ein Fehler auf">
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
<node CREATED="1684191137018" ID="ID_1953636647" MODIFIED="1684191181425" TEXT="das war erst durch die anderen Assertions maskiert">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
...insofern wurde es erst sichtbar, als ich angefangen habe, den Aufruf zu de/re-konstruieren
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
<icon BUILTIN="idea"/>
|
||||
</node>
|
||||
<node CREATED="1684191952212" ID="ID_486753512" MODIFIED="1684191996174" TEXT="passiert beim Instantiieren des nun eingeführten nachgeschalteten Transformers">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
...der dafür sorgen soll, daß aus dem Expand-Funktor ein JobTicket* rauskommt
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
<node CREATED="1684192107069" ID="ID_1162698734" MODIFIED="1684192121793" TEXT="ist ein const-correctness-Problem">
|
||||
<icon BUILTIN="idea"/>
|
||||
<node CREATED="1684192131373" ID="ID_724171201" MODIFIED="1684192159133" TEXT="Vorsicht: ich hatte die JobTicket::getPrerequisites auf -> JobTicket const& umgestellt">
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1684192160287" ID="ID_1810931642" MODIFIED="1684192173402" TEXT="noch nicht klar inwiefern das zum eigentlichen Problem beiträgt">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1684189641549" ID="ID_1940567504" MODIFIED="1684189650527" TEXT="Rekonstruktion">
|
||||
<icon BUILTIN="pencil"/>
|
||||
<node CREATED="1684189652118" ID="ID_1161273177" MODIFIED="1684189992174" TEXT="Teile des Call-Graphen explizit nachbauen">
|
||||
<icon BUILTIN="idea"/>
|
||||
</node>
|
||||
<node CREATED="1684189997712" ID="ID_770060385" MODIFIED="1684190017134" TEXT="Aufruf der expand()-Funktion">
|
||||
<icon BUILTIN="full-1"/>
|
||||
<node CREATED="1684190290749" ID="ID_1560322036" MODIFIED="1684190302792" TEXT="Parameter sehen erst mal korrekt aus">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
FUN = std::function<
|
||||
</p>
|
||||
<p>
|
||||
    TransformIter<TransformIter<IterStateWrapper<JobTicket::Prerequisite, LinkedElements<JobTicket::Prerequisite>::IterationState>
|
||||
</p>
|
||||
<p>
|
||||
                               ,engine::JobTicket const&>
|
||||
</p>
|
||||
<p>
|
||||
                 ,engine::JobTicket*>(steam::engine::JobTicket*)
|
||||
</p>
|
||||
<p>
|
||||
                   >&;
|
||||
</p>
|
||||
<p>
|
||||
SRC = iter_explorer::BaseAdapter<SingleValIter<engine::JobTicket*> >
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
<icon BUILTIN="info"/>
|
||||
<node CREATED="1684190865840" ID="ID_332062593" MODIFIED="1684191109085" TEXT="SRC kann ich auch direkt instantiieren">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
per TypeDebugger verifiziert: die explizit angeschriebene Variable 'start' hat den richtigen Typ
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
<icon BUILTIN="idea"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1684190344981" ID="ID_355562629" MODIFIED="1684193300508" TEXT="Typdefinitionen im Scope nachstellen">
|
||||
<icon BUILTIN="pencil"/>
|
||||
<node COLOR="#338800" CREATED="1684190359856" ID="ID_1556615567" MODIFIED="1684192734794" TEXT="ExpandedChildren">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node CREATED="1684192421610" ID="ID_152699502" MODIFIED="1684192429943" TEXT="läßt sich fehlerfrei konstruieren"/>
|
||||
<node CREATED="1684192434370" ID="ID_115735723" MODIFIED="1684192861769" TEXT="Typ ist wie erwartet (≡ Ergebnis-Typ vom Expand-Funktor)">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
TransformIter<TransformIter<IterStateWrapper<engine::JobTicket::Prerequisite
|
||||
</p>
|
||||
<p>
|
||||
                                            ,LinkedElements<engine::JobTicket::Prerequisite>::IterationState>
|
||||
</p>
|
||||
<p>
|
||||
                           ,engine::JobTicket const&
|
||||
</p>
|
||||
<p>
|
||||
                           >
|
||||
</p>
|
||||
<p>
|
||||
             ,steam::engine::JobTicket*
|
||||
</p>
|
||||
<p>
|
||||
             >
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1684190367907" ID="ID_172958877" MODIFIED="1684193296301" TEXT="ResCore">
|
||||
<icon BUILTIN="broken-line"/>
|
||||
<node CREATED="1684193043318" ID="ID_1720124636" MODIFIED="1684193145322" TEXT="läßt sich fehlerfrei konstruieren (Überraschung)">
|
||||
<icon BUILTIN="button_cancel"/>
|
||||
</node>
|
||||
<node CREATED="1684193274123" ID="ID_1796870542" MODIFIED="1684193283864" TEXT="Typ sieht auch konsistent aus">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
lib::iter_explorer::Expander<lib::iter_explorer::BaseAdapter<lib::SingleValIter<steam::engine::JobTicket*> >, lib::TransformIter<lib::TransformIter<lib::IterStateWrapper<steam::engine::JobTicket::Prerequisite, lib::LinkedElements<steam::engine::JobTicket::Prerequisite>::IterationState>, const steam::engine::JobTicket&>, steam::engine::JobTicket*> >
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1684193120895" ID="ID_242374698" MODIFIED="1684193148876" TEXT="aber sobald ich diesen Typ verwende, wird die 1.Assertion getriggert">
|
||||
<icon BUILTIN="forward"/>
|
||||
<icon BUILTIN="broken-line"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1684190373721" ID="ID_15651794" MODIFIED="1684193641116" TEXT="ResIter">
|
||||
<icon BUILTIN="hourglass"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1684193643850" ID="ID_1282590268" MODIFIED="1684193656953" TEXT="Iteratoren im Expander">
|
||||
<icon BUILTIN="full-2"/>
|
||||
<node CREATED="1684193679461" ID="ID_1517572148" MODIFIED="1684193781438" TEXT="Parameter der Expander-Instantiierung sind konsistent mit der Erwartung">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
Expander<SrC, ExpandedChildren>
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
<icon BUILTIN="info"/>
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1684193786647" ID="ID_785331918" MODIFIED="1684195906557" TEXT="Decorator-Traits-Instanz untersuchen">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node CREATED="1684194433377" ID="ID_82593902" MODIFIED="1684194453222" TEXT="gewählter Fall: shall_use_Lumiera_Iter<SRC>">
|
||||
<icon BUILTIN="info"/>
|
||||
<node COLOR="#338800" CREATED="1684194479811" ID="ID_1879611037" MODIFIED="1684194483057" TEXT="korrekt">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
<node CREATED="1684194489074" ID="ID_706865792" MODIFIED="1684194589443" TEXT="ist dann einfach der ExpandedChildren (ohne Referenz)"/>
|
||||
</node>
|
||||
<node CREATED="1684194906098" ID="ID_1480156019" MODIFIED="1684195807735" TEXT="SRC::value_type ≡ JobTicket*">
|
||||
<arrowlink COLOR="#ed1b60" DESTINATION="ID_972416826" ENDARROW="Default" ENDINCLINATION="28;-107;" ID="Arrow_ID_233555923" STARTARROW="None" STARTINCLINATION="90;0;"/>
|
||||
</node>
|
||||
<node CREATED="1684194719091" ID="ID_752820718" MODIFIED="1684194943493">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
ResIter::value_type ≡ <font color="#c9012e">JobTIcket</font>
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
<icon BUILTIN="idea"/>
|
||||
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1684194768462" ID="ID_1432190443" MODIFIED="1684194976969" TEXT="hä?">
|
||||
<icon BUILTIN="smiley-oh"/>
|
||||
</node>
|
||||
<node COLOR="#435e98" CREATED="1684194773868" ID="ID_15316954" MODIFIED="1684195753953" TEXT="wo ist der Pointer geblieben...?">
|
||||
<icon BUILTIN="help"/>
|
||||
<node CREATED="1684195382372" ID="ID_725421495" MODIFIED="1684195395436" TEXT="TransformingCore<IT,VAL>"/>
|
||||
<node CREATED="1684195396117" ID="ID_1996678056" MODIFIED="1684195412585" TEXT="mit VAL = engine::JobTicket*"/>
|
||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1684195442602" ID="ID_412081462" MODIFIED="1684195470723" TEXT="value_type ≡ typename RefTraits<VAL>::value_type ">
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1684195677474" ID="ID_972416826" MODIFIED="1684195803287" TEXT="dagegen SingleValIter geht anders vor">
|
||||
<linktarget COLOR="#ed1b60" DESTINATION="ID_972416826" ENDARROW="Default" ENDINCLINATION="28;-107;" ID="Arrow_ID_233555923" SOURCE="ID_1480156019" STARTARROW="None" STARTINCLINATION="90;0;"/>
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
<node CREATED="1684195699339" ID="ID_1562178442" MODIFIED="1684195708018" TEXT="SingleValCore<VAL>"/>
|
||||
<node CREATED="1684195396117" ID="ID_1028989688" MODIFIED="1684195412585" TEXT="mit VAL = engine::JobTicket*"/>
|
||||
<node CREATED="1684195724956" ID="ID_1264640517" MODIFIED="1684195739270" TEXT="value_≡ type typename std::remove_reference<VAL>::type"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1684195841717" ID="ID_832391082" MODIFIED="1684195870623">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
was wäre an der Stelle <i>logisch korrekt </i>?
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
<icon BUILTIN="help"/>
|
||||
<node CREATED="1684196080429" ID="ID_1302071402" MODIFIED="1684196108330" TEXT="is_convertible< ResIter::value_type ⟼ typename SRC::value_type >"/>
|
||||
<node CREATED="1684196119619" ID="ID_1880424042" MODIFIED="1684196250839">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
die Frage lautet:
|
||||
</p>
|
||||
<p>
|
||||
 „können die Expanded-Results verwendet werden,
|
||||
</p>
|
||||
<p>
|
||||
  an Stellen, wo SRC-Results erwartet werden“ 
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
<icon BUILTIN="idea"/>
|
||||
</node>
|
||||
<node CREATED="1684196495453" ID="ID_5416756" MODIFIED="1684196584048">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
für die Expanded-Results klar: brauche <i>exakt</i> den <b>Ergebnis-Typ</b>  des Iterators
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
<icon BUILTIN="yes"/>
|
||||
</node>
|
||||
<node CREATED="1684196589209" ID="ID_1757225531" MODIFIED="1684196635199" TEXT="für die Src-Results ist die Frage schwierig">
|
||||
<node CREATED="1684196637531" ID="ID_478127624" MODIFIED="1684196727253" TEXT="man kann ja hier nicht wissen, was wirklich erwartet wird">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
...denn das ergibt sich erst im Aufrufkontext; man denke z.B. an rvalue/lvalue-Probleme und temporaries, und das alles noch mit constness gemischt. Auf weia
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
<node CREATED="1684196742980" ID="ID_431433027" MODIFIED="1684196758118" TEXT="aber ist „erwartet“ wirklich die richtige Frage?"/>
|
||||
<node CREATED="1684196760602" ID="ID_1448595579" MODIFIED="1684196783658" TEXT="ersatzweise: man möchte beide Datentröme mischen"/>
|
||||
<node CREATED="1684196867369" ID="ID_672540161" MODIFIED="1684196902035" TEXT="demnach ⟹ auch hier der Ergebnis-Typ — ggfs. noch ohne Referenz"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1684199691017" ID="ID_791332898" MODIFIED="1684199727372" TEXT="was die Itertools bisher machen ist eindeutig falsch">
|
||||
<arrowlink COLOR="#ac0677" DESTINATION="ID_1944182984" ENDARROW="Default" ENDINCLINATION="-11;-31;" ID="Arrow_ID_570862373" STARTARROW="None" STARTINCLINATION="-171;9;"/>
|
||||
<icon BUILTIN="yes"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1684195781941" ID="ID_1944182984" MODIFIED="1684199719324" TEXT="Assertion deckt eine Inkonsistenz in den Itertools auf">
|
||||
<linktarget COLOR="#ac0677" DESTINATION="ID_1944182984" ENDARROW="Default" ENDINCLINATION="-11;-31;" ID="Arrow_ID_570862373" SOURCE="ID_791332898" STARTARROW="None" STARTINCLINATION="-171;9;"/>
|
||||
<icon BUILTIN="broken-line"/>
|
||||
<node CREATED="1684196920084" ID="ID_584323645" MODIFIED="1684196955699" TEXT="die Semantik der eingebetteten Typ-Bindings ist nicht klar">
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
<node CREATED="1684196960688" ID="ID_1270509122" MODIFIED="1684196979224" TEXT="ich hab mich da so »pragmatisch reingewurschtelt« in das Thema"/>
|
||||
<node CREATED="1684196988795" ID="ID_1470485019" MODIFIED="1684197028434" TEXT="Vorlage war die STL, aber ich hatte nicht das Standing, um die STL wirklich zu verstehen"/>
|
||||
<node CREATED="1684197029232" ID="ID_1741813636" MODIFIED="1684197154710" TEXT="mehr noch: ich wollte (und will) mich von der STL abgrenzen">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
Und zwar erscheint mir die STL zugleich als zu komplex und zu offen; sie verleitet zu einem Low-level-Geknobel. Genau deshalb habe ich die gesamte Iteratoren- und Konzept-Hierarchie der STL beiseite geschoben, und ein »Lumiera Forward Iterator«-Concept neu definiert.
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
<icon BUILTIN="yes"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1684197651402" ID="ID_1881371672" MODIFIED="1684198037445" TEXT="das ist ein berechtigter Ansatz">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
Denn ganz bewußt habe ich es abgelehnt, mit Lumiera ein universelles Framework zu schaffen (wiewohl eine Tendenz dorthin nicht zu verleugnen ist). Vielmehr geht es mit allen Konventionen und Definitionen um eine <b>Gründung</b>, also darum, einen <i>Raum zu schaffen,</i> in dem sich etwas Neues von einem wohl bestimmten Charakter entwickeln kann. Ich richte mich also nicht nach <i>dem Vorhandenen</i> und ich muß nicht <i>dem Vorhandenen in allen seinen Weiterungen und Verzweigungen entsprechen.</i>  Diese Haltung entspricht jedoch auch meinem Charakter: meine Fähigkeiten zum Erfassen und Sortieren vorgegebener Normen und Gepflogenheiten waren (und sind) gering, wenn ich mich auf einen solchen Anspruch einlasse, stehe ich schnell kräftemäßig mit dem Rücken zur Wand. Anders die meisten meiner Kollegen, die blühen da gradezu auf.
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
|
||||
<icon BUILTIN="yes"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1684197155852" ID="ID_400106521" MODIFIED="1684197165964" TEXT="hier besteht ein Zielkonflikt">
|
||||
<icon BUILTIN="clanbomber"/>
|
||||
<node CREATED="1684197167674" ID="ID_1605281324" MODIFIED="1684197185116" TEXT="„value“ ist nicht klar">
|
||||
<node CREATED="1684197187416" ID="ID_1389861872" MODIFIED="1684197193579" TEXT="kann heißen: Ergebnis"/>
|
||||
<node CREATED="1684197193975" ID="ID_1959860874" MODIFIED="1684197219945" TEXT="kann auch heißen: der Basistyp (als rvalue)"/>
|
||||
</node>
|
||||
<node CREATED="1684197514402" ID="ID_1792502182" MODIFIED="1684197623183">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
der <i>Implementator</i> möchte mit den Typedefs die Signaturen aufbauen
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
<node CREATED="1684197535865" ID="ID_809112903" MODIFIED="1684197616452">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
der <i>Nutzer</i> möchte wissen, wie er mit Resultaten umgehen kann
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1684197640002" ID="ID_1847921817" MODIFIED="1684199328264" TEXT="Bezugname auf die STL">
|
||||
<icon BUILTIN="idea"/>
|
||||
<node CREATED="1684198966392" ID="ID_449397496" LINK="https://en.cppreference.com/w/cpp/named_req/Container" MODIFIED="1684199002450" TEXT="C++ named requirement: »Container«">
|
||||
<icon BUILTIN="info"/>
|
||||
</node>
|
||||
<node CREATED="1684199007763" ID="ID_1119161771" MODIFIED="1684199048138" TEXT="demnach baut das Schema auf einem Modell auf: Container enthält »values«"/>
|
||||
<node CREATED="1684199056069" ID="ID_1539617529" MODIFIED="1684199087165" TEXT="⟹ value_type ist „das was im Container liegt“"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1684199284567" ID="ID_156863476" MODIFIED="1684199335480" TEXT="Übertragung auf das Konzept »Lumiera Forward Iterator«">
|
||||
<icon BUILTIN="yes"/>
|
||||
<node CREATED="1684199406472" ID="ID_735062401" MODIFIED="1684199434386" TEXT="»value« ist das, was der Iterator vorrübergehend zugänglich macht">
|
||||
<icon BUILTIN="forward"/>
|
||||
</node>
|
||||
<node CREATED="1684199485120" ID="ID_741685332" MODIFIED="1684199519934" TEXT="»reference« ist ein referenzierender, nicht kopierender Zugriff darauf">
|
||||
<icon BUILTIN="forward"/>
|
||||
</node>
|
||||
<node CREATED="1684199543918" ID="ID_780125561" MODIFIED="1684199621884" TEXT="»pointer« ist die Übersetzung der »reference« in das Konzept »language pointer«">
|
||||
<icon BUILTIN="forward"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1682868258074" ID="ID_1743148920" MODIFIED="1682898174253" TEXT="Job aus Ticket erstellen und ausführbar machen">
|
||||
|
|
@ -69941,7 +70444,7 @@
|
|||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node COLOR="#5b280f" CREATED="1682627654491" ID="ID_1371147624" MODIFIED="1683722703271" TEXT="Marker definieren und sichtbar machen">
|
||||
<node COLOR="#5b280f" CREATED="1682627654491" FOLDED="true" ID="ID_1371147624" MODIFIED="1683722703271" TEXT="Marker definieren und sichtbar machen">
|
||||
<linktarget COLOR="#48417c" DESTINATION="ID_1371147624" ENDARROW="Default" ENDINCLINATION="-48;56;" ID="Arrow_ID_1753796050" SOURCE="ID_1110039315" STARTARROW="None" STARTINCLINATION="-284;-8;"/>
|
||||
<icon BUILTIN="button_cancel"/>
|
||||
<node COLOR="#435e98" CREATED="1682641810117" ID="ID_596391717" MODIFIED="1683722703271" TEXT="Problem: wie integieren?">
|
||||
|
|
@ -70048,7 +70551,7 @@
|
|||
<icon BUILTIN="idea"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1682205189643" ID="ID_897564380" MODIFIED="1683722703272" TEXT="Problem: Umbau in JobTicket selber blockt">
|
||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1682205189643" FOLDED="true" ID="ID_897564380" MODIFIED="1683722703272" TEXT="Problem: Umbau in JobTicket selber blockt">
|
||||
<icon BUILTIN="stop-sign"/>
|
||||
<node CREATED="1682205214637" ID="ID_451342844" MODIFIED="1682205353004" TEXT="kann nicht klar sehen, wie ich einen Marker im MockJob hinterlegen kann">
|
||||
<icon BUILTIN="smiley-angry"/>
|
||||
|
|
@ -70645,6 +71148,9 @@
|
|||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1683838161297" ID="ID_751342695" MODIFIED="1683838171328" TEXT="nested Specs in prerequisites umsetzen">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1682385895644" ID="ID_89969390" MODIFIED="1683722539629" TEXT="Verifikation im Test unterstützen">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
|
|
@ -70988,12 +71494,21 @@
|
|||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1683836197004" ID="ID_885444410" MODIFIED="1683836585531" TEXT="getPrerequisites">
|
||||
<linktarget COLOR="#eb64a1" DESTINATION="ID_885444410" ENDARROW="Default" ENDINCLINATION="338;-2145;" ID="Arrow_ID_1011579074" SOURCE="ID_993440863" STARTARROW="None" STARTINCLINATION="-152;9;"/>
|
||||
<linktarget COLOR="#eb64a1" DESTINATION="ID_885444410" ENDARROW="Default" ENDINCLINATION="213;-1966;" ID="Arrow_ID_1011579074" SOURCE="ID_993440863" STARTARROW="None" STARTINCLINATION="-384;23;"/>
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node CREATED="1683836203943" ID="ID_1933667832" MODIFIED="1683836212926" TEXT="liefert einen Iterator über JobTicket&"/>
|
||||
<node CREATED="1683836213973" ID="ID_571829359" MODIFIED="1683836218117" TEXT="nur eine Ebene tief"/>
|
||||
<node CREATED="1683836226928" ID="ID_580321819" MODIFIED="1683836458419" TEXT="für RenderDrive">
|
||||
<arrowlink COLOR="#fed5d7" DESTINATION="ID_1928295133" ENDARROW="Default" ENDINCLINATION="-463;400;" ID="Arrow_ID_1972838231" STARTARROW="None" STARTINCLINATION="-412;-64;"/>
|
||||
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1683845331533" ID="ID_113782501" MODIFIED="1683845345276" TEXT="ist es wirklich das was ich dafür brauche?">
|
||||
<icon BUILTIN="help"/>
|
||||
<node CREATED="1683845356009" ID="ID_682794726" MODIFIED="1683845392833" TEXT="muß Dependency-Paare erzeugen für den Scheduler"/>
|
||||
<node CREATED="1683845394796" ID="ID_1093414619" MODIFIED="1683845414877" TEXT="d.h. brauche stets das abhängige Ticket ebenfalls"/>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1683897360871" ID="ID_726660737" MODIFIED="1683897457247" TEXT="schon mal im Test die Möglichkeiten ausloten">
|
||||
<arrowlink COLOR="#dd399a" DESTINATION="ID_1523682954" ENDARROW="Default" ENDINCLINATION="-371;858;" ID="Arrow_ID_1803678506" STARTARROW="None" STARTINCLINATION="267;-16;"/>
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1681167579899" ID="ID_428564529" MODIFIED="1681167585941" TEXT="createJobFor(FrameCoord)"/>
|
||||
|
|
|
|||
Loading…
Reference in a new issue