#include "core/Function.hxx"
#include "core/BasicBlock.hxx"
#include "core/Comment.hxx"
+#include "core/events/NewFunctionEvent.hxx"
#include "gui/qt.hxx"
#include <quazip/quazip.h>
zip.close();
}
-void InformationManager::signal_new_function(Function* fun) {
-}
-
-
/* *******************************
* Accessors for the Functions map
*/
Function* InformationManager::newFunction(uint64_t address) {
- Function* fun = new Function(address, this);
+ Function* fun = new Function(address, false, this);
+ functions.insert(std::make_pair(address, fun));
+ return fun;
+}
+
+Function* InformationManager::newDynamicFunction(uint64_t address) {
+ Function* fun = new Function(address, true, this);
functions.insert(std::make_pair(address, fun));
return fun;
}
}
Comment* InformationManager::newGlobalComment(uint64_t address) {
- return NULL;
+ Comment* comment = new Comment(address, this);
+ comments.insert(std::make_pair(address, comment));
+ return comment;
}
Comment* InformationManager::newLocalComment(uint64_t address, Function* f) {
- return NULL;
+ Comment* comment = new Comment(address, this);
+ comments.insert(std::make_pair(address, comment));
+ return comment;
}
void InformationManager::finishFunction(Function* fun) {
BasicBlock* bl = b.second;
blocks.insert(std::make_pair(bl->getStartAddress(), bl));
}
- new_function_signal(fun);
+ NewFunctionEvent event(fun->getStartAddress(), fun);
+ dispatch(&event);
}
-void InformationManager::finishBasicBlock(BasicBlock* b) {
+void InformationManager::finishBasicBlock(BasicBlock*) {
}
void InformationManager::finnishComment(Comment* c) {
}
void InformationManager::deleteComment(Comment* c) {
+ auto range = comments.equal_range(c->getAddress());
+ for (auto it = range.first; it != range.second; ++it) {
+ if (it->second == c) {
+ comments.erase(it);
+ break;
+ }
+ }
delete c;
}