18class EBPFTableImplementationPSA :
public EBPFTablePSA {
21 const IR::Declaration_Instance *decl);
24 void emitInitializer(
CodeBuilder *builder)
override;
25 virtual void emitReferenceEntry(
CodeBuilder *builder);
27 virtual void registerTable(
const EBPFTablePSA *instance);
33 const IR::Declaration_Instance *declaration;
36 void verifyTableActionList(
const EBPFTablePSA *instance);
37 void verifyTableNoDefaultAction(
const EBPFTablePSA *instance);
38 void verifyTableNoDirectObjects(
const EBPFTablePSA *instance);
39 void verifyTableNoEntries(
const EBPFTablePSA *instance);
41 unsigned getUintFromExpression(
const IR::Expression *expr,
unsigned defaultValue);
43 DECLARE_TYPEINFO(EBPFTableImplementationPSA, EBPFTablePSA);
58class EBPFActionSelectorPSA :
public EBPFTableImplementationPSA {
61 const IR::Declaration_Instance *decl);
63 void emitInitializer(
CodeBuilder *builder)
override;
65 void emitReferenceEntry(
CodeBuilder *builder)
override;
68 cstring actionRunVariable)
override;
70 void registerTable(
const EBPFTablePSA *instance)
override;
78 typedef std::vector<const IR::KeyElement *> SelectorsListType;
80 const IR::Property *emptyGroupAction;
82 SelectorsListType selectors;
85 cstring emptyGroupActionMapName;
93 EBPFHashAlgorithmPSA::ArgumentsList unpackSelectors();
94 SelectorsListType getSelectorsFromTable(
const EBPFTablePSA *instance);
96 void verifyTableSelectorKeySet(
const EBPFTablePSA *instance);
97 void verifyTableEmptyGroupAction(
const EBPFTablePSA *instance);
99 DECLARE_TYPEINFO(EBPFActionSelectorPSA, EBPFTableImplementationPSA);