7#ifndef BACKENDS_P4TOOLS_MODULES_TESTGEN_TARGETS_PNA_TEST_SPEC_H_
8#define BACKENDS_P4TOOLS_MODULES_TESTGEN_TARGETS_PNA_TEST_SPEC_H_
15#include "backends/p4tools/common/lib/model.h"
16#include "ir/declaration.h"
18#include "lib/cstring.h"
20#include "backends/p4tools/modules/testgen/lib/test_object.h"
21#include "backends/p4tools/modules/testgen/lib/test_spec.h"
29class PnaDpdkRegisterCondition :
public TestObject {
37 explicit PnaDpdkRegisterCondition(
const IR::Expression *
index,
const IR::Expression *
value);
47 [[nodiscard]]
const PnaDpdkRegisterCondition *
evaluate(
const Model &model,
48 bool doComplete)
const override;
52 DECLARE_TYPEINFO(PnaDpdkRegisterCondition, TestObject);
63class PnaDpdkRegisterValue :
public TestObject {
67 const IR::Expression *initialValue;
70 std::vector<PnaDpdkRegisterCondition> registerConditions;
73 explicit PnaDpdkRegisterValue(
const IR::Expression *initialValue);
85 const IR::Expression *
getCurrentValue(
const IR::Expression *index)
const;
91 [[nodiscard]]
const PnaDpdkRegisterValue *
evaluate(
const Model &model,
92 bool doComplete)
const override;
94 DECLARE_TYPEINFO(PnaDpdkRegisterValue, TestObject);
100class PnaDpdkActionProfile :
public TestObject {
103 std::vector<std::pair<cstring, std::vector<ActionArg>>> actions;
114 [[nodiscard]]
const std::vector<std::pair<cstring, std::vector<ActionArg>>> *
getActions()
const;
125 [[nodiscard]]
const PnaDpdkActionProfile *
evaluate(
const Model &model,
126 bool doComplete)
const override;
128 DECLARE_TYPEINFO(PnaDpdkActionProfile, TestObject);
134class PnaDpdkActionSelector :
public TestObject {
154 [[nodiscard]]
const PnaDpdkActionSelector *
evaluate(
const Model &model,
155 bool doComplete)
const override;
157 DECLARE_TYPEINFO(PnaDpdkActionSelector, TestObject);
163class MetadataCollection :
public TestObject {
165 std::map<cstring, const IR::Literal *> metadataFields;
168 MetadataCollection();
172 [[nodiscard]]
const MetadataCollection *
evaluate(
const Model & ,
173 bool doComplete)
const override;
176 [[nodiscard]]
const std::map<cstring, const IR::Literal *> &
getMetadataFields()
const;
178 void addMetaDataField(
cstring name,
const IR::Literal *metadataField);
180 const IR::Literal *getMetadataField(
cstring name);
182 DECLARE_TYPEINFO(MetadataCollection, TestObject);
189class Optional :
public TableMatch {
192 const IR::Expression *value;
198 explicit Optional(
const IR::KeyElement *key,
const IR::Expression *value,
bool addMatch);
200 const Optional *
evaluate(
const Model &model,
bool doComplete)
const override;
211 DECLARE_TYPEINFO(Optional, TableMatch);
214class Range :
public TableMatch {
217 const IR::Expression *low;
220 const IR::Expression *high;
223 explicit Range(
const IR::KeyElement *key,
const IR::Expression *low,
224 const IR::Expression *high);
226 const Range *
evaluate(
const Model &model,
bool doComplete)
const override;
238 DECLARE_TYPEINFO(Range, TableMatch);
The Declaration interface, representing objects with names.
Definition declaration.h:17