P4C
The P4 Compiler
Loading...
Searching...
No Matches
bmv2/map_direct_externs.h
1/*
2 * SPDX-FileCopyrightText: 2023 The P4 Language Consortium
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
7#ifndef BACKENDS_P4TOOLS_MODULES_TESTGEN_TARGETS_BMV2_MAP_DIRECT_EXTERNS_H_
8#define BACKENDS_P4TOOLS_MODULES_TESTGEN_TARGETS_BMV2_MAP_DIRECT_EXTERNS_H_
9
10#include <array>
11#include <map>
12#include <optional>
13
14#include "ir/ir.h"
15#include "ir/visitor.h"
16#include "lib/cstring.h"
17
19
25using DirectExternMap = std::map<cstring, const IR::P4Table *>;
26
30class MapDirectExterns : public Inspector {
31 private:
33 static constexpr std::array kTableExternProperties = {"meters", "counters"};
34
36 std::map<cstring, const IR::Declaration_Instance *> declaredExterns;
37
39 DirectExternMap directExternMap;
40
43 std::optional<const IR::Declaration_Instance *> getExternFromTableImplementation(
44 const IR::Property *tableImplementation);
45
46 bool preorder(const IR::Declaration_Instance *declInstance) override;
47 bool preorder(const IR::P4Table *table) override;
48
49 public:
52};
53
54} // namespace P4::P4Tools::P4Testgen::Bmv2
55
56#endif /*BACKENDS_P4TOOLS_MODULES_TESTGEN_TARGETS_BMV2_MAP_DIRECT_EXTERNS_H_*/
Definition bmv2/map_direct_externs.h:30
const DirectExternMap & getDirectExternMap()
Definition bmv2/map_direct_externs.cpp:69
Inja.
Definition targets/bmv2/cmd_stepper.cpp:37
std::map< cstring, const IR::P4Table * > DirectExternMap
Definition bmv2/map_direct_externs.h:25