23 bool containsName(
cstring name)
const {
24 return parameterValues.find(name) != parameterValues.end();
28 ParameterSubstitution() =
default;
29 ParameterSubstitution(
const ParameterSubstitution &other) =
default;
31 void add(
const IR::Parameter *parameter,
const IR::Argument *value);
32 const IR::Argument *lookupByName(
cstring name)
const {
return get(parameterValues, name); }
34 const IR::Argument *lookup(
const IR::Parameter *param)
const {
35 return lookupByName(param->name.name);
38 bool contains(
const IR::Parameter *param)
const {
39 if (!containsName(param->name.name))
return false;
43 const IR::Parameter *findParameter(
const IR::Argument *argument)
const {
45 if (lookup(p) == argument)
return p;
49 bool empty()
const {
return parameterValues.empty(); }
58 return Util::enumerate(parameters);
65 return paramList->getEnumerator();
68 void dbprint(std::ostream &out)
const override {
69 bool brief = (DBPrint::dbgetflags(out) & DBPrint::Brief);
70 if (paramList !=
nullptr) {
71 if (!brief) out <<
"paramList:" << Log::endl;
72 for (
auto s : *paramList->getEnumerator()) {
73 out << dbp(s) <<
"=>" << dbp(lookup(s));
74 if (!brief) out <<
" " << lookup(s);
78 if (!brief) out <<
"parametersByName:" << Log::endl;
79 for (
auto s : parametersByName) {
80 out << dbp(s.second) <<
"=>" << dbp(lookupByName(s.first));
81 if (!brief) out <<
" " << lookupByName(s.first);
90 absl::flat_hash_map<cstring, const IR::Argument *> parameterValues;
92 absl::flat_hash_map<cstring, const IR::Parameter *> parametersByName;
94 std::vector<const IR::Parameter *> parameters;
96 const IR::ParameterList *paramList =
nullptr;
TODO: this is not really specific to BMV2, it should reside somewhere else.
Definition applyOptionsPragmas.cpp:13