Invocation: now able to access predecessor-ports
...exploiting the ''backdoor access'' bypassing the VTable, as made possible by a common congruent storage layout. This is a first proof-of-concept, but also shows that the demo nodes in NodeMeta_test are wired as expected. What is needed now is to make this diagnostic access easier to invoke and more bullet-proof, by setting the proper Attribute bits directly in the `NodeBuilder`
This commit is contained in:
parent
bcdcb36615
commit
583b73bc62
6 changed files with 160 additions and 54 deletions
|
|
@ -130,17 +130,20 @@ namespace engine {
|
|||
|
||||
/* === symbolic descriptors === */
|
||||
|
||||
string genProcName();
|
||||
string genProcSpec(); ///< render a descriptor for the operation (without predecessors)
|
||||
string genQualifier();
|
||||
string genNodeName();
|
||||
string genNodeSymbol();
|
||||
string genNodeDomain();
|
||||
string genNodeSpec(Leads&);
|
||||
string genSrcSpec (Leads&); ///< transitively enumerate all unique source nodes
|
||||
string genProcName() const;
|
||||
string genProcSpec() const; ///< render a descriptor for the operation (without predecessors)
|
||||
string genQualifier() const;
|
||||
string genNodeName() const;
|
||||
string genNodeSymbol() const;
|
||||
string genNodeDomain() const;
|
||||
string genNodeSpec(Leads&) const;
|
||||
string genSrcSpec (Leads&) const; ///< transitively enumerate all unique source nodes
|
||||
|
||||
struct ArgModel;
|
||||
ArgModel genArgModel();
|
||||
ArgModel genArgModel() const;
|
||||
|
||||
bool hasManifoldPatt() const { return attrib_.manifold; }
|
||||
bool hasProxyPatt() const { return attrib_.isProxy; }
|
||||
|
||||
friend bool
|
||||
operator== (ProcID const& l, ProcID const& r)
|
||||
|
|
@ -185,7 +188,7 @@ namespace engine {
|
|||
: iArg{move (iarg)}
|
||||
, oArg{move (oarg)}
|
||||
{ }
|
||||
friend ArgModel ProcID::genArgModel();
|
||||
friend ArgModel ProcID::genArgModel() const;
|
||||
};
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -28,6 +28,10 @@
|
|||
#include "lib/parse.hpp"
|
||||
#include "lib/util.hpp"
|
||||
|
||||
// used for a »backdoor access« in PortDiagnostic::srcPorts
|
||||
#include "steam/engine/media-weaving-pattern.hpp"
|
||||
#include "steam/engine/param-weaving-pattern.hpp"
|
||||
|
||||
#include <boost/functional/hash.hpp> /////////////////////////////////////////////////////TICKET #1391 is boost-hash the proper tool for this task?
|
||||
#include <unordered_set>
|
||||
#include <set>
|
||||
|
|
@ -227,7 +231,7 @@ namespace engine {
|
|||
}
|
||||
|
||||
string
|
||||
ProcID::genProcName()
|
||||
ProcID::genProcName() const
|
||||
{
|
||||
std::ostringstream buffer;
|
||||
buffer << genNodeSymbol()
|
||||
|
|
@ -236,7 +240,7 @@ namespace engine {
|
|||
}
|
||||
|
||||
string
|
||||
ProcID::genProcSpec()
|
||||
ProcID::genProcSpec() const
|
||||
{
|
||||
std::ostringstream buffer;
|
||||
buffer << nodeName_
|
||||
|
|
@ -246,13 +250,13 @@ namespace engine {
|
|||
}
|
||||
|
||||
string
|
||||
ProcID::genNodeName()
|
||||
ProcID::genNodeName() const
|
||||
{
|
||||
return string{nodeName_};
|
||||
}
|
||||
|
||||
string
|
||||
ProcID::genNodeSymbol()
|
||||
ProcID::genNodeSymbol() const
|
||||
{
|
||||
auto p = nodeName_.find(':');
|
||||
return p == string::npos? string{nodeName_}
|
||||
|
|
@ -260,7 +264,7 @@ namespace engine {
|
|||
}
|
||||
|
||||
string
|
||||
ProcID::genNodeDomain()
|
||||
ProcID::genNodeDomain() const
|
||||
{
|
||||
auto p = nodeName_.find(':');
|
||||
return p == string::npos? string{}
|
||||
|
|
@ -268,7 +272,7 @@ namespace engine {
|
|||
}
|
||||
|
||||
string
|
||||
ProcID::genQualifier()
|
||||
ProcID::genQualifier() const
|
||||
{
|
||||
std::ostringstream buffer;
|
||||
if (not isnil(portQual_))
|
||||
|
|
@ -287,7 +291,7 @@ namespace engine {
|
|||
}
|
||||
|
||||
string
|
||||
ProcID::genNodeSpec (Leads& leads)
|
||||
ProcID::genNodeSpec (Leads& leads) const
|
||||
{
|
||||
std::ostringstream buffer;
|
||||
buffer << nodeName_;
|
||||
|
|
@ -304,7 +308,7 @@ namespace engine {
|
|||
}
|
||||
|
||||
string
|
||||
ProcID::genSrcSpec (Leads& leads)
|
||||
ProcID::genSrcSpec (Leads& leads) const
|
||||
{
|
||||
return isnil(leads)? string{"-◎"} // no leads => starting point itself is a source node
|
||||
: "┉┉{"
|
||||
|
|
@ -320,7 +324,7 @@ namespace engine {
|
|||
|
||||
/** parse and dissect the argument specification */
|
||||
ProcID::ArgModel
|
||||
ProcID::genArgModel()
|
||||
ProcID::genArgModel() const
|
||||
{
|
||||
auto argListSyntax = accept_bracket(accept_repeated(0,MAX_NODE_ARG, COMMA, specTermSyntax));
|
||||
auto argSpecSyntax = accept(argListSyntax)
|
||||
|
|
@ -382,10 +386,31 @@ namespace engine {
|
|||
}
|
||||
|
||||
|
||||
lib::Several<PortRef>
|
||||
namespace {// create a »backdoor access« into actual weaving-pattern instances
|
||||
|
||||
using _DummyProc = void(&)(NullType*);
|
||||
using _DummyProto = FeedPrototype<_DummyProc>;
|
||||
using _DummyMediaWeaving = MediaWeavingPattern<_DummyProto>;
|
||||
using _RecastMediaWeaving = _TurnoutDiagnostic<_DummyMediaWeaving>;
|
||||
|
||||
lib::Several<PortRef> EMPTY_PRECURSORS;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Intrude into the Turnout and find out about source connectivity
|
||||
*/
|
||||
lib::Several<PortRef> const&
|
||||
PortDiagnostic::srcPorts()
|
||||
{
|
||||
UNIMPLEMENTED ("intrude into the Turnout and find out about source connectivity");
|
||||
if (p_.procID.hasManifoldPatt())
|
||||
{
|
||||
auto [leads,types] = _RecastMediaWeaving::accessInternal (p_);
|
||||
return leads;
|
||||
}
|
||||
/////////////////////////////////////////////////OOO add branch here to support Proxy-patterns
|
||||
else
|
||||
return EMPTY_PRECURSORS;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -306,7 +306,7 @@ namespace engine {
|
|||
: p_{thePort}
|
||||
{ }
|
||||
|
||||
lib::Several<PortRef> srcPorts();
|
||||
lib::Several<PortRef> const& srcPorts();
|
||||
|
||||
bool isSrc() { return srcPorts().empty(); }
|
||||
|
||||
|
|
|
|||
|
|
@ -172,6 +172,13 @@ namespace engine {
|
|||
* the similar basic layout of weaving pattern templates to gain access
|
||||
* to some common infrastructure, notably the predecessor ports.
|
||||
*/
|
||||
static auto
|
||||
accessInternal (Port& port)
|
||||
{ // Note: deliberately static, not dynamic-cast
|
||||
auto& internalView = static_cast<_TurnoutDiagnostic&> (port);
|
||||
auto& weavingPattern = static_cast<PAT&> (internalView);
|
||||
return _accessInternal(weavingPattern);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -109,7 +109,7 @@ namespace test {
|
|||
|
||||
|
||||
/** @test TODO aspects of node definition relevant for the ProcID
|
||||
* @todo WIP 2/25 🔁 define ⟶ implement
|
||||
* @todo WIP 2/25 🔁 define ⟶ 🔁 implement
|
||||
*/
|
||||
void
|
||||
verify_ID_properties()
|
||||
|
|
@ -174,6 +174,16 @@ namespace test {
|
|||
.setParam(0.5)
|
||||
.completePort()
|
||||
.build()};
|
||||
|
||||
///////////////////////////////////////////////////////TODO WIP
|
||||
Port& p1 = watch(nM).ports()[0];
|
||||
SHOW_EXPR(p1.procID.genProcSpec())
|
||||
auto& p1src = watch(p1).srcPorts();
|
||||
Port& p1s1 = p1src[0];
|
||||
Port& p1s2 = p1src[1];
|
||||
SHOW_EXPR(p1s1.procID.genProcSpec())
|
||||
SHOW_EXPR(p1s2.procID.genProcSpec())
|
||||
///////////////////////////////////////////////////////TODO WIP
|
||||
UNIMPLEMENTED ("verify connectivity");
|
||||
}
|
||||
};
|
||||
|
|
|
|||
|
|
@ -94683,8 +94683,8 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<node CREATED="1738549371342" ID="ID_48209409" MODIFIED="1738549390368" TEXT="letztlich sind dann aber InvocationAdapter und FeedManifold verschmolzen"/>
|
||||
<node CREATED="1738549391739" ID="ID_335336619" MODIFIED="1738549799591" TEXT="und gehen nun beide zusammen aus einem FeedPrototype hervor">
|
||||
<linktarget COLOR="#476d81" DESTINATION="ID_335336619" ENDARROW="Default" ENDINCLINATION="1464;-35;" ID="Arrow_ID_1855832580" SOURCE="ID_152831343" STARTARROW="None" STARTINCLINATION="417;0;"/>
|
||||
<linktarget COLOR="#4f6988" DESTINATION="ID_335336619" ENDARROW="Default" ENDINCLINATION="1514;0;" ID="Arrow_ID_1821666531" SOURCE="ID_322789953" STARTARROW="None" STARTINCLINATION="1033;0;"/>
|
||||
<linktarget COLOR="#3f5f9a" DESTINATION="ID_335336619" ENDARROW="Default" ENDINCLINATION="493;21;" ID="Arrow_ID_1206921858" SOURCE="ID_1618027387" STARTARROW="None" STARTINCLINATION="470;0;"/>
|
||||
<linktarget COLOR="#4f6988" DESTINATION="ID_335336619" ENDARROW="Default" ENDINCLINATION="1514;0;" ID="Arrow_ID_1821666531" SOURCE="ID_322789953" STARTARROW="None" STARTINCLINATION="1033;0;"/>
|
||||
</node>
|
||||
<node CREATED="1738549416339" ID="ID_682224491" MODIFIED="1738550032719" TEXT="der Mix-in-Ansatz wurde dadurch letztlich überflüssig (was gut ist)">
|
||||
<linktarget COLOR="#4f5888" DESTINATION="ID_682224491" ENDARROW="Default" ENDINCLINATION="-1236;54;" ID="Arrow_ID_1568439843" SOURCE="ID_727715872" STARTARROW="None" STARTINCLINATION="760;-597;"/>
|
||||
|
|
@ -105894,8 +105894,7 @@ StM_bind(Builder<R1> b1, Extension<R1,R2> extension)
|
|||
<i>Extended Attributes</i> sollen diverse anderweitige Beschränkungen auffangen
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
<node CREATED="1738547056214" ID="ID_34946402" MODIFIED="1738547768337" TEXT="Sie ermöglichen eine initiale Festlegung ohne vollständige Kenntnis des Sachverhalts">
|
||||
<richcontent TYPE="NOTE"><html>
|
||||
|
|
@ -105905,8 +105904,7 @@ StM_bind(Builder<R1> b1, Extension<R1,R2> extension)
|
|||
Wenn ein komplexer Sachverhalt überhaupt erst erschlossen werden soll, durch das Aufbauen einer orientierenden Struktur, so muß ein Vorgriff gemacht werden, der leider nur in den seltensten Fällen der Sache adäquat ist. Infolgedessen ist man dann an untaugliche Strukturen gebunden, deren Reparatur zu kostspielig wäre. Stattdessen hilft man sich mit darüber gelegten Layern, die Metadaten und erweiterte Attribute als Ankerpunkt verwenden
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
<linktarget COLOR="#e6165b" DESTINATION="ID_34946402" ENDARROW="Default" ENDINCLINATION="908;-37;" ID="Arrow_ID_1661388795" SOURCE="ID_1638082833" STARTARROW="None" STARTINCLINATION="590;28;"/>
|
||||
</node>
|
||||
<node CREATED="1738547123718" HGAP="30" ID="ID_1111160527" MODIFIED="1738547687404" VSHIFT="-11">
|
||||
|
|
@ -105917,8 +105915,7 @@ StM_bind(Builder<R1> b1, Extension<R1,R2> extension)
|
|||
<u>Design-Paradoxon</u>: das Design besonders relevanter Funktionalität ist selten adäquat
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1721238837562" HGAP="73" ID="ID_341926402" MODIFIED="1738548361793" STYLE="bubble" TEXT="überladen mit widersprüchlichen Bedeutungen" VSHIFT="28">
|
||||
<edge COLOR="#ff5d00" STYLE="sharp_linear"/>
|
||||
|
|
@ -106110,8 +106107,7 @@ StM_bind(Builder<R1> b1, Extension<R1,R2> extension)
|
|||
zu entgehen....
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
<arrowlink COLOR="#de3870" DESTINATION="ID_341926402" ENDARROW="Default" ENDINCLINATION="-31;45;" ID="Arrow_ID_529164217" STARTARROW="None" STARTINCLINATION="-865;-25;"/>
|
||||
<icon BUILTIN="smiley-oh"/>
|
||||
</node>
|
||||
|
|
@ -106127,30 +106123,31 @@ StM_bind(Builder<R1> b1, Extension<R1,R2> extension)
|
|||
will ich dann doch auch noch haben...
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1738518837927" ID="ID_119086007" MODIFIED="1738533250362" TEXT="Dispatch auf Basis der Flags ermöglichen">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1738518837927" ID="ID_119086007" MODIFIED="1738560869556" TEXT="Dispatch auf Basis der Flags ermöglichen">
|
||||
<icon BUILTIN="pencil"/>
|
||||
<node CREATED="1738533252216" ID="ID_395771530" MODIFIED="1738533271606" TEXT="funktioniert wie die generischen Dispatcher-Tables, nur fest-verdrahtet"/>
|
||||
<node CREATED="1738533418442" ID="ID_1905552895" MODIFIED="1738533443165" TEXT="Es handelt sich um Informations-Funktionen ⟹ Zugang via ProcID"/>
|
||||
<node CREATED="1738535524778" ID="ID_2361548" MODIFIED="1738535531249" TEXT="Dispatch hinter dem Zugang">
|
||||
<node BACKGROUND_COLOR="#f8f1cb" COLOR="#a50125" CREATED="1738535532721" ID="ID_230267714" MODIFIED="1738535546182" TEXT="Problem: habe dennoch eine Differenzierung zu überwinden">
|
||||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1738535524778" ID="ID_2361548" MODIFIED="1738560882286" TEXT="Dispatch hinter dem Zugang">
|
||||
<icon BUILTIN="pencil"/>
|
||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1738535532721" ID="ID_230267714" MODIFIED="1738560911866" TEXT="Problem: habe dennoch eine Differenzierung zu überwinden">
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
<node CREATED="1738535562285" ID="ID_1118497200" MODIFIED="1738535589454" TEXT="ich weiß zwar jetzt z.B. daß das Pattern »Manifold« ist"/>
|
||||
<node CREATED="1738535590806" ID="ID_1231646271" MODIFIED="1738535609458" TEXT="aber dennoch gibt es zig verschiedene Storage-Layouts">
|
||||
<node CREATED="1738535610984" ID="ID_1726140591" MODIFIED="1738535619473" TEXT="leider liegt die FeedManifold vorne">
|
||||
<node CREATED="1738548655151" ID="ID_1737977570" MODIFIED="1738550074388" TEXT="⟹ Konsequenz: das ist zu ändern!">
|
||||
<node CREATED="1738548655151" ID="ID_1737977570" MODIFIED="1738560928198" TEXT="⟹ Konsequenz: das ist zu ändern!">
|
||||
<arrowlink COLOR="#535274" DESTINATION="ID_879823577" ENDARROW="Default" ENDINCLINATION="172;0;" ID="Arrow_ID_1583847739" STARTARROW="Default" STARTINCLINATION="172;0;"/>
|
||||
<arrowlink COLOR="#65537a" DESTINATION="ID_727715872" ENDARROW="Default" ENDINCLINATION="191;-8;" ID="Arrow_ID_503466505" STARTARROW="None" STARTINCLINATION="-157;-252;"/>
|
||||
<arrowlink COLOR="#394b5f" DESTINATION="ID_727715872" ENDARROW="Default" ENDINCLINATION="191;-8;" ID="Arrow_ID_503466505" STARTARROW="None" STARTINCLINATION="-157;-252;"/>
|
||||
<icon BUILTIN="yes"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1738535630923" ID="ID_225612311" MODIFIED="1738535640350" TEXT="und die hat flexibles Storage-Layout"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1738535758756" ID="ID_1713030298" MODIFIED="1738535786660" TEXT="also doch noch eine Art virtueller Dispatch notwendig?">
|
||||
<node COLOR="#5b280f" CREATED="1738535758756" ID="ID_1713030298" MODIFIED="1738560889987" TEXT="also doch noch eine Art virtueller Dispatch notwendig?">
|
||||
<icon BUILTIN="help"/>
|
||||
<icon BUILTIN="button_cancel"/>
|
||||
<node CREATED="1738535795741" ID="ID_1328646607" MODIFIED="1738535825859" TEXT="z.B. ein Offset zur lib::Several-Storage im Objekt"/>
|
||||
<node CREATED="1738535844527" ID="ID_1795314602" MODIFIED="1738535867860">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
|
|
@ -106160,58 +106157,100 @@ StM_bind(Builder<R1> b1, Extension<R1,R2> extension)
|
|||
oder ein Trampolin? aber auf Basis welcher <i>Laufzeit-Information?</i>
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
</node>
|
||||
<node CREATED="1738535887977" ID="ID_1858101323" MODIFIED="1738535910201" TEXT="RTTI? das wäre dann eine VTable »durch die HIntertür«"/>
|
||||
<node COLOR="#5b280f" CREATED="1738548443595" ID="ID_1995564775" MODIFIED="1738548460221" TEXT="Aufpassen! das Unterfangen ist absurd">
|
||||
<icon BUILTIN="stop-sign"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1738548487461" ID="ID_1252661720" MODIFIED="1738548545033" TEXT="Auf Stuktur-Kongruenz von Templates zurückführen">
|
||||
<node COLOR="#435e98" CREATED="1738548487461" ID="ID_1252661720" MODIFIED="1738560909691">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
<head/>
|
||||
<body>
|
||||
<p>
|
||||
Auf <b>Stuktur-Kongruenz</b> von Templates zurückführen
|
||||
</p>
|
||||
</body>
|
||||
</html></richcontent>
|
||||
<icon BUILTIN="forward"/>
|
||||
<node CREATED="1738548546868" ID="ID_879823577" MODIFIED="1738548679951" TEXT="zusätzliche Einschränkung: der konkruente Teil muß vorne liegen">
|
||||
<linktarget COLOR="#535274" DESTINATION="ID_879823577" ENDARROW="Default" ENDINCLINATION="172;0;" ID="Arrow_ID_1583847739" SOURCE="ID_1737977570" STARTARROW="Default" STARTINCLINATION="172;0;"/>
|
||||
</node>
|
||||
<node CREATED="1738548590215" ID="ID_116345812" MODIFIED="1738548633404" TEXT="Abgestützt auf low-Level memory-Layout"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1738549919523" ID="ID_727715872" MODIFIED="1738550065466" TEXT="Feed-Manifold muß als Sub-Komponente hinten liegen">
|
||||
<node COLOR="#338800" CREATED="1738549919523" ID="ID_727715872" MODIFIED="1738560918182" TEXT="Feed-Manifold muß als Sub-Komponente hinten liegen">
|
||||
<arrowlink COLOR="#4f5888" DESTINATION="ID_682224491" ENDARROW="Default" ENDINCLINATION="-1236;54;" ID="Arrow_ID_1568439843" STARTARROW="None" STARTINCLINATION="760;-597;"/>
|
||||
<linktarget COLOR="#65537a" DESTINATION="ID_727715872" ENDARROW="Default" ENDINCLINATION="191;-8;" ID="Arrow_ID_503466505" SOURCE="ID_1737977570" STARTARROW="None" STARTINCLINATION="-157;-252;"/>
|
||||
<linktarget COLOR="#394b5f" DESTINATION="ID_727715872" ENDARROW="Default" ENDINCLINATION="191;-8;" ID="Arrow_ID_503466505" SOURCE="ID_1737977570" STARTARROW="None" STARTINCLINATION="-157;-252;"/>
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#435e98" CREATED="1738550080458" ID="ID_747266264" MODIFIED="1738550094964" TEXT="der Code wird dadurch sogar klarer">
|
||||
<icon BUILTIN="ksmiletris"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1738552709748" ID="ID_751195601" MODIFIED="1738552716264" TEXT="Fragen der Code-Anordnung">
|
||||
<node CREATED="1738552717851" ID="ID_908526926" MODIFIED="1738552724655" TEXT="brauche einen Low-Level-Accessor">
|
||||
<node COLOR="#338800" CREATED="1738552709748" ID="ID_751195601" MODIFIED="1738560950089" TEXT="Fragen der Code-Anordnung">
|
||||
<icon BUILTIN="yes"/>
|
||||
<node COLOR="#435e98" CREATED="1738552717851" ID="ID_908526926" MODIFIED="1738560939158" TEXT="brauche einen Low-Level-Accessor">
|
||||
<node CREATED="1738552736209" ID="ID_1882145435" MODIFIED="1738552743647" TEXT="dieser muß eine ProcID auswerten"/>
|
||||
<node CREATED="1738552744901" ID="ID_1314938956" MODIFIED="1738552763205" TEXT="und sich außerdem Zugang verschaffen zu Internas der Weaving-Pattern"/>
|
||||
<node CREATED="1738552764381" ID="ID_1858078710" MODIFIED="1738552782990" TEXT="letztere müssen diesen Zugang per friend-Klausel gestatten"/>
|
||||
<node CREATED="1738553451159" ID="ID_1113348900" MODIFIED="1738553459220" TEXT="sehr einfach möglich per std::tie()"/>
|
||||
<node CREATED="1738553451159" ID="ID_1113348900" MODIFIED="1738560667981" TEXT="sehr einfach möglich per std::tie()">
|
||||
<linktarget COLOR="#406f7e" DESTINATION="ID_1113348900" ENDARROW="Default" ENDINCLINATION="257;0;" ID="Arrow_ID_1008150861" SOURCE="ID_1723382198" STARTARROW="None" STARTINCLINATION="41;-120;"/>
|
||||
</node>
|
||||
<node CREATED="1738552789850" ID="ID_644134927" MODIFIED="1738552809755" TEXT="die Implementierung muß in eine zentrale Translation-Unit">
|
||||
</node>
|
||||
<node COLOR="#435e98" CREATED="1738552789850" ID="ID_644134927" MODIFIED="1738560942998" TEXT="die Implementierung muß in eine zentrale Translation-Unit">
|
||||
<node CREATED="1738552837650" ID="ID_752093610" MODIFIED="1738552856045" TEXT="dort müssen die relevanten Weaving-Pattern-Templates includiert werden">
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
</node>
|
||||
<node CREATED="1738552858806" ID="ID_499744765" MODIFIED="1738552870057" TEXT="sie werden dann aber pseudo-instantiiert">
|
||||
<icon BUILTIN="idea"/>
|
||||
<node CREATED="1738552872971" ID="ID_256800788" MODIFIED="1738552881315" TEXT="mit minimalen Dummy-TemplateParametern"/>
|
||||
<node CREATED="1738552872971" ID="ID_256800788" MODIFIED="1738561213189" TEXT="mit minimalen Dummy-TemplateParametern">
|
||||
<arrowlink COLOR="#5795ce" DESTINATION="ID_1797279581" ENDARROW="Default" ENDINCLINATION="59;-122;" ID="Arrow_ID_1406281476" STARTARROW="None" STARTINCLINATION="-557;0;"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1738552882437" ID="ID_771316935" MODIFIED="1738552911482" TEXT="und nur für den Zweck eines Zugriffs per force-cast">
|
||||
<icon BUILTIN="messagebox_warning"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1738552811335" ID="ID_368510579" MODIFIED="1738554265379" TEXT="naheliegend ⟹ proc-node.cpp"/>
|
||||
</node>
|
||||
<node CREATED="1738554274264" ID="ID_1338521694" MODIFIED="1738554285164" TEXT="brauche Zugang analog zum Turnout">
|
||||
<node BACKGROUND_COLOR="#c8c0b6" COLOR="#435e98" CREATED="1738554274264" ID="ID_1338521694" MODIFIED="1738560961355" TEXT="brauche Zugang analog zum Turnout">
|
||||
<icon BUILTIN="yes"/>
|
||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1738554286652" ID="ID_1902684381" MODIFIED="1738554316908" TEXT="aber keine Turnout-Instanz">
|
||||
<icon BUILTIN="stop-sign"/>
|
||||
<node CREATED="1738554325674" ID="ID_767810587" MODIFIED="1738554361577" TEXT="Emittieren der Turnout::weave()-Implementierung verhindern"/>
|
||||
<node CREATED="1738554362767" ID="ID_611361455" MODIFIED="1738554377327" TEXT="brauche aber eine Layout-Kompatible Klasse"/>
|
||||
</node>
|
||||
<node CREATED="1738554382342" ID="ID_101038988" MODIFIED="1738554399656" TEXT="Wartbarkeit ⟹ muß direkt neben Turnout stehen">
|
||||
<node BACKGROUND_COLOR="#e1d1b0" COLOR="#435e98" CREATED="1738554382342" ID="ID_101038988" MODIFIED="1738560714175" TEXT="Wartbarkeit ⟹ muß direkt neben Turnout stehen">
|
||||
<icon BUILTIN="yes"/>
|
||||
</node>
|
||||
<node CREATED="1738554409011" ID="ID_905079961" MODIFIED="1738554415618" TEXT="class TurnoutDiagnostic"/>
|
||||
<node COLOR="#338800" CREATED="1738554409011" ID="ID_905079961" MODIFIED="1738560582334" TEXT="class TurnoutDiagnostic">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node COLOR="#435e98" CREATED="1738560584438" ID="ID_1231354688" MODIFIED="1738560603287" TEXT="leere weave()-Implementierung">
|
||||
<icon BUILTIN="idea"/>
|
||||
</node>
|
||||
<node COLOR="#435e98" CREATED="1738560605290" ID="ID_1723382198" MODIFIED="1738560681405" TEXT="accessInternal ⟶ delegiert auf den Low-Level-Accessor im Pattern">
|
||||
<arrowlink COLOR="#406f7e" DESTINATION="ID_1113348900" ENDARROW="Default" ENDINCLINATION="257;0;" ID="Arrow_ID_1008150861" STARTARROW="None" STARTINCLINATION="41;-120;"/>
|
||||
<icon BUILTIN="forward"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1738560736897" ID="ID_1797279581" MODIFIED="1738561206068" TEXT="in ProcID : Pseudo-Zugriffs-Typen aufbauen">
|
||||
<linktarget COLOR="#5795ce" DESTINATION="ID_1797279581" ENDARROW="Default" ENDINCLINATION="59;-122;" ID="Arrow_ID_1406281476" SOURCE="ID_256800788" STARTARROW="None" STARTINCLINATION="-557;0;"/>
|
||||
<icon BUILTIN="pencil"/>
|
||||
<node CREATED="1738560756846" ID="ID_1546561363" MODIFIED="1738561090267">
|
||||
<richcontent TYPE="NODE"><html>
|
||||
<head>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<p>
|
||||
MediaWeavingPattern ⟵  Dummy-Funktion <font face="Monospaced" color="#861717">void</font><font face="Monospaced" color="#e90606">(&)</font><font face="Monospaced" color="#861717">(NullType*)</font>
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
<linktarget COLOR="#176f59" DESTINATION="ID_1546561363" ENDARROW="Default" ENDINCLINATION="-212;0;" ID="Arrow_ID_1862669471" SOURCE="ID_1862733256" STARTARROW="None" STARTINCLINATION="30;3;"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
|
|
@ -106241,6 +106280,24 @@ StM_bind(Builder<R1> b1, Extension<R1,R2> extension)
|
|||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1738518865571" ID="ID_1349914035" MODIFIED="1738518908673" TEXT="Zugriff realisiert durch »verdeckten Dispatch«">
|
||||
<arrowlink COLOR="#3144ba" DESTINATION="ID_1917274705" ENDARROW="Default" ENDINCLINATION="8;62;" ID="Arrow_ID_342324675" STARTARROW="None" STARTINCLINATION="-34;-45;"/>
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1738560859721" ID="ID_866197683" MODIFIED="1738561626051" TEXT="PortDiagnostic::srcPorts()">
|
||||
<linktarget COLOR="#587793" DESTINATION="ID_866197683" ENDARROW="Default" ENDINCLINATION="140;240;" ID="Arrow_ID_1588669375" SOURCE="ID_480573349" STARTARROW="None" STARTINCLINATION="462;-13;"/>
|
||||
<icon BUILTIN="pencil"/>
|
||||
<node COLOR="#338800" CREATED="1738560976256" ID="ID_1862733256" MODIFIED="1738561090267" TEXT="»Fall-1« : Manifold-Pattern">
|
||||
<arrowlink COLOR="#176f59" DESTINATION="ID_1546561363" ENDARROW="Default" ENDINCLINATION="-212;0;" ID="Arrow_ID_1862669471" STARTARROW="None" STARTINCLINATION="30;3;"/>
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node COLOR="#3f7382" CREATED="1738561150769" HGAP="31" ID="ID_180923844" MODIFIED="1738561170969" TEXT="einfach durchgreifen..." VSHIFT="9">
|
||||
<font NAME="SansSerif" SIZE="10"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1738561113646" ID="ID_1613973730" MODIFIED="1738561134756" TEXT="»Fall-2« : Proxy">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1738561278208" ID="ID_1119065009" MODIFIED="1738561290442" TEXT="Adapter / Bequemer Zugang">
|
||||
<node CREATED="1738561292661" ID="ID_763639641" MODIFIED="1738561316255" TEXT="von PortDiagnostic ⟼ PortDiagnostic"/>
|
||||
<node CREATED="1738561572212" ID="ID_533015904" MODIFIED="1738561581287" TEXT="von NodeDiagnostic ⟼ PortDiagnostic"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
|
|
@ -106286,6 +106343,10 @@ StM_bind(Builder<R1> b1, Extension<R1,R2> extension)
|
|||
</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 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>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#f8f1cb" COLOR="#a50125" CREATED="1730486716299" ID="ID_95149323" MODIFIED="1730486959772" STYLE="fork" TEXT="Storage bedarf gesondert der Betrachtung">
|
||||
|
|
|
|||
Loading…
Reference in a new issue