P4C
The P4 Compiler
Loading...
Searching...
No Matches
typeUnification.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 FRONTENDS_P4_TYPECHECKING_TYPEUNIFICATION_H_
9#define FRONTENDS_P4_TYPECHECKING_TYPEUNIFICATION_H_
10
11#include "frontends/p4/typeMap.h"
12#include "ir/ir.h"
13
14namespace P4 {
15
16class TypeConstraints;
18
30class TypeUnification final {
31 TypeConstraints *constraints;
32 const TypeMap *typeMap;
33
34 static bool containsDots(const IR::Type_StructLike *type);
35 static bool containsDots(const IR::Type_BaseList *type);
36 bool unifyCall(const BinaryConstraint *constraint);
37 bool unifyFunctions(const BinaryConstraint *constraint, bool skipReturnValues = false);
38 bool unifyBlocks(const BinaryConstraint *constraint);
39
40 public:
41 TypeUnification(TypeConstraints *constraints, const P4::TypeMap *typeMap)
42 : constraints(constraints), typeMap(typeMap) {}
49 bool unify(const BinaryConstraint *constraint);
50};
51
52} // namespace P4
53
54#endif /* FRONTENDS_P4_TYPECHECKING_TYPEUNIFICATION_H_ */
Base class for EqualityConstraint and CanBeImplicitlyCastConstraint.
Definition typeConstraints.h:98
Definition typeConstraints.h:171
Definition typeMap.h:32
bool unify(const BinaryConstraint *constraint)
Definition typeUnification.cpp:234
TODO: this is not really specific to BMV2, it should reside somewhere else.
Definition applyOptionsPragmas.cpp:13