Don't use the mime type db to reorder the source files.

It seems that the mime type db got pretty slow, and reordering files
can take minutes.
This commit is contained in:
Roberto Raggi
2010-05-07 10:23:37 +02:00
parent f9e6a96395
commit 9e7c13721e

View File

@@ -1326,41 +1326,6 @@ void CppModelManager::updateIncludesInPaths(QFutureInterface<void> &future,
future.reportFinished();
}
// Function that sorts headers and sources apart to be used for
// MimeDB::findByFile() on a sequence of file names.
class HeaderSourceSorter {
public:
explicit HeaderSourceSorter(QStringList *sources, QStringList *headers);
void operator()(const Core::MimeType &, const QFileInfo &, const QString &);
private:
QStringList m_sourceMimeTypes;
QStringList m_headerMimeTypes;
QStringList *m_sources;
QStringList *m_headers;
};
HeaderSourceSorter::HeaderSourceSorter(QStringList *sources, QStringList *headers) :
m_sources(sources),
m_headers(headers)
{
m_headerMimeTypes << QLatin1String("text/x-hdr") << QLatin1String("text/x-c++hdr");
m_sourceMimeTypes << QLatin1String("text/x-csrc") << QLatin1String("text/x-c++src")
<< QLatin1String("text/x-objcsrc");
}
void HeaderSourceSorter::operator()(const Core::MimeType &mimeType, const QFileInfo &, const QString &name)
{
if (mimeType) {
if (m_sourceMimeTypes.contains(mimeType.type())) {
m_sources->append(name);
} else if (m_headerMimeTypes.contains(mimeType.type())) {
m_headers->append(name);
}
}
}
void CppModelManager::parse(QFutureInterface<void> &future,
CppPreprocessor *preproc,
QStringList files)
@@ -1368,14 +1333,28 @@ void CppModelManager::parse(QFutureInterface<void> &future,
if (files.isEmpty())
return;
foreach (const QString &file, files)
preproc->snapshot.remove(file);
const Core::MimeDatabase *mimeDb = Core::ICore::instance()->mimeDatabase();
Core::MimeType cSourceTy = mimeDb->findByType(QLatin1String("text/x-csrc"));
Core::MimeType cppSourceTy = mimeDb->findByType(QLatin1String("text/x-c++src"));
Core::MimeType mSourceTy = mimeDb->findByType(QLatin1String("text/x-objcsrc"));
QStringList sources;
QStringList headers;
const Core::MimeDatabase *mimeDb = Core::ICore::instance()->mimeDatabase();
mimeDb->findByFile(files.constBegin(), files.constEnd(),
HeaderSourceSorter(&sources, &headers));
QStringList suffixes = cSourceTy.suffixes();
suffixes += cppSourceTy.suffixes();
suffixes += mSourceTy.suffixes();
foreach (const QString &file, files) {
QFileInfo info(file);
preproc->snapshot.remove(file);
if (suffixes.contains(info.suffix()))
sources.append(file);
else
headers.append(file);
}
const int sourceCount = sources.size();
files = sources;