32 bool containsName(
cstring name)
const {
33 return parameterValues.find(name) != parameterValues.end();
37 ParameterSubstitution() =
default;
38 ParameterSubstitution(
const ParameterSubstitution &other) =
default;
40 void add(
const IR::Parameter *parameter,
const IR::Argument *value);
41 const IR::Argument *lookupByName(
cstring name)
const {
return get(parameterValues, name); }
43 const IR::Argument *lookup(
const IR::Parameter *param)
const {
44 return lookupByName(param->name.name);
47 bool contains(
const IR::Parameter *param)
const {
48 if (!containsName(param->name.name))
return false;
52 const IR::Parameter *findParameter(
const IR::Argument *argument)
const {
54 if (lookup(p) == argument)
return p;
58 bool empty()
const {
return parameterValues.empty(); }
67 return Util::enumerate(parameters);
74 return paramList->getEnumerator();
77 void dbprint(std::ostream &out)
const {
78 if (paramList !=
nullptr) {
79 for (
auto s : *paramList->getEnumerator())
80 out << dbp(s) <<
"=>" << dbp(lookup(s)) << std::endl;
82 for (
auto s : parametersByName)
83 out << dbp(s.second) <<
"=>" << dbp(lookupByName(s.first)) << std::endl;
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:24