17#ifndef MIDEND_SINGLEARGUMENTSELECT_H_
18#define MIDEND_SINGLEARGUMENTSELECT_H_
20#include "frontends/p4/typeChecking/typeChecker.h"
32class DoSingleArgumentSelect :
public Modifier {
34 const IR::Type *selectListType;
37 explicit DoSingleArgumentSelect(
TypeMap *typeMap) : typeMap(typeMap), selectListType(
nullptr) {
38 setName(
"DoSingleArgumentSelect");
43 const IR::Expression *expr;
44 const IR::Expression *mask;
47 Pair(
const IR::Expression *source,
const IR::Type *type);
52 void checkExpressionType(
const IR::Expression *expression);
54 bool preorder(IR::SelectCase *selCase)
override;
55 bool preorder(IR::SelectExpression *expression)
override;
58class SingleArgumentSelect :
public PassManager {
62 if (!typeChecking) typeChecking =
new TypeChecking(refMap, typeMap);
63 passes.push_back(typeChecking);
65 setName(
"SingleArgumentSelect");
Definition singleArgumentSelect.h:32
Class used to encode maps from paths to declarations.
Definition referenceMap.h:66
Definition typeChecker.h:55
TODO: this is not really specific to BMV2, it should reside somewhere else.
Definition applyOptionsPragmas.cpp:24