C++: handle case-insensitive file names in the CPlusPlus::Snapshot

... by keying on Utils::FileName

Task-number: QTCREATORBUG-12390
Change-Id: Ia98afb5a9160a7fd9225a2f9e02539ff3c35ae86
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
This commit is contained in:
Erik Verbruggen
2014-11-27 12:11:46 +01:00
committed by Erik Verbruggen
parent a8ece5e9b0
commit a48adcf9be
16 changed files with 141 additions and 78 deletions

View File

@@ -37,6 +37,8 @@
#include <cplusplus/PreprocessorClient.h>
#include <cplusplus/DependencyTable.h>
#include <utils/fileutils.h>
#include <QSharedPointer>
#include <QDateTime>
#include <QHash>
@@ -395,7 +397,7 @@ private:
class CPLUSPLUS_EXPORT Snapshot
{
typedef QHash<QString, Document::Ptr> Base;
typedef QHash<Utils::FileName, Document::Ptr> Base;
public:
Snapshot();
@@ -409,20 +411,32 @@ public:
bool isEmpty() const;
void insert(Document::Ptr doc); // ### remove
void remove(const QString &fileName); // ### remove
void remove(const Utils::FileName &fileName); // ### remove
void remove(const QString &fileName)
{ remove(Utils::FileName::fromString(fileName)); }
const_iterator begin() const { return _documents.begin(); }
const_iterator end() const { return _documents.end(); }
bool contains(const QString &fileName) const;
Document::Ptr document(const QString &fileName) const;
bool contains(const Utils::FileName &fileName) const;
bool contains(const QString &fileName) const
{ return contains(Utils::FileName::fromString(fileName)); }
const_iterator find(const QString &fileName) const;
Document::Ptr document(const Utils::FileName &fileName) const;
Document::Ptr document(const QString &fileName) const
{ return document(Utils::FileName::fromString(fileName)); }
const_iterator find(const Utils::FileName &fileName) const;
const_iterator find(const QString &fileName) const
{ return find(Utils::FileName::fromString(fileName)); }
Snapshot simplified(Document::Ptr doc) const;
Document::Ptr preprocessedDocument(const QByteArray &source,
const QString &fileName) const;
const Utils::FileName &fileName) const;
Document::Ptr preprocessedDocument(const QByteArray &source,
const QString &fileName) const
{ return preprocessedDocument(source, Utils::FileName::fromString(fileName)); }
Document::Ptr documentFromSource(const QByteArray &preprocessedDocument,
const QString &fileName) const;
@@ -430,7 +444,9 @@ public:
QSet<QString> allIncludesForDocument(const QString &fileName) const;
QList<IncludeLocation> includeLocationsOfDocument(const QString &fileName) const;
QStringList filesDependingOn(const QString &fileName) const;
Utils::FileNameList filesDependingOn(const Utils::FileName &fileName) const;
Utils::FileNameList filesDependingOn(const QString &fileName) const
{ return filesDependingOn(Utils::FileName::fromString(fileName)); }
void updateDependencyTable() const;
bool operator==(const Snapshot &other) const;