P4C
The P4 Compiler
Loading...
Searching...
No Matches
bmv2/common/deparser.h
1/*
2 * SPDX-FileCopyrightText: 2013 Barefoot Networks, Inc.
3 * Copyright 2013-present Barefoot Networks, Inc.
4 *
5 * SPDX-License-Identifier: Apache-2.0
6 */
7
8#ifndef BACKENDS_BMV2_COMMON_DEPARSER_H_
9#define BACKENDS_BMV2_COMMON_DEPARSER_H_
10
11#include "backend.h"
12#include "expression.h"
13#include "frontends/common/resolveReferences/referenceMap.h"
14#include "frontends/p4/typeMap.h"
15#include "ir/ir.h"
16#include "lib/json.h"
17
18namespace P4::BMV2 {
19
20class DeparserConverter : public Inspector {
22 cstring name;
23 P4::P4CoreLibrary &corelib;
24
25 protected:
26 Util::IJson *convertDeparser(const IR::P4Control *ctrl);
27 void convertDeparserBody(const IR::Vector<IR::StatOrDecl> *body, Util::JsonArray *order,
28 Util::JsonArray *primitives);
29
30 public:
31 bool preorder(const IR::P4Control *ctrl) override;
32
33 explicit DeparserConverter(ConversionContext *ctxt, cstring name = "deparser"_cs)
34 : ctxt(ctxt), name(name), corelib(P4::P4CoreLibrary::instance()) {
35 setName("DeparserConverter");
36 }
37};
38
39} // namespace P4::BMV2
40
41#endif /* BACKENDS_BMV2_COMMON_DEPARSER_H_ */
Definition ir/vector.h:59
Definition coreLibrary.h:103
Definition lib/json.h:41
Definition lib/json.h:128
Definition cstring.h:85
TODO: this is not really specific to BMV2, it should reside somewhere else.
Definition action.cpp:9
Definition bmv2/common/helpers.h:288