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