1#ifndef ROSE_BinaryAnalysis_ModelChecker_Tag_H
2#define ROSE_BinaryAnalysis_ModelChecker_Tag_H
3#include <featureTests.h>
4#ifdef ROSE_ENABLE_MODEL_CHECKER
6#include <Rose/BinaryAnalysis/ModelChecker/BasicTypes.h>
7#include <Rose/Sarif/BasicTypes.h>
10namespace BinaryAnalysis {
11namespace ModelChecker {
23class Tag:
public std::enable_shared_from_this<Tag> {
29 const size_t nodeStep_;
43 size_t nodeStep()
const;
51 virtual std::string name()
const = 0;
59 virtual std::string printableName()
const = 0;
68 virtual void print(std::ostream&,
const std::string &prefix)
const = 0;
76 virtual void toYaml(std::ostream&,
const std::string &prefix)
const = 0;
81 virtual Sarif::ResultPtr toSarif(
const Sarif::AnalysisPtr&)
const = 0;
100class NameTag:
public Tag {
102 using Ptr = NameTagPtr;
105 const std::string name_;
108 explicit NameTag(
size_t nodeStep,
const std::string &name);
114 static Ptr instance(
size_t nodeStep,
const std::string &name);
117 virtual std::string name()
const override;
118 virtual std::string printableName()
const override;
119 virtual void print(std::ostream&,
const std::string &prefix)
const override;
120 virtual void toYaml(std::ostream&,
const std::string &prefix)
const override;
121 virtual Sarif::ResultPtr toSarif(
const Sarif::AnalysisPtr&)
const override;
Sawyer::SharedPointer< Node > Ptr
Reference counting pointer.
void print(const StackVariables &, const Partitioner2::PartitionerConstPtr &, std::ostream &out, const std::string &prefix="")
Print info about multiple local variables.