#include <quazip/quazip.h>
#include <quazip/quazipfile.h>
+InformationManager::InformationManager()
+ : logger(log4cxx::Logger::getLogger("InformationManager"))
+{}
+
InformationManager::~InformationManager() {
for (auto b : blocks)
delete b.second;
stream.setAutoFormatting(true);
stream.setAutoFormattingIndent(-1);
stream.writeStartDocument();
- stream.writeStartElement("function");
- stream.writeAttribute("name", fun->getName().c_str());
- stream.writeAttribute("entry", QString::number(fun->getStartAddress(), 16));
-
- for (auto& blockentry : fun->blocks()) {
- stream.writeStartElement("block");
- stream.writeAttribute("id", blockentry.second->getName().c_str());
- stream.writeTextElement("start", QString::number(blockentry.second->getStartAddress(), 16));
- stream.writeTextElement("end", QString::number(blockentry.second->getEndAddress(), 16));
- if (0 != blockentry.second->getNextBlock(0))
- stream.writeTextElement("next", QString::number(blockentry.second->getNextBlock(0), 16));
- if (0 != blockentry.second->getNextBlock(1))
- stream.writeTextElement("next", QString::number(blockentry.second->getNextBlock(1), 16));
- stream.writeEndElement(); // "block"
- }
-
- stream.writeEndElement(); // "function"
+
+ fun->serialize(stream);
+
stream.writeEndDocument();
outZipFile.close();
}
}
void InformationManager::finishFunction(Function* fun) {
+ LOG4CXX_DEBUG(logger, "Finishing function " << fun->getName());
for (auto b : fun->blocks()) {
BasicBlock* bl = b.second;
blocks.insert(std::make_pair(bl->getStartAddress(), bl));