Invocation: render a processing-spec for a port
This commit is contained in:
parent
5df93f01fc
commit
53ac1911e7
6 changed files with 57 additions and 31 deletions
|
|
@ -118,7 +118,7 @@ namespace lib {
|
|||
size_t cnt = 1;
|
||||
const char *pos = literal;
|
||||
for ( ; cnt <= STRING_MAX_RELEVANT and *pos ; ++cnt, ++pos )
|
||||
hash_combine(hash, *pos);
|
||||
hash_combine (hash, *pos);
|
||||
}
|
||||
|
||||
return hash;
|
||||
|
|
|
|||
|
|
@ -70,11 +70,8 @@ namespace engine {
|
|||
|
||||
/* === symbolic descriptors === */
|
||||
|
||||
string
|
||||
genProcSpec()
|
||||
{
|
||||
return "Lalü";
|
||||
}
|
||||
string genProcSpec(); ///< render a descriptor for the operation (without predecessors)
|
||||
|
||||
|
||||
friend bool
|
||||
operator== (ProcID const& l, ProcID const& r)
|
||||
|
|
@ -87,9 +84,10 @@ namespace engine {
|
|||
friend bool
|
||||
operator!= (ProcID const& l, ProcID const& r)
|
||||
{ return not (l == r); }
|
||||
|
||||
friend HashVal hash_value (ProcID const&);
|
||||
};
|
||||
|
||||
HashVal hash_value (ProcID const&);
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -40,7 +40,11 @@
|
|||
namespace steam {
|
||||
namespace engine {
|
||||
|
||||
using util::_Fmt;
|
||||
using util::isnil;
|
||||
using util::unConst;
|
||||
using util::contains;
|
||||
using boost::hash_combine;
|
||||
|
||||
namespace { // Details...
|
||||
|
||||
|
|
@ -62,7 +66,16 @@ namespace engine {
|
|||
ProcID&
|
||||
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);
|
||||
}
|
||||
|
||||
|
|
@ -80,9 +93,22 @@ namespace engine {
|
|||
HashVal
|
||||
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
|
||||
ProcNodeDiagnostic::getNodeSpec()
|
||||
|
|
@ -104,8 +130,8 @@ namespace engine {
|
|||
ProcNodeDiagnostic::getPortSpec (uint portIdx)
|
||||
{
|
||||
auto& p{n_.wiring_.ports};
|
||||
return p.size() < portIdx? util::FAILURE_INDICATOR
|
||||
: p[portIdx].procID.genProcSpec();
|
||||
return portIdx < p.size()? p[portIdx].procID.genProcSpec()
|
||||
: util::FAILURE_INDICATOR;
|
||||
}
|
||||
|
||||
HashVal
|
||||
|
|
|
|||
|
|
@ -35,6 +35,7 @@
|
|||
|
||||
using util::isnil;
|
||||
//using std::string;
|
||||
using util::isSameObject;
|
||||
|
||||
|
||||
namespace steam {
|
||||
|
|
@ -85,6 +86,9 @@ namespace test {
|
|||
CHECK (watch(n1).leads().empty());
|
||||
CHECK (watch(n1).ports().size() == 1);
|
||||
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);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@ namespace test {
|
|||
} // (End) hidden impl details
|
||||
|
||||
|
||||
const string DUMMY_FUN_ID{"DummyFun"};
|
||||
const string DUMMY_FUN_ID{"dummyFun(TestFrame)"};
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -91052,9 +91052,9 @@ Date:   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;"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1728769319538" ID="ID_1257287659" MODIFIED="1730563164682" 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;"/>
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node COLOR="#338800" CREATED="1728769319538" ID="ID_1257287659" MODIFIED="1730681979010" TEXT="eine reproduzierbare symbolische Aufruf-Spec erheben">
|
||||
<arrowlink COLOR="#34417f" DESTINATION="ID_786613770" ENDARROW="Default" ENDINCLINATION="-278;-1402;" ID="Arrow_ID_1689861408" STARTARROW="None" STARTINCLINATION="-284;14;"/>
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
</node>
|
||||
<node CREATED="1728771335267" ID="ID_1094389177" MODIFIED="1728771344519" TEXT="insgesamt....">
|
||||
|
|
@ -91381,8 +91381,8 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#d2beaf" COLOR="#5c4d6e" CREATED="1728785803611" ID="ID_1231385520" MODIFIED="1728785816791" TEXT="minimale Verifikationen aufbauen">
|
||||
<icon BUILTIN="hourglass"/>
|
||||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1728785803611" ID="ID_1231385520" MODIFIED="1730682018715" TEXT="minimale Verifikationen aufbauen">
|
||||
<icon BUILTIN="pencil"/>
|
||||
<node COLOR="#338800" CREATED="1728785829235" ID="ID_59153641" MODIFIED="1729983001606" TEXT="Zahl der Leads / Ports">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node CREATED="1728837023895" ID="ID_605946582" MODIFIED="1728837031771" TEXT="auf Connectivity direkt zugänglich"/>
|
||||
|
|
@ -91393,24 +91393,24 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1728785840998" ID="ID_663732870" MODIFIED="1728785852800" TEXT="Funktions-ID generieren">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node CREATED="1730426912428" ID="ID_1568293923" LINK="#ID_1347337581" MODIFIED="1730426982203" TEXT="tatsächlich kann hier einfach der Qualifier aus dem im Turnout durchgereicht werden"/>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1730427234835" ID="ID_1719129337" MODIFIED="1730427243992" TEXT="diese Information muß durchgefädelt werden">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1730427251935" ID="ID_162913631" MODIFIED="1730427287787" TEXT="sie muß im Turnout greifbar sein">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node CREATED="1730426912428" ID="ID_1568293923" LINK="#ID_1347337581" MODIFIED="1730682010119" TEXT="tatsächlich kann hier einfach die symbolische Spec aus dem im Turnout durchgereicht werden"/>
|
||||
<node COLOR="#338800" CREATED="1730427234835" ID="ID_1719129337" MODIFIED="1730681997339" TEXT="diese Information muß durchgefädelt werden">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
<node COLOR="#338800" CREATED="1730427251935" ID="ID_162913631" MODIFIED="1730681992054" TEXT="sie muß im Turnout greifbar sein">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
<node COLOR="#338800" CREATED="1730427274867" ID="ID_1511400718" MODIFIED="1730429566295" TEXT="also durch den WeavingBuilder durchlaufen">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1728785867907" ID="ID_394739045" MODIFIED="1728785872687" TEXT="Spec generieren">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1728785867907" ID="ID_394739045" MODIFIED="1730682037506" TEXT="Spec generieren">
|
||||
<icon BUILTIN="pencil"/>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1728785876033" ID="ID_424140873" MODIFIED="1728785881465" TEXT="Spec der Funktion">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1728785882504" ID="ID_607531791" MODIFIED="1728785893760" TEXT="Spec aus dem Turnout">
|
||||
<icon BUILTIN="flag-yellow"/>
|
||||
<node COLOR="#338800" CREATED="1728785882504" ID="ID_607531791" MODIFIED="1730682058719" TEXT="Spec aus dem Turnout">
|
||||
<icon BUILTIN="button_ok"/>
|
||||
</node>
|
||||
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1729986405645" ID="ID_1710935234" MODIFIED="1729986440374" TEXT="Spec der umschließenden ProcNode">
|
||||
<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:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
Beschluß: als <b>string_view</b> durch den Builder durchreichen
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
<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"/>
|
||||
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1730678529981" ID="ID_1467777740" MODIFIED="1730678537808" TEXT="etwas riskant">
|
||||
|
|
@ -91706,14 +91705,13 @@ Date:   Thu Apr 20 18:53:17 2023 +0200<br/>
|
|||
das heiß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ß um am Ende doch nur einen Teilstring in die Symboltabelle zu kopieren
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
</richcontent>
|
||||
</html></richcontent>
|
||||
<icon BUILTIN="yes"/>
|
||||
</node>
|
||||
</node>
|
||||
</node>
|
||||
<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"/>
|
||||
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1730510982342" ID="ID_310976542" MODIFIED="1730510998830" TEXT="Struktur/Modell">
|
||||
<icon BUILTIN="info"/>
|
||||
|
|
|
|||
Loading…
Reference in a new issue