]> git.siccegge.de Git - frida/frida.git/blobdiff - src/disassembler/BasicBlock.hxx
Add basic save support (Infrastructure)
[frida/frida.git] / src / disassembler / BasicBlock.hxx
index c994d9ea02c77373f8c5f81a2ade0cf2516b9508..b3e5a89d819cfbd74c5b375919eba6dcccd7e09a 100644 (file)
@@ -1,20 +1,33 @@
 #ifndef INCLUDE__BasicBlock_hxx
 #define INCLUDE__BasicBlock_hxx
 
+#include <cassert>
+#include <string>
+#include <sstream>
+
 class BasicBlock {
 public:
-    BasicBlock() {}
+       BasicBlock() {
+               next_blocks[0] = 0;
+               next_blocks[1] = 0;
+       }
+
+       uint64_t getStartAddress() const {
+               return start_address;
+       }
 
-    uint64_t getStartAddress() const {
-        return start_address;
-    }
+       uint64_t getEndAddress() const {
+               return end_address;
+       }
 
-    uint64_t getEndAddress() const {
-        return end_address;
-    }
+       uint64_t getNextBlock(size_t index) const {
+               assert(index < 2);
+               return next_blocks[index];
+       }
 
-       BasicBlock * const * getNextBlocks() const {
-               return next_blocks;
+       void setNextBlock(size_t index, uint64_t address) {
+               assert(index < 2);
+               next_blocks[index] = address;
        }
 
        void setStartAddress(uint64_t address) {
@@ -25,11 +38,17 @@ public:
                end_address = address;
        }
 
+       std::string getName() {
+               std::stringstream s;
+               s << "BLOCK_" << std::hex << start_address << '_' << end_address;
+               return s.str();
+       }
+
 private:
-    uint64_t start_address;
-    uint64_t end_address;
+       uint64_t start_address;
+       uint64_t end_address;
 
-    BasicBlock * next_blocks[2];
+       uint64_t next_blocks[2];
 };
 
 #endif