ROSE  0.11.145.0
Types.h
1 #ifndef ROSE_BinaryAnalysis_ModelChecker_Types_H
2 #define ROSE_BinaryAnalysis_ModelChecker_Types_H
3 #include <featureTests.h>
4 #ifdef ROSE_ENABLE_MODEL_CHECKER
5 
6 #include <memory>
7 
8 namespace Rose {
9 namespace BinaryAnalysis {
10 
14 namespace ModelChecker {
15 
16 class AlwaysTrue;
17 using AlwaysTruePtr = std::shared_ptr<AlwaysTrue>;
18 
19 class BasicBlockUnit;
20 using BasicBlockUnitPtr = std::shared_ptr<BasicBlockUnit>;
21 
22 class BestCoverageFirst;
23 using BestCoverageFirstPtr = std::shared_ptr<BestCoverageFirst>;
24 
25 class Engine;
26 using EnginePtr = std::shared_ptr<Engine>;
27 
28 class ErrorTag;
29 using ErrorTagPtr = std::shared_ptr<ErrorTag>;
30 
31 class Exception;
32 
33 class ExecutionUnit;
34 using ExecutionUnitPtr = std::shared_ptr<ExecutionUnit>;
35 
36 class ExternalFunctionUnit;
37 using ExternalFunctionUnitPtr = std::shared_ptr<ExternalFunctionUnit>;
38 
39 class FailureUnit;
40 using FailureUnitPtr = std::shared_ptr<FailureUnit>;
41 
42 class FastestPathFirst;
43 using FastestPathFirstPtr = std::shared_ptr<FastestPathFirst>;
44 
45 class FoundVariable;
46 
47 class HasFinalTags;
48 using HasFinalTagsPtr = std::shared_ptr<HasFinalTags>;
49 
50 class InstructionUnit;
51 using InstructionUnitPtr = std::shared_ptr<InstructionUnit>;
52 
53 class LongestPathFirst;
54 using LongestPathFirstPtr = std::shared_ptr<LongestPathFirst>;
55 
56 class NameTag;
57 using NameTagPtr = std::shared_ptr<NameTag>;
58 
59 class NullDereferenceTag;
60 using NullDereferenceTagPtr = std::shared_ptr<NullDereferenceTag>;
61 
62 class OutOfBoundsTag;
63 using OutOfBoundsTagPtr = std::shared_ptr<OutOfBoundsTag>;
64 
65 class ParseError;
66 
67 class Path;
68 using PathPtr = std::shared_ptr<Path>;
69 
70 class PathNode;
71 using PathNodePtr = std::shared_ptr<PathNode>;
72 
73 class PathPredicate;
74 using PathPredicatePtr = std::shared_ptr<PathPredicate>;
75 
76 class PathPrioritizer;
77 using PathPrioritizerPtr = std::shared_ptr<PathPrioritizer>;
78 
79 class PathQueue;
80 using PathQueuePtr = std::shared_ptr<PathQueue>;
81 
82 class Periodic;
83 using PeriodicPtr = std::shared_ptr<Periodic>;
84 
85 class RandomPathFirst;
86 using RandomPathFirstPtr = std::shared_ptr<RandomPathFirst>;
87 
88 class SemanticCallbacks;
89 using SemanticCallbacksPtr = std::shared_ptr<SemanticCallbacks>;
90 
91 class Settings;
92 using SettingsPtr = std::shared_ptr<Settings>;
93 
94 class ShortestPathFirst;
95 using ShortestPathFirstPtr = std::shared_ptr<ShortestPathFirst>;
96 
97 class SourceLister;
98 using SourceListerPtr = std::shared_ptr<SourceLister>;
99 
100 class Tag;
101 using TagPtr = std::shared_ptr<Tag>;
102 
103 class UninitializedVariableTag;
104 using UninitializedVariableTagPtr = std::shared_ptr<UninitializedVariableTag>;
105 
106 class WorkerStatus;
107 using WorkerStatusPtr = std::shared_ptr<WorkerStatus>;
108 
109 class WorkPredicate;
110 using WorkPredicatePtr = std::shared_ptr<WorkPredicate>;
111 
113 void initDiagnostics();
114 
115 namespace PartitionerModel {
116  class SValue;
118 
119  class RiscOperators;
120  using RiscOperatorsPtr = boost::shared_ptr<RiscOperators>;
121 
122  class SemanticCallbacks;
123  using SemanticCallbacksPtr = std::shared_ptr<SemanticCallbacks>;
124 }
125 
127 enum class TestMode {
128  OFF,
129  MAY,
130  MUST
131 };
132 
134 enum class IoMode {
135  WRITE,
136  READ
137 };
138 
139 
140 // Worker states. Used internally.
141 enum class WorkerState {
142  STARTING, // thread is initializing
143  WAITING, // thread is looking for new work
144  WORKING, // thread is actively working on a path
145  FINISHED // thread will never work again and is cleaning up
146 };
147 
148 #define UNMANAGED_WORKER ((size_t)-1) // non-ID for an unmanaged worker; I.e., a user thread
149 
150 } // namespace
151 } // namespace
152 } // namespace
153 
154 #endif
155 #endif
boost::filesystem::path Path
Name of entities in a filesystem.
const char * TestMode(int64_t)
Convert Rose::BinaryAnalysis::ModelChecker::TestMode enum constant to a string.
Collection of streams.
Definition: Message.h:1606
Sawyer::SharedPointer< class SValue > SValuePtr
Smart-ownership pointer to a concrete semantic value.
ROSE_DLL_API Sawyer::Message::Facility mlog
Diagnostic facility for the ROSE library as a whole.
const char * IoMode(int64_t)
Convert Rose::BinaryAnalysis::FeasiblePath::IoMode enum constant to a string.
Main namespace for the ROSE library.
Disable colored output.
Definition: Color.h:23
Rose::BinaryAnalysis::DataFlow::Engine< DfCfg, InstructionSemantics::BaseSemantics::StatePtr, TransferFunction, MergeFunction > Engine
Data-Flow engine.
boost::shared_ptr< class RiscOperators > RiscOperatorsPtr
Shared-ownership pointer to concrete RISC operations.
Sawyer::SharedPointer< Engine > EnginePtr
Shared-ownership pointer for Engine.
const char * WorkerState(int64_t)
Convert Rose::BinaryAnalysis::ModelChecker::WorkerState enum constant to a string.
void initDiagnostics()
Initialize diagnostics.