P4C
The P4 Compiler
Loading...
Searching...
No Matches
trace_event.h
1/*
2 * SPDX-FileCopyrightText: 2023 The P4 Language Consortium
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
7#ifndef BACKENDS_P4TOOLS_COMMON_LIB_TRACE_EVENT_H_
8#define BACKENDS_P4TOOLS_COMMON_LIB_TRACE_EVENT_H_
9
10#include <iosfwd>
11
12#include "backends/p4tools/common/lib/model.h"
13#include "backends/p4tools/common/lib/symbolic_env.h"
14#include "ir/visitor.h"
15#include "lib/castable.h"
16
17namespace P4::P4Tools {
18
20class TraceEvent : public ICastable {
21 private:
22 friend std::ostream &operator<<(std::ostream &os, const TraceEvent &event);
23
24 public:
25 virtual ~TraceEvent() = default;
26 TraceEvent();
27
31 [[nodiscard]] virtual const TraceEvent *subst(const SymbolicEnv &env) const;
32
34 virtual const TraceEvent *apply(Transform &visitor) const;
35
38 [[nodiscard]] virtual const TraceEvent *evaluate(const Model &model, bool doComplete) const;
39
40 protected:
42 virtual void print(std::ostream &) const = 0;
43
44 DECLARE_TYPEINFO(TraceEvent);
45};
46
47} // namespace P4::P4Tools
48
49#endif /* BACKENDS_P4TOOLS_COMMON_LIB_TRACE_EVENT_H_ */
Definition castable.h:27
Definition backends/p4tools/common/lib/model.h:24
Definition symbolic_env.h:18
virtual const TraceEvent * apply(Transform &visitor) const
Applies the given IR transform to the expressions in this trace event.
Definition trace_event.cpp:18
virtual void print(std::ostream &) const =0
Prints this trace event to the given ostream.
virtual const TraceEvent * subst(const SymbolicEnv &env) const
Definition trace_event.cpp:16
virtual const TraceEvent * evaluate(const Model &model, bool doComplete) const
Definition trace_event.cpp:20
Definition visitor.h:442
Definition common/compiler/compiler_result.cpp:7