P4C
The P4 Compiler
Loading...
Searching...
No Matches
P4::P4Tools::TraceEvent Class Referenceabstract

An event in a trace of the execution of a P4 program. More...

#include <trace_event.h>

Inheritance diagram for P4::P4Tools::TraceEvent:
[legend]

Public Member Functions

virtual const TraceEventapply (Transform &visitor) const
 Applies the given IR transform to the expressions in this trace event.
 
virtual const TraceEventevaluate (const Model &model, bool doComplete) const
 
virtual const TraceEventsubst (const SymbolicEnv &env) const
 
- Public Member Functions inherited from P4::ICastable
template<typename T >
T & as ()
 Tries to convert the class to type T. A BUG occurs if the cast fails.
 
template<typename T >
const T & as () const
 Tries to convert the class to type T. A BUG occurs if the cast fails.
 
template<typename T >
T * checkedTo ()
 Performs a checked cast. A BUG occurs if the cast fails.
 
template<typename T >
const T * checkedTo () const
 Performs a checked cast. A BUG occurs if the cast fails.
 
- Public Member Functions inherited from P4::RTTI::Base
template<typename T >
bool is () const noexcept
 
virtual bool isA (TypeId typeId) const noexcept=0
 
template<typename T >
const T * to () const noexcept
 Same as to, but returns const pointer to T.
 
template<typename T >
T * to () noexcept
 
virtual TypeId typeId () const noexcept=0
 

Protected Member Functions

 DECLARE_TYPEINFO (TraceEvent)
 
virtual void print (std::ostream &) const =0
 Prints this trace event to the given ostream.
 
- Protected Member Functions inherited from P4::RTTI::Base
virtual const void * toImpl (TypeId typeId) const noexcept=0
 

Friends

std::ostream & operator<< (std::ostream &os, const TraceEvent &event)
 

Detailed Description

An event in a trace of the execution of a P4 program.

Member Function Documentation

◆ apply()

const TraceEvent * P4::P4Tools::TraceEvent::apply ( Transform & visitor) const
virtual

◆ evaluate()

const TraceEvent * P4::P4Tools::TraceEvent::evaluate ( const Model & model,
bool doComplete ) const
nodiscardvirtual

Evaluates expressions in the body of this trace event for their concrete value in the given model. A BUG occurs if there are any variables that are unbound by the given model.

Reimplemented in P4::P4Tools::TraceEvents::AssignmentStatement, P4::P4Tools::TraceEvents::Emit, P4::P4Tools::TraceEvents::Expression, P4::P4Tools::TraceEvents::ExtractSuccess, P4::P4Tools::TraceEvents::IfStatementCondition, and P4::P4Tools::TraceEvents::Packet.

◆ print()

◆ subst()

const TraceEvent * P4::P4Tools::TraceEvent::subst ( const SymbolicEnv & env) const
nodiscardvirtual

Substitutes state variables in the body of this trace event for their symbolic value in the given symbolic environment. Variables that are unbound by the given environment are left untouched.

Reimplemented in P4::P4Tools::TraceEvents::AssignmentStatement, P4::P4Tools::TraceEvents::Emit, P4::P4Tools::TraceEvents::Expression, P4::P4Tools::TraceEvents::ExtractSuccess, P4::P4Tools::TraceEvents::IfStatementCondition, and P4::P4Tools::TraceEvents::Packet.