ROSE  0.11.145.0
MemoryInput.h
1 #ifndef ROSE_BinaryAnalysis_Concolic_Callback_MemoryInput_H
2 #define ROSE_BinaryAnalysis_Concolic_Callback_MemoryInput_H
3 #include <featureTests.h>
4 #ifdef ROSE_ENABLE_CONCOLIC_TESTING
5 #include <Rose/BinaryAnalysis/Concolic/SharedMemory.h>
6 
7 #include <Rose/BinaryAnalysis/ByteOrder.h>
8 #include <Rose/BinaryAnalysis/SymbolicExpression.h>
9 
10 #include <Sawyer/IntervalMap.h>
11 
12 namespace Rose {
13 namespace BinaryAnalysis {
14 namespace Concolic {
15 namespace Callback {
16 
21 class MemoryInput: public SharedMemoryCallback {
22 private:
24  ByteMap previousReads_;
25  ByteOrder::Endianness byteOrder_;
26 
27 public:
29  using Ptr = MemoryInputPtr;
30 
31 protected:
32  MemoryInput(const std::string &name); // for factories
33  MemoryInput(const AddressInterval &where, const std::string &name, ByteOrder::Endianness);
34 public:
35  ~MemoryInput();
36 
37 public:
39  static Ptr instance(const AddressInterval &where, ByteOrder::Endianness = ByteOrder::ORDER_UNSPECIFIED);
40 
42  static Ptr factory();
43 
49  ByteOrder::Endianness byteOrder() const;
50  void byteOrder(ByteOrder::Endianness);
53 public:
54  virtual SharedMemoryCallbackPtr instanceFromFactory(const AddressInterval&, const Yaml::Node &config) const override;
55  virtual void handlePreSharedMemory(SharedMemoryContext&) override;
56  virtual void playback(SharedMemoryContext&) override;
57 };
58 
59 } // namespace
60 } // namespace
61 } // namespace
62 } // namespace
63 
64 #endif
65 #endif
An associative container whose keys are non-overlapping intervals.
Definition: IntervalMap.h:171
Main namespace for the ROSE library.
Sawyer::SharedPointer< Node > Ptr
Reference counting pointer.