void CMakeTool::parseFunctionDetailsOutput(const QString &output) { QSet<QString> functionSet; functionSet.fromList(m_functions); bool expectDefinition = false; QString currentDefinition; const QStringList lines = output.split('\n'); for (int i = 0; i < lines.count(); ++i) { const QString line = lines.at(i); if (line == "::") { expectDefinition = true; continue; } if (expectDefinition) { if (!line.startsWith(' ') && !line.isEmpty()) { expectDefinition = false; QStringList words = parseDefinition(currentDefinition); if (!words.isEmpty()) { const QString command = words.takeFirst(); if (functionSet.contains(command)) { QStringList tmp = words + m_functionArgs[command]; Utils::sort(tmp); m_functionArgs[command] = Utils::filteredUnique(tmp); } } if (!words.isEmpty() && functionSet.contains(words.at(0))) m_functionArgs[words.at(0)]; currentDefinition.clear(); } else { currentDefinition.append(line.trimmed() + ' '); } } } }