7#ifndef BACKENDS_P4TOOLS_MODULES_SMITH_TARGETS_NIC_TARGET_H_
8#define BACKENDS_P4TOOLS_MODULES_SMITH_TARGETS_NIC_TARGET_H_
13#include "backends/p4tools/modules/smith/common/declarations.h"
14#include "backends/p4tools/modules/smith/common/expressions.h"
15#include "backends/p4tools/modules/smith/common/parser.h"
16#include "backends/p4tools/modules/smith/common/statements.h"
17#include "backends/p4tools/modules/smith/common/table.h"
18#include "backends/p4tools/modules/smith/core/target.h"
19#include "backends/p4tools/modules/smith/targets/nic/expressions.h"
22namespace P4::P4Tools::P4Smith::Nic {
24class AbstractNicSmithTarget :
public SmithTarget {
26 explicit AbstractNicSmithTarget(
const std::string &deviceName,
const std::string &archName);
29class DpdkPnaSmithTarget :
public AbstractNicSmithTarget {
37 [[nodiscard]] IR::P4Parser *generateMainParserBlock()
const;
38 [[nodiscard]] IR::P4Control *generatePreControlBlock()
const;
39 [[nodiscard]] IR::P4Control *generateMainControlBlock()
const;
40 [[nodiscard]] IR::P4Control *generateMainDeparserBlock()
const;
48 [[nodiscard]]
const IR::P4Program *generateP4Program()
const override;
51 return *_declarationGenerator;
55 return *_expressionGenerator;
59 return *_statementGenerator;
62 [[nodiscard]]
ParserGenerator &parserGenerator()
const override {
return *_parserGenerator; }
64 [[nodiscard]]
TableGenerator &tableGenerator()
const override {
return *_tableGenerator; }