summaryrefslogtreecommitdiff
path: root/src/libs/cplusplus/CppDocument.cpp
diff options
context:
space:
mode:
authorErik Verbruggen <erik.verbruggen@nokia.com>2010-03-17 12:34:29 +0100
committerErik Verbruggen <erik.verbruggen@nokia.com>2010-03-17 14:20:17 +0100
commit1cc5e1fe01d83ead385ec14411e744b6cd145c85 (patch)
tree2756facd84b1919e59b70335634518beee1f09f0 /src/libs/cplusplus/CppDocument.cpp
parent6ed0cd5d32febfce07ae43d6d67624a46ce2fa82 (diff)
downloadqt-creator-1cc5e1fe01d83ead385ec14411e744b6cd145c85.tar.gz
Put the include depenency table into a separate class, and cache it when possible.
Diffstat (limited to 'src/libs/cplusplus/CppDocument.cpp')
-rw-r--r--src/libs/cplusplus/CppDocument.cpp106
1 files changed, 0 insertions, 106 deletions
diff --git a/src/libs/cplusplus/CppDocument.cpp b/src/libs/cplusplus/CppDocument.cpp
index 3cc8b36a60..3a5e21198e 100644
--- a/src/libs/cplusplus/CppDocument.cpp
+++ b/src/libs/cplusplus/CppDocument.cpp
@@ -570,109 +570,3 @@ void Snapshot::simplified_helper(Document::Ptr doc, Snapshot *snapshot) const
}
}
}
-
-QStringList Snapshot::filesDependingOn(const QString &fileName) const
-{
- const int N = size();
- QVector<QString> files(N);
- QHash<QString, int> fileIndex;
- QHash<int, QList<int> > includes;
- QVector<QBitArray> includeMap(N);
-
- dependency_helper(files, fileIndex, includes, includeMap);
-
- int index = fileIndex.value(fileName, -1);
- if (index == -1) {
- qWarning() << fileName << "not in the snapshot";
- return QStringList();
- }
-
- QStringList deps;
- for (int i = 0; i < files.size(); ++i) {
- const QBitArray &bits = includeMap.at(i);
-
- if (bits.testBit(index))
- deps.append(files.at(i));
- }
-
- return deps;
-}
-
-QHash<QString, QStringList> Snapshot::dependencyTable() const
-{
- const int N = size();
- QVector<QString> files(N);
- QHash<QString, int> fileIndex;
- QHash<int, QList<int> > includes;
- QVector<QBitArray> includeMap(N);
-
- dependency_helper(files, fileIndex, includes, includeMap);
-
- QHash<QString, QStringList> depMap;
-
- for (int index = 0; index < files.size(); ++index) {
- QStringList deps;
- for (int i = 0; i < files.size(); ++i) {
- const QBitArray &bits = includeMap.at(i);
-
- if (bits.testBit(index))
- deps.append(files.at(i));
- }
- depMap[files.at(index)] = deps;
- }
-
- return depMap;
-}
-
-void Snapshot::dependency_helper(QVector<QString> &files,
- QHash<QString, int> &fileIndex,
- QHash<int, QList<int> > &includes,
- QVector<QBitArray> &includeMap) const
-{
- int i = 0;
- for (const_iterator it = begin(); it != end(); ++it, ++i) {
- files[i] = it.key();
- fileIndex[it.key()] = i;
- }
-
- for (int i = 0; i < files.size(); ++i) {
- if (Document::Ptr doc = document(files.at(i))) {
- QBitArray bitmap(files.size());
- QList<int> directIncludes;
-
- foreach (const QString &includedFile, doc->includedFiles()) {
- int index = fileIndex.value(includedFile);
-
- if (index == -1)
- continue;
- else if (! directIncludes.contains(index))
- directIncludes.append(index);
-
- bitmap.setBit(index, true);
- }
-
- includeMap[i] = bitmap;
- includes[i] = directIncludes;
- }
- }
-
- bool changed;
-
- do {
- changed = false;
-
- for (int i = 0; i < files.size(); ++i) {
- QBitArray bitmap = includeMap.value(i);
- QBitArray previousBitmap = bitmap;
-
- foreach (int includedFileIndex, includes.value(i)) {
- bitmap |= includeMap.value(includedFileIndex);
- }
-
- if (bitmap != previousBitmap) {
- includeMap[i] = bitmap;
- changed = true;
- }
- }
- } while (changed);
-}