28class EBPFTableImplementationPSA :
public EBPFTablePSA {
31 const IR::Declaration_Instance *decl);
34 void emitInitializer(
CodeBuilder *builder)
override;
35 virtual void emitReferenceEntry(
CodeBuilder *builder);
37 virtual void registerTable(
const EBPFTablePSA *instance);
43 const IR::Declaration_Instance *declaration;
46 void verifyTableActionList(
const EBPFTablePSA *instance);
47 void verifyTableNoDefaultAction(
const EBPFTablePSA *instance);
48 void verifyTableNoDirectObjects(
const EBPFTablePSA *instance);
49 void verifyTableNoEntries(
const EBPFTablePSA *instance);
51 unsigned getUintFromExpression(
const IR::Expression *expr,
unsigned defaultValue);
53 DECLARE_TYPEINFO(EBPFTableImplementationPSA, EBPFTablePSA);
68class EBPFActionSelectorPSA :
public EBPFTableImplementationPSA {
71 const IR::Declaration_Instance *decl);
73 void emitInitializer(
CodeBuilder *builder)
override;
75 void emitReferenceEntry(
CodeBuilder *builder)
override;
78 cstring actionRunVariable)
override;
80 void registerTable(
const EBPFTablePSA *instance)
override;
88 typedef std::vector<const IR::KeyElement *> SelectorsListType;
90 const IR::Property *emptyGroupAction;
92 SelectorsListType selectors;
95 cstring emptyGroupActionMapName;
103 EBPFHashAlgorithmPSA::ArgumentsList unpackSelectors();
104 SelectorsListType getSelectorsFromTable(
const EBPFTablePSA *instance);
106 void verifyTableSelectorKeySet(
const EBPFTablePSA *instance);
107 void verifyTableEmptyGroupAction(
const EBPFTablePSA *instance);
109 DECLARE_TYPEINFO(EBPFActionSelectorPSA, EBPFTableImplementationPSA);