ROSE  0.11.145.0
ExecutionLocation.h
1 #ifndef ROSE_BinaryAnalysis_Concolic_ExecutionLocation_H
2 #define ROSE_BinaryAnalysis_Concolic_ExecutionLocation_H
3 #include <featureTests.h>
4 #ifdef ROSE_ENABLE_CONCOLIC_TESTING
5 #include <Rose/BinaryAnalysis/Concolic/BasicTypes.h>
6 
7 namespace Rose {
8 namespace BinaryAnalysis {
9 namespace Concolic {
10 
17 class ExecutionLocation {
18 private:
19  uint64_t primary_ = 0;
20  uint64_t secondary_ = 0;
21  When when_ = When::POST;
22 
23 public:
24  ExecutionLocation() {}
25 
26  ExecutionLocation(uint64_t primary, uint64_t secondary, When when = When::PRE)
27  : primary_(primary), secondary_(secondary), when_(when) {}
28 
29 public:
33  uint64_t primary() const {
34  return primary_;
35  }
36 
42  uint64_t secondary() const {
43  return secondary_;
44  }
45 
51  When when() const {
52  return when_;
53  }
54 
56  ExecutionLocation nextPrimary() const;
57 
61  ExecutionLocation nextSecondary(When) const;
62 
64  std::string toString() const;
65 
67  void print(std::ostream&) const;
68 
72  bool operator<(const ExecutionLocation &other) const;
73 
77  static bool isSorted(const ExecutionLocation &a, const ExecutionLocation &b);
78 };
79 
80 std::ostream& operator<<(std::ostream&, const ExecutionLocation&);
81 
82 } // namespace
83 } // namespace
84 } // namespace
85 
86 #endif
87 #endif
Main namespace for the ROSE library.
When
When something should be done.
Definition: ud/BasicTypes.h:23
ROSE_UTIL_API std::string toString(const Path &)
Convert a path to a string.
void print(const StackVariables &, const Partitioner2::PartitionerConstPtr &, std::ostream &out, const std::string &prefix="")
Print info about multiple local variables.