ROSE  0.11.123.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/SymbolicExpression.h>
8 
9 #include <ByteOrder.h> // rose
10 
11 #include <Sawyer/IntervalMap.h>
12 
13 namespace Rose {
14 namespace BinaryAnalysis {
15 namespace Concolic {
16 namespace Callback {
17 
22 class MemoryInput: public SharedMemoryCallback {
23 private:
25  ByteMap previousReads_;
26  ByteOrder::Endianness byteOrder_;
27 
28 public:
30  using Ptr = MemoryInputPtr;
31 
32 protected:
33  MemoryInput(const std::string &name); // for factories
34  MemoryInput(const AddressInterval &where, const std::string &name, ByteOrder::Endianness);
35 public:
36  ~MemoryInput();
37 
38 public:
40  static Ptr instance(const AddressInterval &where, ByteOrder::Endianness = ByteOrder::ORDER_UNSPECIFIED);
41 
43  static Ptr factory();
44 
50  ByteOrder::Endianness byteOrder() const;
51  void byteOrder(ByteOrder::Endianness);
54 public:
55  virtual SharedMemoryCallbackPtr instanceFromFactory(const AddressInterval&, const Yaml::Node &config) const override;
56  virtual void handlePreSharedMemory(SharedMemoryContext&) override;
57  virtual void playback(SharedMemoryContext&) override;
58 };
59 
60 } // namespace
61 } // namespace
62 } // namespace
63 } // namespace
64 
65 #endif
66 #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.