summaryrefslogtreecommitdiff
path: root/src/plugins/cpptools/cpptoolsplugin.cpp
diff options
context:
space:
mode:
authorOrgad Shaneh <orgad.shaneh@audiocodes.com>2014-01-20 09:15:50 +0200
committerPetar Perisin <petar.perisin@gmail.com>2014-01-21 12:20:15 +0100
commit1fd576c1f6fdb96e7c65b7c6fde724e46cee43b2 (patch)
tree5b7c97180daf1f9bced0554f3132b8cfc5862722 /src/plugins/cpptools/cpptoolsplugin.cpp
parent4eff289e039be6205cdfdd3d4a046d2018702675 (diff)
downloadqt-creator-1fd576c1f6fdb96e7c65b7c6fde724e46cee43b2.tar.gz
C++: Add support for prefixes in switch header/source
Task-number: QTCREATORBUG-11031 Change-Id: I93cce0ebf46984eb06094e1f1519717be2bbaa79 Reviewed-by: Orgad Shaneh <orgads@gmail.com> Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
Diffstat (limited to 'src/plugins/cpptools/cpptoolsplugin.cpp')
-rw-r--r--src/plugins/cpptools/cpptoolsplugin.cpp35
1 files changed, 35 insertions, 0 deletions
diff --git a/src/plugins/cpptools/cpptoolsplugin.cpp b/src/plugins/cpptools/cpptoolsplugin.cpp
index 8dc5e4c95e..e469471245 100644
--- a/src/plugins/cpptools/cpptoolsplugin.cpp
+++ b/src/plugins/cpptools/cpptoolsplugin.cpp
@@ -106,6 +106,17 @@ const QStringList &CppToolsPlugin::sourceSearchPaths()
return m_instance->m_fileSettings->sourceSearchPaths;
}
+const QStringList &CppToolsPlugin::headerPrefixes()
+{
+ return m_instance->m_fileSettings->headerPrefixes;
+}
+
+const QStringList &CppToolsPlugin::sourcePrefixes()
+{
+ return m_instance->m_fileSettings->sourcePrefixes;
+}
+
+
bool CppToolsPlugin::initialize(const QStringList &arguments, QString *error)
{
Q_UNUSED(arguments)
@@ -256,6 +267,28 @@ static QStringList baseNameWithAllSuffixes(const QString &baseName, const QStrin
return result;
}
+static QStringList baseNamesWithAllPrefixes(const QStringList &baseNames, bool isHeader)
+{
+ QStringList result;
+ const QStringList &sourcePrefixes = m_instance->sourcePrefixes();
+ const QStringList &headerPrefixes = m_instance->headerPrefixes();
+
+ foreach (const QString &name, baseNames) {
+ foreach (const QString &prefix, isHeader ? headerPrefixes : sourcePrefixes) {
+ if (name.startsWith(prefix)) {
+ QString nameWithoutPrefix = name.mid(prefix.size());
+ result += nameWithoutPrefix;
+ foreach (const QString &prefix, isHeader ? sourcePrefixes : headerPrefixes)
+ result += prefix + nameWithoutPrefix;
+ }
+ }
+ foreach (const QString &prefix, isHeader ? sourcePrefixes : headerPrefixes)
+ result += prefix + name;
+
+ }
+ return result;
+}
+
static QStringList baseDirWithAllDirectories(const QDir &baseDir, const QStringList &directories)
{
QStringList result;
@@ -346,6 +379,8 @@ QString correspondingHeaderOrSource(const QString &fileName, bool *wasHeader)
: m_instance->headerSearchPaths();
candidateDirs += baseDirWithAllDirectories(absoluteDir, searchPaths);
+ candidateFileNames += baseNamesWithAllPrefixes(candidateFileNames, isHeader);
+
// Try to find a file in the same or sibling directories first
foreach (const QString &candidateDir, candidateDirs) {
foreach (const QString &candidateFileName, candidateFileNames) {