Invocation: render a processing-spec for a port

This commit is contained in:
Fischlurch 2024-11-03 23:58:25 +01:00
parent 5df93f01fc
commit 53ac1911e7
6 changed files with 57 additions and 31 deletions

View file

@ -118,7 +118,7 @@ namespace lib {
size_t cnt = 1; size_t cnt = 1;
const char *pos = literal; const char *pos = literal;
for ( ; cnt <= STRING_MAX_RELEVANT and *pos ; ++cnt, ++pos ) for ( ; cnt <= STRING_MAX_RELEVANT and *pos ; ++cnt, ++pos )
hash_combine(hash, *pos); hash_combine (hash, *pos);
} }
return hash; return hash;

View file

@ -70,11 +70,8 @@ namespace engine {
/* === symbolic descriptors === */ /* === symbolic descriptors === */
string string genProcSpec(); ///< render a descriptor for the operation (without predecessors)
genProcSpec()
{
return "Lalü";
}
friend bool friend bool
operator== (ProcID const& l, ProcID const& r) operator== (ProcID const& l, ProcID const& r)
@ -87,9 +84,10 @@ namespace engine {
friend bool friend bool
operator!= (ProcID const& l, ProcID const& r) operator!= (ProcID const& l, ProcID const& r)
{ return not (l == r); } { return not (l == r); }
friend HashVal hash_value (ProcID const&);
}; };
HashVal hash_value (ProcID const&);

View file

@ -40,7 +40,11 @@
namespace steam { namespace steam {
namespace engine { namespace engine {
using util::_Fmt;
using util::isnil;
using util::unConst; using util::unConst;
using util::contains;
using boost::hash_combine;
namespace { // Details... namespace { // Details...
@ -62,7 +66,16 @@ namespace engine {
ProcID& ProcID&
ProcID::describe (StrView nodeSymb, StrView portSpec) ProcID::describe (StrView nodeSymb, StrView portSpec)
{ {
auto res = procRegistry.insert (ProcID{"bla","blubb","murks"}); REQUIRE (not isnil (nodeSymb));
REQUIRE (not isnil (portSpec));
REQUIRE (not contains (nodeSymb, ' '));
auto p = portSpec.find('(');
if (p == string::npos)
throw err::Invalid{_Fmt{"Spec for processing operation must contain at least one argument list. "
"Node:%s Spec:%s"}
% nodeSymb % portSpec
};
auto res = procRegistry.insert (ProcID{nodeSymb, portSpec.substr(0,p), portSpec.substr(p)});
return unConst (*res.first); return unConst (*res.first);
} }
@ -80,9 +93,22 @@ namespace engine {
HashVal HashVal
hash_value (ProcID const& procID) hash_value (ProcID const& procID)
{ {
return 47; //UNIMPLEMENTED ("ProcID hash"); HashVal hash = boost::hash_value (procID.nodeSymb_);
if (not isnil(procID.portQual_))
hash_combine (hash, procID.portQual_);
hash_combine (hash, procID.argLists_);
return hash;
} }
string
ProcID::genProcSpec()
{
return nodeSymb_
+ (isnil(portQual_)? string{} : "."+portQual_)
+ argLists_;
}
string string
ProcNodeDiagnostic::getNodeSpec() ProcNodeDiagnostic::getNodeSpec()
@ -104,8 +130,8 @@ namespace engine {
ProcNodeDiagnostic::getPortSpec (uint portIdx) ProcNodeDiagnostic::getPortSpec (uint portIdx)
{ {
auto& p{n_.wiring_.ports}; auto& p{n_.wiring_.ports};
return p.size() < portIdx? util::FAILURE_INDICATOR return portIdx < p.size()? p[portIdx].procID.genProcSpec()
: p[portIdx].procID.genProcSpec(); : util::FAILURE_INDICATOR;
} }
HashVal HashVal

View file

@ -35,6 +35,7 @@
using util::isnil; using util::isnil;
//using std::string; //using std::string;
using util::isSameObject;
namespace steam { namespace steam {
@ -85,6 +86,9 @@ namespace test {
CHECK (watch(n1).leads().empty()); CHECK (watch(n1).leads().empty());
CHECK (watch(n1).ports().size() == 1); CHECK (watch(n1).ports().size() == 1);
SHOW_EXPR(watch(n1).getPortSpec(0)) SHOW_EXPR(watch(n1).getPortSpec(0))
CHECK (watch(n1).getPortSpec(0) == "Test:Src.dummyFun(TestFrame)"_expect);
SHOW_EXPR(watch(n1).getPortSpec(1))
CHECK (watch(n1).getPortSpec(1) == ""_expect);
} }

View file

@ -42,7 +42,7 @@ namespace test {
} // (End) hidden impl details } // (End) hidden impl details
const string DUMMY_FUN_ID{"DummyFun"}; const string DUMMY_FUN_ID{"dummyFun(TestFrame)"};

View file

@ -91052,9 +91052,9 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<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="-14;74;" ID="Arrow_ID_507591051" STARTARROW="None" STARTINCLINATION="-4;-31;"/>
</node> </node>
</node> </node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1728769319538" ID="ID_1257287659" MODIFIED="1730563164682" TEXT="eine reproduzierbare symbolische Aufruf-Spec erheben"> <node COLOR="#338800" CREATED="1728769319538" ID="ID_1257287659" MODIFIED="1730681979010" TEXT="eine reproduzierbare symbolische Aufruf-Spec erheben">
<arrowlink COLOR="#47347f" DESTINATION="ID_786613770" ENDARROW="Default" ENDINCLINATION="-278;-1402;" ID="Arrow_ID_1689861408" STARTARROW="None" STARTINCLINATION="-284;14;"/> <arrowlink COLOR="#34417f" DESTINATION="ID_786613770" ENDARROW="Default" ENDINCLINATION="-278;-1402;" ID="Arrow_ID_1689861408" STARTARROW="None" STARTINCLINATION="-284;14;"/>
<icon BUILTIN="flag-yellow"/> <icon BUILTIN="button_ok"/>
</node> </node>
</node> </node>
<node CREATED="1728771335267" ID="ID_1094389177" MODIFIED="1728771344519" TEXT="insgesamt...."> <node CREATED="1728771335267" ID="ID_1094389177" MODIFIED="1728771344519" TEXT="insgesamt....">
@ -91381,8 +91381,8 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<icon BUILTIN="button_ok"/> <icon BUILTIN="button_ok"/>
</node> </node>
</node> </node>
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1728785803611" ID="ID_1231385520" MODIFIED="1728785816791" TEXT="minimale Verifikationen aufbauen"> <node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1728785803611" ID="ID_1231385520" MODIFIED="1730682018715" TEXT="minimale Verifikationen aufbauen">
<icon BUILTIN="hourglass"/> <icon BUILTIN="pencil"/>
<node COLOR="#338800" CREATED="1728785829235" ID="ID_59153641" MODIFIED="1729983001606" TEXT="Zahl der Leads / Ports"> <node COLOR="#338800" CREATED="1728785829235" ID="ID_59153641" MODIFIED="1729983001606" TEXT="Zahl der Leads / Ports">
<icon BUILTIN="button_ok"/> <icon BUILTIN="button_ok"/>
<node CREATED="1728837023895" ID="ID_605946582" MODIFIED="1728837031771" TEXT="auf Connectivity direkt zug&#xe4;nglich"/> <node CREATED="1728837023895" ID="ID_605946582" MODIFIED="1728837031771" TEXT="auf Connectivity direkt zug&#xe4;nglich"/>
@ -91393,24 +91393,24 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node> </node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1728785840998" ID="ID_663732870" MODIFIED="1728785852800" TEXT="Funktions-ID generieren"> <node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1728785840998" ID="ID_663732870" MODIFIED="1728785852800" TEXT="Funktions-ID generieren">
<icon BUILTIN="flag-yellow"/> <icon BUILTIN="flag-yellow"/>
<node CREATED="1730426912428" ID="ID_1568293923" LINK="#ID_1347337581" MODIFIED="1730426982203" TEXT="tats&#xe4;chlich kann hier einfach der Qualifier aus dem im Turnout durchgereicht werden"/> <node CREATED="1730426912428" ID="ID_1568293923" LINK="#ID_1347337581" MODIFIED="1730682010119" TEXT="tats&#xe4;chlich kann hier einfach die symbolische Spec aus dem im Turnout durchgereicht werden"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1730427234835" ID="ID_1719129337" MODIFIED="1730427243992" TEXT="diese Information mu&#xdf; durchgef&#xe4;delt werden"> <node COLOR="#338800" CREATED="1730427234835" ID="ID_1719129337" MODIFIED="1730681997339" TEXT="diese Information mu&#xdf; durchgef&#xe4;delt werden">
<icon BUILTIN="flag-yellow"/> <icon BUILTIN="button_ok"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1730427251935" ID="ID_162913631" MODIFIED="1730427287787" TEXT="sie mu&#xdf; im Turnout greifbar sein"> <node COLOR="#338800" CREATED="1730427251935" ID="ID_162913631" MODIFIED="1730681992054" TEXT="sie mu&#xdf; im Turnout greifbar sein">
<icon BUILTIN="flag-yellow"/> <icon BUILTIN="button_ok"/>
</node> </node>
<node COLOR="#338800" CREATED="1730427274867" ID="ID_1511400718" MODIFIED="1730429566295" TEXT="also durch den WeavingBuilder durchlaufen"> <node COLOR="#338800" CREATED="1730427274867" ID="ID_1511400718" MODIFIED="1730429566295" TEXT="also durch den WeavingBuilder durchlaufen">
<icon BUILTIN="button_ok"/> <icon BUILTIN="button_ok"/>
</node> </node>
</node> </node>
</node> </node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1728785867907" ID="ID_394739045" MODIFIED="1728785872687" TEXT="Spec generieren"> <node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1728785867907" ID="ID_394739045" MODIFIED="1730682037506" TEXT="Spec generieren">
<icon BUILTIN="flag-yellow"/> <icon BUILTIN="pencil"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1728785876033" ID="ID_424140873" MODIFIED="1728785881465" TEXT="Spec der Funktion"> <node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1728785876033" ID="ID_424140873" MODIFIED="1728785881465" TEXT="Spec der Funktion">
<icon BUILTIN="flag-yellow"/> <icon BUILTIN="flag-yellow"/>
</node> </node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1728785882504" ID="ID_607531791" MODIFIED="1728785893760" TEXT="Spec aus dem Turnout"> <node COLOR="#338800" CREATED="1728785882504" ID="ID_607531791" MODIFIED="1730682058719" TEXT="Spec aus dem Turnout">
<icon BUILTIN="flag-yellow"/> <icon BUILTIN="button_ok"/>
</node> </node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1729986405645" ID="ID_1710935234" MODIFIED="1729986440374" TEXT="Spec der umschlie&#xdf;enden ProcNode"> <node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1729986405645" ID="ID_1710935234" MODIFIED="1729986440374" TEXT="Spec der umschlie&#xdf;enden ProcNode">
<arrowlink COLOR="#666a8d" DESTINATION="ID_1032840307" ENDARROW="Default" ENDINCLINATION="312;27;" ID="Arrow_ID_1338984517" STARTARROW="None" STARTINCLINATION="158;-13;"/> <arrowlink COLOR="#666a8d" DESTINATION="ID_1032840307" ENDARROW="Default" ENDINCLINATION="312;27;" ID="Arrow_ID_1338984517" STARTARROW="None" STARTINCLINATION="158;-13;"/>
@ -91691,8 +91691,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
Beschlu&#223;: als <b>string_view</b>&#160;durch den Builder durchreichen Beschlu&#223;: als <b>string_view</b>&#160;durch den Builder durchreichen
</p> </p>
</body> </body>
</html> </html></richcontent>
</richcontent>
<linktarget COLOR="#58858e" DESTINATION="ID_1890920364" ENDARROW="Default" ENDINCLINATION="-645;-1205;" ID="Arrow_ID_1530493323" SOURCE="ID_208428537" STARTARROW="None" STARTINCLINATION="-445;27;"/> <linktarget COLOR="#58858e" DESTINATION="ID_1890920364" ENDARROW="Default" ENDINCLINATION="-645;-1205;" ID="Arrow_ID_1530493323" SOURCE="ID_208428537" STARTARROW="None" STARTINCLINATION="-445;27;"/>
<icon BUILTIN="yes"/> <icon BUILTIN="yes"/>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1730678529981" ID="ID_1467777740" MODIFIED="1730678537808" TEXT="etwas riskant"> <node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1730678529981" ID="ID_1467777740" MODIFIED="1730678537808" TEXT="etwas riskant">
@ -91706,14 +91705,13 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
das hei&#223;t, es handelt sich definitiv nicht um Literal-Strings; zudem wollen wir die Spec ggfs. noch zerlegen und dann in eine Symbol-Table internen; insofern ist std::string_view der naheliegende Ansatz, da wir keine Inline-Storage durch x-fache Builder-Objekte durchschieben wollen, blo&#223; um am Ende doch nur einen Teilstring in die Symboltabelle zu kopieren das hei&#223;t, es handelt sich definitiv nicht um Literal-Strings; zudem wollen wir die Spec ggfs. noch zerlegen und dann in eine Symbol-Table internen; insofern ist std::string_view der naheliegende Ansatz, da wir keine Inline-Storage durch x-fache Builder-Objekte durchschieben wollen, blo&#223; um am Ende doch nur einen Teilstring in die Symboltabelle zu kopieren
</p> </p>
</body> </body>
</html> </html></richcontent>
</richcontent>
<icon BUILTIN="yes"/> <icon BUILTIN="yes"/>
</node> </node>
</node> </node>
</node> </node>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1730510962225" ID="ID_786613770" MODIFIED="1730563164682" TEXT="Metadaten-Zugriff / API"> <node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1730510962225" ID="ID_786613770" MODIFIED="1730563164682" TEXT="Metadaten-Zugriff / API">
<linktarget COLOR="#47347f" DESTINATION="ID_786613770" ENDARROW="Default" ENDINCLINATION="-278;-1402;" ID="Arrow_ID_1689861408" SOURCE="ID_1257287659" STARTARROW="None" STARTINCLINATION="-284;14;"/> <linktarget COLOR="#34417f" DESTINATION="ID_786613770" ENDARROW="Default" ENDINCLINATION="-278;-1402;" ID="Arrow_ID_1689861408" SOURCE="ID_1257287659" STARTARROW="None" STARTINCLINATION="-284;14;"/>
<icon BUILTIN="help"/> <icon BUILTIN="help"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1730510982342" ID="ID_310976542" MODIFIED="1730510998830" TEXT="Struktur/Modell"> <node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1730510982342" ID="ID_310976542" MODIFIED="1730510998830" TEXT="Struktur/Modell">
<icon BUILTIN="info"/> <icon BUILTIN="info"/>