From 2f7b8fe4b2afb6b3bd47f0976b8f9a10de4b48fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Marjam=C3=A4ki?= Date: Mon, 14 Jul 2014 19:25:30 +0200 Subject: [PATCH] xml dump: fixed some minor issues in symboldatabase dump --- lib/symboldatabase.cpp | 42 ++++++++++++++++++++++++++++++++++-------- 1 file changed, 34 insertions(+), 8 deletions(-) diff --git a/lib/symboldatabase.cpp b/lib/symboldatabase.cpp index 0f542730c..10a8d3cd5 100644 --- a/lib/symboldatabase.cpp +++ b/lib/symboldatabase.cpp @@ -2074,6 +2074,32 @@ void SymbolDatabase::printOut(const char *title) const } } +static std::string toxml(const std::string &str) +{ + std::ostringstream xml; + for (std::size_t i = 0U; i < str.length(); i++) { + char c = str[i]; + switch (c) { + case '<': + xml << "<"; + break; + case '>': + xml << ">"; + break; + case '&': + xml << "&"; + break; + case '\"': + xml << """; + break; + default: + xml << c; + break; + } + } + return xml.str(); +} + void SymbolDatabase::printXml(std::ostream &out) const { // Scopes.. @@ -2083,7 +2109,7 @@ void SymbolDatabase::printXml(std::ostream &out) const out << " id=\"" << &*scope << "\""; out << " type=\"" << scope->type << "\""; if (!scope->className.empty()) - out << " className=\"" << scope->className << "\""; + out << " className=\"" << toxml(scope->className) << "\""; if (scope->nestedIn) out << " nestedIn=\"" << scope->nestedIn << "\""; if (scope->functionList.empty() && scope->varlist.empty()) { @@ -2107,14 +2133,14 @@ void SymbolDatabase::printXml(std::ostream &out) const } out << " " << std::endl; } + if (!scope->varlist.empty()) { + out << " " << std::endl; + for (std::list::const_iterator var = scope->varlist.begin(); var != scope->varlist.end(); ++var) + out << " " << std::endl; + out << " " << std::endl; + } + out << " " << std::endl; } - if (!scope->varlist.empty()) { - out << " " << std::endl; - for (std::list::const_iterator var = scope->varlist.begin(); var != scope->varlist.end(); ++var) - out << " " << std::endl; - out << " " << std::endl; - } - out << " " << std::endl; } out << " " << std::endl;