]> git.siccegge.de Git - frida/frida.git/blob - src/core/InformationManager.hxx
Add dynamically linked symbols
[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 #include <string>
7
8 class Disassembler;
9 class Function;
10
11 class InformationManager {
12 public:
13 boost::signals2::connection
14 connect_new_function_signal(std::function<void(Function*)> f) {
15 return new_function_signal.connect(f);
16 }
17
18 void signal_new_function(Function* f) {
19 new_function_signal(f);
20 }
21
22 boost::signals2::connection
23 connect_new_dyn_symbol_signal(std::function<void(const std::string& name)> f) {
24 return new_dyn_symbol_signal.connect(f);
25 }
26
27 void signal_new_dyn_symbol(const std::string& f) {
28 new_dyn_symbol_signal(f);
29 }
30
31 boost::signals2::connection
32 connect_reset_signal(std::function<void ()> f) {
33 return reset_signal.connect(f);
34 }
35
36 // boost::signals2::connection
37 // connect_information_added_signal(uint64_t begin, uint64_t end,
38 // std::function<void (uint64_t)>) {
39
40 // }
41
42 Disassembler* getDisassembler() {
43 return disassembler.get();
44 }
45
46 void reset(const std::string& filename);
47 private:
48 boost::signals2::signal<void ()> reset_signal;
49 boost::signals2::signal<void (Function*)> new_function_signal;
50 boost::signals2::signal<void (const std::string& name)> new_dyn_symbol_signal;
51 std::unique_ptr<Disassembler> disassembler;
52 };
53
54 #endif /* INCLUDE__InformationManager_hxx */