P4C
The P4 Compiler
Loading...
Searching...
No Matches
orderArguments.h
1/*
2 * Copyright 2018 VMware, Inc.
3 * SPDX-FileCopyrightText: 2018 VMware, Inc.
4 *
5 * SPDX-License-Identifier: Apache-2.0
6 */
7
8#ifndef MIDEND_ORDERARGUMENTS_H_
9#define MIDEND_ORDERARGUMENTS_H_
10
11#include "frontends/common/resolveReferences/resolveReferences.h"
12#include "frontends/p4/typeChecking/typeChecker.h"
13#include "frontends/p4/typeMap.h"
14#include "ir/ir.h"
15
16namespace P4 {
17
22class DoOrderArguments : public Transform, public ResolutionContext {
23 TypeMap *typeMap;
24
25 public:
26 explicit DoOrderArguments(TypeMap *typeMap) : typeMap(typeMap) {
27 CHECK_NULL(typeMap);
28 setName("DoOrderArguments");
29 }
30
31 const IR::Node *postorder(IR::MethodCallExpression *expression) override;
32 const IR::Node *postorder(IR::ConstructorCallExpression *expression) override;
33 const IR::Node *postorder(IR::Declaration_Instance *instance) override;
34};
35
36class OrderArguments : public PassManager {
37 public:
38 explicit OrderArguments(TypeMap *typeMap, TypeChecking *typeChecking = nullptr) {
39 if (!typeChecking) typeChecking = new TypeChecking(nullptr, typeMap);
40 passes.push_back(typeChecking);
41 passes.push_back(new DoOrderArguments(typeMap));
42 setName("OrderArguments");
43 }
44};
45
46} // namespace P4
47
48#endif /* MIDEND_ORDERARGUMENTS_H_ */
Definition orderArguments.h:22
Definition node.h:53
Definition visitor.h:442
Definition typeChecker.h:55
Definition typeMap.h:32
TODO: this is not really specific to BMV2, it should reside somewhere else.
Definition applyOptionsPragmas.cpp:13