1#ifndef ROSE_BinaryAnalysis_ModelChecker_BasicBlockUnit_H 
    2#define ROSE_BinaryAnalysis_ModelChecker_BasicBlockUnit_H 
    3#include <featureTests.h> 
    4#ifdef ROSE_ENABLE_MODEL_CHECKER 
    6#include <Rose/BinaryAnalysis/ModelChecker/ExecutionUnit.h> 
    7#include <Rose/BinaryAnalysis/Partitioner2/BasicTypes.h> 
   10namespace BinaryAnalysis {
 
   11namespace ModelChecker {
 
   16class BasicBlockUnit: 
public ExecutionUnit {
 
   18    using Ptr = BasicBlockUnitPtr;
 
   21    Partitioner2::PartitionerConstPtr partitioner_;     
 
   22    Partitioner2::BasicBlockPtr bblock_;
 
   25    BasicBlockUnit() = 
delete;
 
   26    BasicBlockUnit(
const Partitioner2::PartitionerConstPtr &partitioner, 
const Partitioner2::BasicBlockPtr&);
 
   36    static Ptr instance(
const Partitioner2::PartitionerConstPtr&, 
const Partitioner2::BasicBlockPtr&);
 
   45    Partitioner2::BasicBlockPtr basicBlock() 
const;
 
   48    virtual std::string printableName() 
const override;
 
   49    virtual void printSteps(
const SettingsPtr&, std::ostream&, 
const std::string &prefix,
 
   50                            size_t stepOrigin, 
size_t maxSteps) 
const override;
 
   51    virtual void toYamlHeader(
const SettingsPtr&, std::ostream&, 
const std::string &prefix) 
const override;
 
   52    virtual void toYamlSteps(
const SettingsPtr&, std::ostream&, 
const std::string &prefix,
 
   53                             size_t stepOrigin, 
size_t maxSteps) 
const override;
 
   54    virtual std::vector<Sarif::LocationPtr> toSarif(
size_t maxSteps) 
const override;
 
   55    virtual size_t nSteps() 
const override;
 
   57    virtual bool containsUnknownInsn() 
const override;
 
   59    virtual std::vector<TagPtr>
 
   60    execute(
const SettingsPtr&, 
const SemanticCallbacksPtr&,
 
   61            const InstructionSemantics::BaseSemantics::RiscOperatorsPtr&) 
override;
 
Holds a value or nothing.
 
Sawyer::SharedPointer< Node > Ptr
Reference counting pointer.