ROSE  0.11.98.0
ModelChecker/Types.h
1 #ifndef ROSE_BinaryAnalysis_ModelChecker_Types_H
2 #define ROSE_BinaryAnalysis_ModelChecker_Types_H
3 #include <featureTests.h>
4 #ifdef ROSE_ENABLE_BINARY_ANALYSIS
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 Engine;
23 using EnginePtr = std::shared_ptr<Engine>;
24 
25 class ErrorTag;
26 using ErrorTagPtr = std::shared_ptr<ErrorTag>;
27 
28 class Exception;
29 
30 class ExecutionUnit;
31 using ExecutionUnitPtr = std::shared_ptr<ExecutionUnit>;
32 
33 class ExternalFunctionUnit;
34 using ExternalFunctionUnitPtr = std::shared_ptr<ExternalFunctionUnit>;
35 
36 class FailureUnit;
37 using FailureUnitPtr = std::shared_ptr<FailureUnit>;
38 
39 class FastestPathFirst;
40 using FastestPathFirstPtr = std::shared_ptr<FastestPathFirst>;
41 
42 class HasFinalTags;
43 using HasFinalTagsPtr = std::shared_ptr<HasFinalTags>;
44 
45 class InstructionUnit;
46 using InstructionUnitPtr = std::shared_ptr<InstructionUnit>;
47 
48 class LongestPathFirst;
49 using LongestPathFirstPtr = std::shared_ptr<LongestPathFirst>;
50 
51 class NameTag;
52 using NameTagPtr = std::shared_ptr<NameTag>;
53 
54 class NullDerefTag;
55 using NullDerefTagPtr = std::shared_ptr<NullDerefTag>;
56 
57 class OobTag;
58 using OobTagPtr = std::shared_ptr<OobTag>;
59 
60 class ParseError;
61 
62 class Path;
63 using PathPtr = std::shared_ptr<Path>;
64 
65 class PathNode;
66 using PathNodePtr = std::shared_ptr<PathNode>;
67 
68 class PathPredicate;
69 using PathPredicatePtr = std::shared_ptr<PathPredicate>;
70 
71 class PathPrioritizer;
72 using PathPrioritizerPtr = std::shared_ptr<PathPrioritizer>;
73 
74 class PathQueue;
75 using PathQueuePtr = std::shared_ptr<PathQueue>;
76 
77 class Periodic;
78 using PeriodicPtr = std::shared_ptr<Periodic>;
79 
80 class RandomPathFirst;
81 using RandomPathFirstPtr = std::shared_ptr<RandomPathFirst>;
82 
83 class SemanticCallbacks;
84 using SemanticCallbacksPtr = std::shared_ptr<SemanticCallbacks>;
85 
86 class Settings;
87 using SettingsPtr = std::shared_ptr<Settings>;
88 
89 class ShortestPathFirst;
90 using ShortestPathFirstPtr = std::shared_ptr<ShortestPathFirst>;
91 
92 class SourceLister;
93 using SourceListerPtr = std::shared_ptr<SourceLister>;
94 
95 class Tag;
96 using TagPtr = std::shared_ptr<Tag>;
97 
98 class UninitVarTag;
99 using UninitVarTagPtr = std::shared_ptr<UninitVarTag>;
100 
101 class WorkerStatus;
102 using WorkerStatusPtr = std::shared_ptr<WorkerStatus>;
103 
104 class WorkPredicate;
105 using WorkPredicatePtr = std::shared_ptr<WorkPredicate>;
106 
108 void initDiagnostics();
109 
110 namespace P2Model {
111  class SValue;
113 
114  class RiscOperators;
115  using RiscOperatorsPtr = boost::shared_ptr<RiscOperators>;
116 
117  class SemanticCallbacks;
118  using SemanticCallbacksPtr = std::shared_ptr<SemanticCallbacks>;
119 }
120 
122 enum class TestMode {
123  OFF,
124  MAY,
125  MUST
126 };
127 
129 enum class IoMode {
130  WRITE,
131  READ
132 };
133 
134 
135 // Worker states. Used internally.
136 enum class WorkerState {
137  STARTING, // thread is initializing
138  WAITING, // thread is looking for new work
139  WORKING, // thread is actively working on a path
140  FINISHED // thread will never work again and is cleaning up
141 };
142 
143 #define UNMANAGED_WORKER ((size_t)-1) // non-ID for an unmanaged worker; I.e., a user thread
144 
145 } // namespace
146 } // namespace
147 } // namespace
148 
149 #endif
150 #endif
Rose::BinaryAnalysis::DataFlow::Engine< DfCfg, BaseSemantics::StatePtr, TransferFunction, MergeFunction > Engine
Data-Flow engine.
boost::filesystem::path Path
Name of entities in a filesystem.
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.
TestMode
Mode by which comparisons are made.
Detection is reported only if it must occur.
Main namespace for the ROSE library.
IoMode
Direction of data wrt storage.
boost::shared_ptr< class RiscOperators > RiscOperatorsPtr
Shared-ownership pointer to concrete RISC operations.
Binary analysis.
void initDiagnostics()
Initialize diagnostics.
Detection is reported if it may occur.