make the std::map dumper work with keys that already have a const

qualification like 'const char *'
This commit is contained in:
hjk
2008-12-17 15:46:27 +01:00
parent fff7acad55
commit 04c4a0ec72
3 changed files with 21 additions and 3 deletions

View File

@@ -3022,8 +3022,13 @@ void GdbEngine::runCustomDumper(const WatchData & data0, bool dumpChildren)
} else if (outertype == "std::map") {
// We don't want the comparator and the allocator confuse gdb.
// But we need the offset of the second item in the value pair.
extraArgs[2] = "(size_t)&(('std::pair<const " + inners.at(0)
+ "," + inners.at(1) + ">'*)0)->second";
// We read the type of the pair from the allocator argument because
// that gets the constness "right" (in the sense that gdb can
// read it back;
QString pairType = inners.at(3);
// remove 'std::allocator<...>':
pairType = pairType.mid(15, pairType.size() - 15 - 2);
extraArgs[2] = "(size_t)&(('" + pairType + "'*)0)->second";
extraArgs[3] = "0";
} else if (outertype == "std::basic_string") {
//qDebug() << "EXTRACT TEMPLATE: " << outertype << inners;