Invocation: consider how to verify connectivity
An essential goal still to reach is a verification of the `NodeBuilder`'s products Relying on the low-level diagnostic facilities pioneered last days, it should now be possible to define simple and readable connectivity-clauses, allowing to build some connected nodes and then verify the connections explicitly.
This commit is contained in:
parent
fa720ae975
commit
d5a47bf3e4
4 changed files with 139 additions and 69 deletions
|
|
@ -45,6 +45,7 @@ namespace engine {
|
|||
using util::isnil;
|
||||
using util::unConst;
|
||||
using util::contains;
|
||||
using util::isSameObject;
|
||||
using boost::hash_combine;
|
||||
|
||||
namespace {// Details: parsing, registration and symbol table for node spec data...
|
||||
|
|
@ -495,5 +496,22 @@ namespace engine {
|
|||
return watch (leadPorts[leadIdx]);
|
||||
}
|
||||
|
||||
bool
|
||||
PortDiagnostic::verify_connected (uint input, Port& tarPort)
|
||||
{
|
||||
auto& leadPorts = srcPorts();
|
||||
return input < leadPorts.size()
|
||||
and isSameObject (leadPorts[input].get(), tarPort);
|
||||
}
|
||||
|
||||
bool
|
||||
PortDiagnostic::verify_connected (Port& tarPort)
|
||||
{
|
||||
for (Port& port : srcPorts())
|
||||
if (isSameObject (port, tarPort))
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
}} // namespace steam::engine
|
||||
|
|
|
|||
|
|
@ -321,6 +321,9 @@ namespace engine {
|
|||
HashVal getProcHash(); ///< calculate an unique, stable and reproducible hash-key to identify the associated operation
|
||||
|
||||
PortDiagnostic watchLead(uint leadIdx);
|
||||
|
||||
bool verify_connected (uint input, Port&);
|
||||
bool verify_connected (Port&);
|
||||
};
|
||||
|
||||
inline PortDiagnostic
|
||||
|
|
|
|||
|
|
@ -48,7 +48,7 @@ namespace test {
|
|||
run (Arg)
|
||||
{
|
||||
verify_ID_specification();
|
||||
verify_ID_properties();
|
||||
verify_ID_connectivity();
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -62,22 +62,22 @@ namespace test {
|
|||
auto& p2 = ProcID::describe("U:N2","+(a1,a2)");
|
||||
auto& p3 = ProcID::describe("O:N3","(in/3)(o1,o2/2)");
|
||||
|
||||
CHECK (p1.genNodeName() == "N1"_expect );
|
||||
CHECK (p1.genNodeSymbol() == "N1"_expect );
|
||||
CHECK (p1.genNodeDomain() == ""_expect );
|
||||
CHECK (p1.genNodeName() == "N1"_expect );
|
||||
CHECK (p1.genNodeSymbol() == "N1"_expect );
|
||||
CHECK (p1.genNodeDomain() == ""_expect );
|
||||
CHECK (p2.genNodeName() == "U:N2"_expect );
|
||||
CHECK (p2.genNodeSymbol() == "N2"_expect );
|
||||
CHECK (p2.genNodeDomain() == "U"_expect );
|
||||
CHECK (p2.genNodeSymbol() == "N2"_expect );
|
||||
CHECK (p2.genNodeDomain() == "U"_expect );
|
||||
CHECK (p3.genNodeName() == "O:N3"_expect );
|
||||
CHECK (p3.genNodeSymbol() == "N3"_expect );
|
||||
CHECK (p3.genNodeDomain() == "O"_expect );
|
||||
CHECK (p3.genNodeSymbol() == "N3"_expect );
|
||||
CHECK (p3.genNodeDomain() == "O"_expect );
|
||||
|
||||
CHECK (p1.genProcName() == "N1"_expect );
|
||||
CHECK (p1.genQualifier() == ""_expect );
|
||||
CHECK (p1.genProcName() == "N1"_expect );
|
||||
CHECK (p1.genQualifier() == ""_expect );
|
||||
CHECK (p2.genProcName() == "N2.+"_expect ); // domain omitted, qualifier joined with '.'
|
||||
CHECK (p2.genQualifier() == ".+"_expect ); // qualifier includes leading '.'
|
||||
CHECK (p3.genProcName() == "N3"_expect );
|
||||
CHECK (p2.genProcSpec() == "U:N2.+(a1,a2)"_expect );
|
||||
CHECK (p2.genQualifier() == ".+"_expect ); // qualifier includes leading '.'
|
||||
CHECK (p3.genProcName() == "N3"_expect );
|
||||
CHECK (p2.genProcSpec() == "U:N2.+(a1,a2)"_expect );
|
||||
CHECK (p3.genProcSpec() == "O:N3(in/3)(o1,o2/2)"_expect );
|
||||
|
||||
ProcID::ArgModel arg1 = p1.genArgModel();
|
||||
|
|
@ -113,7 +113,7 @@ namespace test {
|
|||
* @todo WIP 2/25 🔁 define ⟶ 🔁 implement
|
||||
*/
|
||||
void
|
||||
verify_ID_properties()
|
||||
verify_ID_connectivity()
|
||||
{
|
||||
// This operation emulates a data source
|
||||
auto src_opA = [](int param, int* res) { *res = param; };
|
||||
|
|
@ -176,43 +176,57 @@ namespace test {
|
|||
.completePort()
|
||||
.build()};
|
||||
|
||||
///////////////////////////////////////////////////////TODO WIP
|
||||
SHOW_EXPR(watch(nA).getNodeName())
|
||||
SHOW_EXPR(watch(nA).getNodeSpec())
|
||||
SHOW_EXPR(watch(nA).isSrc())
|
||||
SHOW_EXPR(watch(nA).ports().size())
|
||||
SHOW_EXPR(watch(nA).watchPort(0).getProcName())
|
||||
SHOW_EXPR(watch(nA).watchPort(0).getProcSpec())
|
||||
SHOW_EXPR(watch(nA).watchPort(1).getProcSpec())
|
||||
// Drill down into each node...
|
||||
// investigate spec and precursor connectivity
|
||||
CHECK (watch(nA).getNodeName() == "srcA"_expect );
|
||||
CHECK (watch(nA).getNodeSpec() == "srcA-◎"_expect ); // includes shortened rendering of lead nodes
|
||||
CHECK (watch(nA).isSrc() == true ); // ...but this one has no leads ==> it is a source
|
||||
CHECK (watch(nA).ports().size() == 2 );
|
||||
CHECK (watch(nA).watchPort(0).getProcName() == "srcA.a"_expect );
|
||||
CHECK (watch(nA).watchPort(0).getProcSpec() == "srcA.a(int)"_expect );
|
||||
CHECK (watch(nA).watchPort(1).getProcSpec() == "srcA.b(int)"_expect );
|
||||
|
||||
VERIFY_FAIL ("Port-idx 2 >= 2 (available Ports)"
|
||||
,watch(nA).watchPort(2));
|
||||
|
||||
SHOW_EXPR(watch(nB).getNodeSpec())
|
||||
SHOW_EXPR(watch(nB).isSrc())
|
||||
SHOW_EXPR(watch(nB).ports().size())
|
||||
SHOW_EXPR(watch(nB).watchPort(0).getProcSpec())
|
||||
SHOW_EXPR(watch(nB).watchPort(1).getProcSpec())
|
||||
SHOW_EXPR(watch(nB).watchPort(2).getProcSpec())
|
||||
|
||||
SHOW_EXPR(watch(nM).getNodeName())
|
||||
SHOW_EXPR(watch(nM).getNodeSpec())
|
||||
SHOW_EXPR(watch(nM).ports().size())
|
||||
SHOW_EXPR(watch(nM).watchPort(0).getProcName())
|
||||
SHOW_EXPR(watch(nM).watchPort(1).getProcName())
|
||||
SHOW_EXPR(watch(nM).watchPort(2).getProcName())
|
||||
SHOW_EXPR(watch(nM).watchPort(2).getProcSpec())
|
||||
SHOW_EXPR(watch(nM).watchPort(0).srcPorts().size())
|
||||
SHOW_EXPR(watch(nM).watchPort(0).watchLead(0).getProcName())
|
||||
SHOW_EXPR(watch(nM).watchPort(0).watchLead(1).getProcName())
|
||||
SHOW_EXPR(watch(nM).watchPort(1).srcPorts().size())
|
||||
SHOW_EXPR(watch(nM).watchPort(1).watchLead(0).getProcName())
|
||||
SHOW_EXPR(watch(nM).watchPort(1).watchLead(1).getProcName())
|
||||
SHOW_EXPR(watch(nM).watchPort(2).srcPorts().size())
|
||||
SHOW_EXPR(watch(nM).watchPort(2).watchLead(0).getProcName())
|
||||
SHOW_EXPR(watch(nM).watchPort(2).watchLead(1).getProcName())
|
||||
SHOW_EXPR(watch(nM).watchPort(2).watchLead(1).getProcSpec())
|
||||
SHOW_EXPR(watch(nM).watchPort(2).watchLead(1).isSrc())
|
||||
SHOW_EXPR(watch(nM).watchPort(2).watchLead(1).srcPorts().size())
|
||||
, watch(nA).watchPort(2) );
|
||||
|
||||
CHECK (watch(nB).getNodeSpec() == "srcB-◎"_expect );
|
||||
CHECK (watch(nB).isSrc() == true );
|
||||
CHECK (watch(nB).ports().size() == 3 );
|
||||
CHECK (watch(nB).watchPort(0).getProcSpec() == "srcB.a(ulong)"_expect);
|
||||
CHECK (watch(nB).watchPort(1).getProcSpec() == "srcB.b(ulong)"_expect);
|
||||
CHECK (watch(nB).watchPort(2).getProcSpec() == "srcB.c(ulong)"_expect);
|
||||
|
||||
CHECK (watch(nM).getNodeName() == "fade"_expect );
|
||||
CHECK (watch(nM).getNodeSpec() == "fade┉┉{srcA, srcB}"_expect ); // the spec shows the set of source nodes
|
||||
CHECK (watch(nM).ports().size() == 3 );
|
||||
CHECK (watch(nM).watchPort(0).getProcName() == "fade.A_mix"_expect );
|
||||
CHECK (watch(nM).watchPort(1).getProcName() == "fade.B_mix"_expect );
|
||||
CHECK (watch(nM).watchPort(2).getProcName() == "fade.C_mix"_expect );
|
||||
CHECK (watch(nM).watchPort(2).getProcSpec() == "fade.C_mix(int,ulong)(uint64_t)"_expect );
|
||||
CHECK (watch(nM).watchPort(0).srcPorts().size() == 2 );
|
||||
CHECK (watch(nM).watchPort(0).watchLead(0).getProcName() == "srcA.a"_expect ); // watchLead(#) navigates to source port
|
||||
CHECK (watch(nM).watchPort(0).watchLead(1).getProcName() == "srcB.a"_expect );
|
||||
CHECK (watch(nM).watchPort(1).srcPorts().size() == 2 );
|
||||
CHECK (watch(nM).watchPort(1).watchLead(0).getProcName() == "srcA.b"_expect );
|
||||
CHECK (watch(nM).watchPort(1).watchLead(1).getProcName() == "srcB.b"_expect );
|
||||
CHECK (watch(nM).watchPort(2).srcPorts().size() == 2 );
|
||||
CHECK (watch(nM).watchPort(2).watchLead(0).getProcName() == "srcA.b"_expect );
|
||||
CHECK (watch(nM).watchPort(2).watchLead(1).getProcName() == "srcB.c"_expect );
|
||||
CHECK (watch(nM).watchPort(2).watchLead(1).getProcSpec() == "srcB.c(ulong)"_expect);
|
||||
CHECK (watch(nM).watchPort(2).watchLead(1).isSrc() == true ); // the lead port itself is a source
|
||||
CHECK (watch(nM).watchPort(2).watchLead(1).srcPorts().size() == 0 );
|
||||
|
||||
// Helper predicate to verify connectedness to a specific Port given by reference
|
||||
CHECK (watch(nM).watchPort(2).verify_connected( watch(nA).ports()[0]) == false );
|
||||
CHECK (watch(nM).watchPort(2).verify_connected( watch(nA).ports()[1]) == true ); // Node-nM.port#2 is somehow connected to Node-nA.port#1
|
||||
CHECK (watch(nM).watchPort(2).verify_connected( watch(nB).ports()[0]) == false );
|
||||
CHECK (watch(nM).watchPort(2).verify_connected( watch(nB).ports()[1]) == false );
|
||||
CHECK (watch(nM).watchPort(2).verify_connected( watch(nB).ports()[2]) == true );
|
||||
CHECK (watch(nM).watchPort(2).verify_connected(0, watch(nA).ports()[1]) == true ); // Node-nM.port#2 connects via source#0 to Node-nA.port#1
|
||||
CHECK (watch(nM).watchPort(2).verify_connected(1, watch(nB).ports()[2]) == true );
|
||||
CHECK (watch(nM).watchPort(2).verify_connected(0, watch(nB).ports()[2]) == false );
|
||||
CHECK (watch(nM).watchPort(2).verify_connected(1, watch(nA).ports()[1]) == false ); // Node-nM.port#2 doesn't connect via source#1 to Node-nA.port#1
|
||||
|
||||
///////////////////////////////////////////////////////TODO WIP
|
||||
UNIMPLEMENTED ("verify connectivity");
|
||||
}
|
||||
|
|
|
|||
|
|
@ -101858,7 +101858,7 @@ StM_bind(Builder<R1> b1, Extension<R1,R2> extension)
|
|||
</node>
|
||||
<node COLOR="#435e98" CREATED="1730424032542" ID="ID_311029412" MODIFIED="1736112671179" TEXT="invoke(qual, FUN)">
|
||||
<node CREATED="1730425989177" ID="ID_1347337581" MODIFIED="1730426088900" TEXT="der qualifier markiert Inhaltliche Eigenschaften">
|
||||
<linktarget COLOR="#4e40b0" DESTINATION="ID_1347337581" ENDARROW="Default" ENDINCLINATION="-14;74;" ID="Arrow_ID_507591051" SOURCE="ID_162351868" STARTARROW="None" STARTINCLINATION="-4;-31;"/>
|
||||
<linktarget COLOR="#4e40b0" DESTINATION="ID_1347337581" ENDARROW="Default" ENDINCLINATION="-40;101;" ID="Arrow_ID_507591051" SOURCE="ID_162351868" STARTARROW="None" STARTINCLINATION="-43;-150;"/>
|
||||
<node CREATED="1730426034938" ID="ID_1707661872" MODIFIED="1730426047611" TEXT="...um zu erkennen, wenn der Cache invalidiert wird"/>
|
||||
<node CREATED="1730426048856" ID="ID_875923873" MODIFIED="1730426056546" TEXT="und auch als Verifikation für Tests"/>
|
||||
<node CREATED="1730425828741" ID="ID_1472232983" MODIFIED="1730426454293" TEXT="auf Level-2 lediglich ein Qualifier-Literal notwendig">
|
||||
|
|
@ -101939,19 +101939,30 @@ StM_bind(Builder<R1> b1, Extension<R1,R2> extension)
|
|||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1736262340508" ID="ID_1540010113" MODIFIED="1736262527878" TEXT="Verdrahtung der Leads verifizieren">
|
||||
<linktarget COLOR="#d10172" DESTINATION="ID_1540010113" ENDARROW="Default" ENDINCLINATION="-473;38;" ID="Arrow_ID_1593223212" SOURCE="ID_1980325374" STARTARROW="None" STARTINCLINATION="-242;0;"/>
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node CREATED="1736267197593" ID="ID_782732599" MODIFIED="1736267203116" TEXT="watch(Node)">
|
||||
<node CREATED="1736267212093" ID="ID_175731942" MODIFIED="1736605536267" TEXT="verify_connected(lead#, Node&)"/>
|
||||
<node CREATED="1736267281885" ID="ID_1401668777" MODIFIED="1736605547858" TEXT="verify_connectedPort(port#, input#, Node&)">
|
||||
<arrowlink COLOR="#ffe4bc" DESTINATION="ID_1514661165" ENDARROW="Default" ENDINCLINATION="100;-5;" ID="Arrow_ID_792010004" STARTARROW="None" STARTINCLINATION="77;5;"/>
|
||||
<node CREATED="1736267197593" ID="ID_782732599" MODIFIED="1738696649951" TEXT="isConnected(Node)">
|
||||
<linktarget COLOR="#377ccf" DESTINATION="ID_782732599" ENDARROW="Default" ENDINCLINATION="118;225;" ID="Arrow_ID_1337974921" SOURCE="ID_1426452060" STARTARROW="None" STARTINCLINATION="259;25;"/>
|
||||
<node CREATED="1736267212093" ID="ID_175731942" MODIFIED="1738687613351" TEXT=".to(Node)">
|
||||
<node CREATED="1738687232005" ID="ID_296436750" MODIFIED="1738687616103" TEXT=".asLead(#)"/>
|
||||
</node>
|
||||
<node CREATED="1738687304418" ID="ID_1202896757" MODIFIED="1738687610535" TEXT=".port(#)">
|
||||
<node CREATED="1738687403447" ID="ID_257883570" MODIFIED="1738687618686" TEXT=".toLead(#)"/>
|
||||
<node CREATED="1738687590798" ID="ID_103314751" MODIFIED="1738687622033" TEXT=".asInput(#)">
|
||||
<node CREATED="1736267281885" ID="ID_1401668777" MODIFIED="1738687797317" TEXT=".to(Port)">
|
||||
<arrowlink COLOR="#ffe4bc" DESTINATION="ID_1514661165" ENDARROW="Default" ENDINCLINATION="148;-7;" ID="Arrow_ID_792010004" STARTARROW="None" STARTINCLINATION="73;18;"/>
|
||||
</node>
|
||||
<node CREATED="1738687785177" ID="ID_961914268" MODIFIED="1738687790183" TEXT="to(Node)"/>
|
||||
<node CREATED="1738687403447" ID="ID_1094177702" MODIFIED="1738687618686" TEXT=".toLead(#)"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1738691860188" ID="ID_1515900791" MODIFIED="1738691874771" TEXT="Hilfskonstrukt _ConCheck"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1728769243429" ID="ID_1535113263" MODIFIED="1728769249651" TEXT="für einen Port...">
|
||||
<node COLOR="#338800" CREATED="1728769266173" ID="ID_664281474" MODIFIED="1738645454119" TEXT="die Identität der gebundenen Funktion feststellen">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node CREATED="1730425962531" ID="ID_162351868" LINK="#ID_1465368594" MODIFIED="1730426145795" TEXT="dies ist eine semantische Identität">
|
||||
<arrowlink COLOR="#4e40b0" DESTINATION="ID_1347337581" ENDARROW="Default" ENDINCLINATION="-14;74;" ID="Arrow_ID_507591051" STARTARROW="None" STARTINCLINATION="-4;-31;"/>
|
||||
<arrowlink COLOR="#4e40b0" DESTINATION="ID_1347337581" ENDARROW="Default" ENDINCLINATION="-40;101;" ID="Arrow_ID_507591051" STARTARROW="None" STARTINCLINATION="-43;-150;"/>
|
||||
</node>
|
||||
<node COLOR="#534398" CREATED="1738645368589" ID="ID_1124183685" MODIFIED="1738645445662" TEXT="man kann also nur einen Spec-String wieder zurückliefern">
|
||||
<font NAME="SansSerif" SIZE="11"/>
|
||||
|
|
@ -101966,10 +101977,10 @@ StM_bind(Builder<R1> b1, Extension<R1,R2> extension)
|
|||
<linktarget COLOR="#d10172" DESTINATION="ID_1424762602" ENDARROW="Default" ENDINCLINATION="-390;24;" ID="Arrow_ID_329256820" SOURCE="ID_1980325374" STARTARROW="None" STARTINCLINATION="-202;0;"/>
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node CREATED="1736267134171" ID="ID_145839768" MODIFIED="1736267142436" TEXT="watch(Port)">
|
||||
<node CREATED="1736267174444" ID="ID_1548126776" MODIFIED="1736267185084" TEXT="andocken per Template-Spezialisierung"/>
|
||||
<node CREATED="1736267174444" ID="ID_1548126776" MODIFIED="1738691264629" TEXT="»backdoor« ⟶ srcPorts()"/>
|
||||
<node CREATED="1736267024072" ID="ID_1514661165" MODIFIED="1736605602244" TEXT="verify_connected(input#, Port&)">
|
||||
<linktarget COLOR="#ffe4bc" DESTINATION="ID_1514661165" ENDARROW="Default" ENDINCLINATION="100;-5;" ID="Arrow_ID_792010004" SOURCE="ID_1401668777" STARTARROW="None" STARTINCLINATION="77;5;"/>
|
||||
<linktarget COLOR="#fdf9be" DESTINATION="ID_1514661165" ENDARROW="Default" ENDINCLINATION="-451;40;" ID="Arrow_ID_1746815334" SOURCE="ID_1677497952" STARTARROW="None" STARTINCLINATION="-358;-43;"/>
|
||||
<linktarget COLOR="#ffe4bc" DESTINATION="ID_1514661165" ENDARROW="Default" ENDINCLINATION="148;-7;" ID="Arrow_ID_792010004" SOURCE="ID_1401668777" STARTARROW="None" STARTINCLINATION="73;18;"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
|
|
@ -102715,7 +102726,7 @@ StM_bind(Builder<R1> b1, Extension<R1,R2> extension)
|
|||
<arrowlink COLOR="#4431d1" DESTINATION="ID_817734322" ENDARROW="Default" ENDINCLINATION="-13;-173;" ID="Arrow_ID_507508399" STARTARROW="None" STARTINCLINATION="33;335;"/>
|
||||
<icon BUILTIN="yes"/>
|
||||
<node COLOR="#338800" CREATED="1736266763928" ID="ID_1486436213" MODIFIED="1738644857327" TEXT="getInput(n) ⟼ optional<PortRef>">
|
||||
<linktarget COLOR="#294fe5" DESTINATION="ID_1486436213" ENDARROW="None" ENDINCLINATION="-752;56;" ID="Arrow_ID_351949496" SOURCE="ID_1002392068" STARTARROW="None" STARTINCLINATION="-733;0;"/>
|
||||
<linktarget COLOR="#294fe5" DESTINATION="ID_1486436213" ENDARROW="Default" ENDINCLINATION="-752;56;" ID="Arrow_ID_351949496" SOURCE="ID_1002392068" STARTARROW="None" STARTINCLINATION="-733;0;"/>
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1736266878204" ID="ID_767157537" MODIFIED="1738644819733" TEXT="bietet auch ein watch(Port)-API">
|
||||
|
|
@ -105236,8 +105247,9 @@ StM_bind(Builder<R1> b1, Extension<R1,R2> extension)
|
|||
<icon BUILTIN="idea"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1730598062942" ID="ID_1946552232" MODIFIED="1730598070217" TEXT="Ansatz für Implementierung schaffen">
|
||||
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1730598062942" ID="ID_1946552232" MODIFIED="1738695925789" TEXT="Ansatz für Implementierung schaffen">
|
||||
<icon BUILTIN="pencil"/>
|
||||
<icon BUILTIN="hourglass"/>
|
||||
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1730598076819" ID="ID_1393056894" LINK="https://issues.lumiera.org/ticket/1376" MODIFIED="1730598144757" TEXT="Optimierung später �� #1376 maintain render node storage size">
|
||||
<icon BUILTIN="yes"/>
|
||||
</node>
|
||||
|
|
@ -105384,8 +105396,10 @@ StM_bind(Builder<R1> b1, Extension<R1,R2> extension)
|
|||
</node>
|
||||
<node CREATED="1730598486057" ID="ID_75268371" MODIFIED="1730598499661" TEXT="wird als direkte Referenz in das Port-Interface gelegt">
|
||||
<icon BUILTIN="idea"/>
|
||||
<node CREATED="1730598503327" ID="ID_972746982" MODIFIED="1730598511073" TEXT="damit kein Code-Bloat möglich"/>
|
||||
<node BACKGROUND_COLOR="#f8f1cb" COLOR="#a50125" CREATED="1730598512266" ID="ID_939010483" MODIFIED="1730598526116" TEXT="muß komplett von der Weaving-Pattern-Impl entkoppelt werden">
|
||||
<node COLOR="#435e98" CREATED="1730598503327" ID="ID_972746982" MODIFIED="1738695915222" TEXT="damit kein Code-Bloat möglich">
|
||||
<icon BUILTIN="idea"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1730598512266" ID="ID_939010483" MODIFIED="1738695919297" TEXT="muß komplett von der Weaving-Pattern-Impl entkoppelt werden">
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1730598527660" ID="ID_114450698" MODIFIED="1730598535314" TEXT="Initialisierung per Konstruktor">
|
||||
|
|
@ -106042,7 +106056,7 @@ StM_bind(Builder<R1> b1, Extension<R1,R2> extension)
|
|||
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1736453699380" ID="ID_809402120" MODIFIED="1738641786651" TEXT="Konfigurations-API via Builder integrieren">
|
||||
<icon BUILTIN="hourglass"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1736453783056" ID="ID_186513914" MODIFIED="1738518068915" TEXT="Schema für dynamischen Dispatch">
|
||||
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1736453783056" FOLDED="true" ID="ID_186513914" MODIFIED="1738518068915" TEXT="Schema für dynamischen Dispatch">
|
||||
<arrowlink COLOR="#944855" DESTINATION="ID_1885873000" ENDARROW="Default" ENDINCLINATION="-553;27;" ID="Arrow_ID_1155704766" STARTARROW="None" STARTINCLINATION="-17;64;"/>
|
||||
<icon BUILTIN="hourglass"/>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1736453849801" ID="ID_708185484" MODIFIED="1736453867637" TEXT="Definition und Einbindung von Zusatz-Funktionen">
|
||||
|
|
@ -106503,18 +106517,39 @@ StM_bind(Builder<R1> b1, Extension<R1,R2> extension)
|
|||
<node COLOR="#435e98" CREATED="1738518236792" ID="ID_856942777" MODIFIED="1738518251177" TEXT="Repetitionen ausfalten"/>
|
||||
<node COLOR="#435e98" CREATED="1738518243986" ID="ID_246682675" MODIFIED="1738518251177" TEXT="Arität ermitteln"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1736610789680" ID="ID_466994748" LINK="#ID_25381362" MODIFIED="1736611024747" TEXT="extended Attributes auswerten">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1736610789680" ID="ID_466994748" LINK="#ID_25381362" MODIFIED="1738695728457" TEXT="extended Attributes auswerten">
|
||||
<icon BUILTIN="hourglass"/>
|
||||
<node COLOR="#435e98" CREATED="1738695743450" ID="ID_1968117372" LINK="#ID_1885873000" MODIFIED="1738695847168" TEXT="vorerst vertagt...">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
...wird eigentlich erst für die Hash / Cache-Key-Berechnung relevant; <i>dann aber</i> wären erst einige kniffelige technische Probleme zu lösen, die ich im Moment nicht recht bestimmen kann...
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
<font NAME="SansSerif" SIZE="11"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1736610803062" ID="ID_1920110927" LINK="#ID_238141567" MODIFIED="1736611024746" TEXT="Node connectivity">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1738696062413" ID="ID_1426452060" MODIFIED="1738696649951" TEXT="Verifikations-DSL aufbauen">
|
||||
<arrowlink COLOR="#377ccf" DESTINATION="ID_782732599" ENDARROW="Default" ENDINCLINATION="118;225;" ID="Arrow_ID_1337974921" STARTARROW="None" STARTINCLINATION="259;25;"/>
|
||||
<icon BUILTIN="pencil"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1736610811589" ID="ID_745350162" LINK="#ID_238141567" MODIFIED="1736611024746" TEXT="Port connectivity">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node CREATED="1738696070912" ID="ID_553062903" MODIFIED="1738696077767" TEXT="im Test-Beispiel verifiziert"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1736610811589" ID="ID_745350162" LINK="#ID_238141567" MODIFIED="1738696045880" TEXT="Port connectivity">
|
||||
<icon BUILTIN="pencil"/>
|
||||
<node COLOR="#338800" CREATED="1738561050694" ID="ID_480573349" MODIFIED="1738561636218" TEXT="Zugriff via »Backdoor« auf die Predecessor-Ports">
|
||||
<arrowlink COLOR="#587793" DESTINATION="ID_866197683" ENDARROW="Default" ENDINCLINATION="140;240;" ID="Arrow_ID_1588669375" STARTARROW="None" STARTINCLINATION="462;-13;"/>
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1738696026895" ID="ID_168962421" MODIFIED="1738696097264" STYLE="fork" TEXT="Hilfsmethode für direkte Verifikation">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#f8f1cb" COLOR="#a50125" CREATED="1730486716299" ID="ID_95149323" MODIFIED="1730486959772" STYLE="fork" TEXT="Storage bedarf gesondert der Betrachtung">
|
||||
|
|
@ -107235,8 +107270,8 @@ StM_bind(Builder<R1> b1, Extension<R1,R2> extension)
|
|||
<node COLOR="#338800" CREATED="1736610838882" ID="ID_1153713265" LINK="#ID_1231919908" MODIFIED="1738518221120" TEXT="Argument-Listen">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1736610845136" ID="ID_1268032350" LINK="#ID_466994748" MODIFIED="1736611020836" TEXT="Qualifier / Attribute">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1736610845136" ID="ID_1268032350" LINK="#ID_466994748" MODIFIED="1738695723902" TEXT="Qualifier / Attribute">
|
||||
<icon BUILTIN="hourglass"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1736610750940" ID="ID_238141567" MODIFIED="1736611008867" TEXT="verify_ID_properties">
|
||||
|
|
|
|||
Loading…
Reference in a new issue