]> git.siccegge.de Git - frida/frida.git/blob - src/core/InformationManager.hxx
Add in an Information Manager
[frida/frida.git] / src / core / InformationManager.hxx
1 #ifndef INCLUDE__InformationManager_hxx
2 #define INCLUDE__InformationManager_hxx
3
4 #include <boost/signals2.hpp>
5 #include <functional>
6
7 class Disassembler;
8 class Function;
9
10 class InformationManager {
11 public:
12 boost::signals2::connection
13 connect_new_function_signal(std::function<void(Function*)> f) {
14 return new_function_signal.connect(f);
15 }
16
17 void signal_new_function(Function* f) {
18 new_function_signal(f);
19 }
20
21 boost::signals2::connection
22 connect_reset_signal(std::function<void ()> f) {
23 return reset_signal.connect(f);
24 }
25
26 // boost::signals2::connection
27 // connect_information_added_signal(uint64_t begin, uint64_t end,
28 // std::function<void (uint64_t)>) {
29
30 // }
31
32 Disassembler* getDisassembler() {
33 return disassembler.get();
34 }
35
36 void reset(const std::string& filename);
37 private:
38 boost::signals2::signal<void ()> reset_signal;
39 boost::signals2::signal<void (Function*)> new_function_signal;
40 std::unique_ptr<Disassembler> disassembler;
41 };
42
43 #endif /* INCLUDE__InformationManager_hxx */