7#ifndef BACKENDS_P4TOOLS_MODULES_TESTGEN_LIB_COLLECT_COVERABLE_NODES_H_
8#define BACKENDS_P4TOOLS_MODULES_TESTGEN_LIB_COLLECT_COVERABLE_NODES_H_
13#include "ir/visitor.h"
14#include "midend/coverage.h"
16#include "backends/p4tools/modules/testgen/lib/execution_state.h"
18namespace P4::P4Tools::P4Testgen {
21using NodeCache = std::map<const IR::Node *, P4::Coverage::CoverageSet>;
28class CoverableNodesScanner :
public Inspector {
33 std::reference_wrapper<const ExecutionState> state;
36 std::set<int> seenParserIds;
42 bool preorder(
const IR::ParserState *parserState)
override;
43 bool preorder(
const IR::BaseAssignmentStatement *stmt)
override;
44 bool preorder(
const IR::MethodCallStatement *stmt)
override;
45 bool preorder(
const IR::ExitStatement *stmt)
override;
46 bool preorder(
const IR::MethodCallExpression *call)
override;
49 bool preorder(
const IR::P4Action *act)
override;
std::set< const IR::Node *, SourceIdCmp > CoverageSet
Definition coverage.h:47
Specifies general options and which IR nodes to track with this particular visitor.
Definition coverage.h:31