diff options
author | Orgad Shaneh <orgad.shaneh@audiocodes.com> | 2014-01-20 09:15:50 +0200 |
---|---|---|
committer | Petar Perisin <petar.perisin@gmail.com> | 2014-01-21 12:20:15 +0100 |
commit | 1fd576c1f6fdb96e7c65b7c6fde724e46cee43b2 (patch) | |
tree | 5b7c97180daf1f9bced0554f3132b8cfc5862722 /src/plugins/cpptools/cpptoolsplugin.cpp | |
parent | 4eff289e039be6205cdfdd3d4a046d2018702675 (diff) | |
download | qt-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.cpp | 35 |
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) { |