ROSE  0.11.145.0
MemoryExit.h
1 #ifndef ROSE_BinaryAnalysis_Concolic_Callback_MemoryExit_H
2 #define ROSE_BinaryAnalysis_Concolic_Callback_MemoryExit_H
3 #include <featureTests.h>
4 #ifdef ROSE_ENABLE_CONCOLIC_TESTING
5 #include <Rose/BinaryAnalysis/Concolic/SharedMemory.h>
6 
7 #include <Sawyer/Optional.h>
8 
9 namespace Rose {
10 namespace BinaryAnalysis {
11 namespace Concolic {
12 namespace Callback {
13 
26 class MemoryExit: public SharedMemoryCallback {
27 public:
29  using Ptr = MemoryExitPtr;
30 
31 private:
33 
34 protected:
35  explicit MemoryExit(const std::string &name);
36  MemoryExit(const AddressInterval&, const std::string &name, const Sawyer::Optional<uint8_t> &status);
37 public:
38  ~MemoryExit();
39 
40 public:
42  static Ptr instance(const AddressInterval&);
43 
45  static Ptr instance(const AddressInterval&, const Sawyer::Optional<uint8_t> &status);
46 
48  static Ptr factory();
49 
55  const Sawyer::Optional<uint8_t>& status() const;
56  void status(const Sawyer::Optional<uint8_t>&);
59 public:
60  virtual SharedMemoryCallbackPtr instanceFromFactory(const AddressInterval&, const Yaml::Node &config) const override;
61  virtual void playback(SharedMemoryContext&) override;
62  virtual void handlePreSharedMemory(SharedMemoryContext &ctx) override;
63 };
64 
65 } // namespace
66 } // namespace
67 } // namespace
68 } // namespace
69 
70 #endif
71 #endif
Holds a value or nothing.
Definition: Optional.h:49
Main namespace for the ROSE library.
Sawyer::SharedPointer< Node > Ptr
Reference counting pointer.