From be4a0306965aecc701b0890d5339ed7f596e7793 Mon Sep 17 00:00:00 2001 From: Erik Verbruggen Date: Thu, 27 Nov 2014 10:49:18 +0100 Subject: C++: handle case-insensitive file names in the WorkingCopy ... by keying on Utils::FileName Task-number: QTCREATORBUG-12390 Change-Id: Ia1a59d2e422b4f92300ac6a8e0e52dd7456a6e70 Reviewed-by: Eike Ziller Reviewed-by: Nikolai Kosjar --- .../cpptools/cppcodemodelinspectordumper.cpp | 4 ++-- src/plugins/cpptools/cppmodelmanager_test.cpp | 4 ++-- src/plugins/cpptools/cppworkingcopy.h | 23 +++++++++++++++++++--- 3 files changed, 24 insertions(+), 7 deletions(-) (limited to 'src/plugins/cpptools') diff --git a/src/plugins/cpptools/cppcodemodelinspectordumper.cpp b/src/plugins/cpptools/cppcodemodelinspectordumper.cpp index 32c420b217..e0f44277c4 100644 --- a/src/plugins/cpptools/cppcodemodelinspectordumper.cpp +++ b/src/plugins/cpptools/cppcodemodelinspectordumper.cpp @@ -580,10 +580,10 @@ void Dumper::dumpWorkingCopy(const WorkingCopy &workingCopy) m_out << "Working Copy contains " << workingCopy.size() << " entries{{{1\n"; const QByteArray i1 = indent(1); - QHashIterator > it = workingCopy.iterator(); + QHashIterator<::Utils::FileName, QPair > it = workingCopy.iterator(); while (it.hasNext()) { it.next(); - const QString filePath = it.key(); + const ::Utils::FileName &filePath = it.key(); unsigned sourcRevision = it.value().second; m_out << i1 << "rev=" << sourcRevision << ", " << filePath << "\n"; } diff --git a/src/plugins/cpptools/cppmodelmanager_test.cpp b/src/plugins/cpptools/cppmodelmanager_test.cpp index 0e7b35f364..bb0641a779 100644 --- a/src/plugins/cpptools/cppmodelmanager_test.cpp +++ b/src/plugins/cpptools/cppmodelmanager_test.cpp @@ -684,10 +684,10 @@ void CppToolsPlugin::test_modelmanager_extraeditorsupport_uiFiles() QCOMPARE(workingCopy.size(), 2); // mm->configurationFileName() and "ui_*.h" QStringList fileNamesInWorkinCopy; - QHashIterator > it = workingCopy.iterator(); + QHashIterator > it = workingCopy.iterator(); while (it.hasNext()) { it.next(); - fileNamesInWorkinCopy << QFileInfo(it.key()).fileName(); + fileNamesInWorkinCopy << QFileInfo(it.key().toString()).fileName(); } fileNamesInWorkinCopy.sort(); const QString expectedUiHeaderFileName = _("ui_mainwindow.h"); diff --git a/src/plugins/cpptools/cppworkingcopy.h b/src/plugins/cpptools/cppworkingcopy.h index 4507c46127..088fd22a1e 100644 --- a/src/plugins/cpptools/cppworkingcopy.h +++ b/src/plugins/cpptools/cppworkingcopy.h @@ -33,6 +33,8 @@ #include "cpptools_global.h" +#include + #include #include #include @@ -45,28 +47,43 @@ public: WorkingCopy(); void insert(const QString &fileName, const QByteArray &source, unsigned revision = 0) + { insert(Utils::FileName::fromString(fileName), source, revision); } + + void insert(const Utils::FileName &fileName, const QByteArray &source, unsigned revision = 0) { _elements.insert(fileName, qMakePair(source, revision)); } bool contains(const QString &fileName) const + { return contains(Utils::FileName::fromString(fileName)); } + + bool contains(const Utils::FileName &fileName) const { return _elements.contains(fileName); } QByteArray source(const QString &fileName) const + { return source(Utils::FileName::fromString(fileName)); } + + QByteArray source(const Utils::FileName &fileName) const { return _elements.value(fileName).first; } unsigned revision(const QString &fileName) const + { return revision(Utils::FileName::fromString(fileName)); } + + unsigned revision(const Utils::FileName &fileName) const { return _elements.value(fileName).second; } QPair get(const QString &fileName) const + { return get(Utils::FileName::fromString(fileName)); } + + QPair get(const Utils::FileName &fileName) const { return _elements.value(fileName); } - QHashIterator > iterator() const - { return QHashIterator >(_elements); } + QHashIterator > iterator() const + { return QHashIterator >(_elements); } int size() const { return _elements.size(); } private: - typedef QHash > Table; + typedef QHash > Table; Table _elements; }; -- cgit v1.2.1