diff options
author | Marco Bubke <marco.bubke@qt.io> | 2018-04-05 10:58:33 +0200 |
---|---|---|
committer | Marco Bubke <marco.bubke@qt.io> | 2018-04-12 13:12:08 +0000 |
commit | ee85cf4518ef67f25adcbdaf62d54cc93e614648 (patch) | |
tree | fb5134eaec1c77d096894c79b06be3f2b0d40ebf /src | |
parent | b0fd6c30ce7c6d08289310c6f55352d12e4daaf8 (diff) |
Clang: Store the symbol kind in the database
It is cleaning up some other stuff too.
Change-Id: I75274356fd35f2ee8c84aedf8839c67506ab2355
Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
Diffstat (limited to 'src')
11 files changed, 48 insertions, 92 deletions
diff --git a/src/libs/clangsupport/clangsupport_global.h b/src/libs/clangsupport/clangsupport_global.h index 202ca45b93..d675d5fb11 100644 --- a/src/libs/clangsupport/clangsupport_global.h +++ b/src/libs/clangsupport/clangsupport_global.h @@ -198,4 +198,25 @@ struct HighlightingTypes { MixinHighlightingTypes mixinHighlightingTypes; }; +enum class SymbolKind : uchar +{ + None = 0, + Enumeration, + Record, + Function, + Variable, + Macro +}; + +enum class SymbolTag : uchar +{ + None = 0, + Class, + Struct, + Union, + MsvcInterface +}; + +using SymbolTags = Utils::SizedArray<SymbolTag, 7>; + } diff --git a/src/libs/clangsupport/refactoringdatabaseinitializer.h b/src/libs/clangsupport/refactoringdatabaseinitializer.h index 99e4afde8a..1123c7c930 100644 --- a/src/libs/clangsupport/refactoringdatabaseinitializer.h +++ b/src/libs/clangsupport/refactoringdatabaseinitializer.h @@ -63,7 +63,9 @@ public: table.addColumn("symbolId", Sqlite::ColumnType::Integer, Sqlite::Contraint::PrimaryKey); const Sqlite::Column &usrColumn = table.addColumn("usr", Sqlite::ColumnType::Text); table.addColumn("symbolName", Sqlite::ColumnType::Text); + const Sqlite::Column &symbolKindColumn = table.addColumn("symbolKind", Sqlite::ColumnType::Integer); table.addIndex({usrColumn}); + table.addIndex({symbolKindColumn}); table.initialize(database); } diff --git a/src/plugins/clangpchmanager/pchmanagerconnectionclient.cpp b/src/plugins/clangpchmanager/pchmanagerconnectionclient.cpp index 8528583201..812445610e 100644 --- a/src/plugins/clangpchmanager/pchmanagerconnectionclient.cpp +++ b/src/plugins/clangpchmanager/pchmanagerconnectionclient.cpp @@ -50,8 +50,13 @@ ClangPchManager::PchManagerConnectionClient::PchManagerConnectionClient( m_serverProxy(client, ioDevice()) { m_processCreator.setTemporaryDirectoryPattern("clangpchmanagerbackend-XXXXXX"); + + QDir pchsDirectory(Core::ICore::userResourcePath()); + pchsDirectory.mkdir("pchs"); + pchsDirectory.cd("pchs"); m_processCreator.setArguments({connectionName(), - Core::ICore::userResourcePath() + "/symbol-experimental-v1.db"}); + Core::ICore::userResourcePath() + "/symbol-experimental-v1.db", + pchsDirectory.absolutePath()}); stdErrPrefixer().setPrefix("PchManagerConnectionClient.stderr: "); stdOutPrefixer().setPrefix("PchManagerConnectionClient.stdout: "); diff --git a/src/plugins/clangrefactoring/clangrefactoring.pro b/src/plugins/clangrefactoring/clangrefactoring.pro index d72450fcb4..cad6bac979 100644 --- a/src/plugins/clangrefactoring/clangrefactoring.pro +++ b/src/plugins/clangrefactoring/clangrefactoring.pro @@ -41,8 +41,7 @@ SOURCES += \ qtcreatorsearch.cpp \ qtcreatorsearchhandle.cpp \ qtcreatorsymbolsfindfilter.cpp \ - symbolsfindfilterconfigwidget.cpp \ - symbolquery.cpp + symbolsfindfilterconfigwidget.cpp FORMS += \ clangqueryprojectsfindfilter.ui diff --git a/src/plugins/clangrefactoring/symbolquery.cpp b/src/plugins/clangrefactoring/symbolquery.cpp deleted file mode 100644 index a5f946266f..0000000000 --- a/src/plugins/clangrefactoring/symbolquery.cpp +++ /dev/null @@ -1,30 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of Qt Creator. -** -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 as published by the Free Software -** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -****************************************************************************/ - -#include "symbolquery.h" - -namespace ClangRefactoring { - -} // namespace ClangRefactoring diff --git a/src/tools/clangpchmanagerbackend/clangpchmanagerbackendmain.cpp b/src/tools/clangpchmanagerbackend/clangpchmanagerbackendmain.cpp index 27acd5b398..81345dc184 100644 --- a/src/tools/clangpchmanagerbackend/clangpchmanagerbackendmain.cpp +++ b/src/tools/clangpchmanagerbackend/clangpchmanagerbackendmain.cpp @@ -77,9 +77,14 @@ public: class ApplicationEnvironment : public ClangBackEnd::Environment { public: + ApplicationEnvironment(const QString &pchsPath) + : m_pchBuildDirectoryPath(pchsPath) + { + } + QString pchBuildDirectory() const override { - return temporaryDirectory.path(); + return m_pchBuildDirectoryPath; } QString clangCompilerPath() const override @@ -93,7 +98,7 @@ public: } private: - QTemporaryDir temporaryDirectory; + QString m_pchBuildDirectoryPath; }; QStringList processArguments(QCoreApplication &application) @@ -104,6 +109,7 @@ QStringList processArguments(QCoreApplication &application) parser.addVersionOption(); parser.addPositionalArgument(QStringLiteral("connection"), QStringLiteral("Connection")); parser.addPositionalArgument(QStringLiteral("databasepath"), QStringLiteral("Database path")); + parser.addPositionalArgument(QStringLiteral("pchspath"), QStringLiteral("PCHs path")); parser.process(application); @@ -128,12 +134,13 @@ int main(int argc, char *argv[]) const QStringList arguments = processArguments(application); const QString connectionName = arguments[0]; const QString databasePath = arguments[1]; + const QString pchsPath = arguments[2]; Sqlite::Database database{Utils::PathString{databasePath}, 100000ms}; ClangBackEnd::RefactoringDatabaseInitializer<Sqlite::Database> databaseInitializer{database}; ClangBackEnd::FilePathCaching filePathCache{database}; ClangPathWatcher<QFileSystemWatcher, QTimer> includeWatcher(filePathCache); - ApplicationEnvironment environment; + ApplicationEnvironment environment{pchsPath}; PchGenerator<QProcess> pchGenerator(environment); PchCreator pchCreator(environment, filePathCache); pchCreator.setGenerator(&pchGenerator); diff --git a/src/tools/clangrefactoringbackend/source/clangrefactoringbackend-source.pri b/src/tools/clangrefactoringbackend/source/clangrefactoringbackend-source.pri index b5a8893d2d..2a78fc0e11 100644 --- a/src/tools/clangrefactoringbackend/source/clangrefactoringbackend-source.pri +++ b/src/tools/clangrefactoringbackend/source/clangrefactoringbackend-source.pri @@ -39,7 +39,6 @@ SOURCES += \ $$PWD/collectmacrossourcefilecallbacks.cpp \ $$PWD/symbolscollector.cpp \ $$PWD/clangquerygatherer.cpp \ - $$PWD/symbolstorage.cpp \ $$PWD/symbolindexing.cpp \ $$PWD/indexdataconsumer.cpp diff --git a/src/tools/clangrefactoringbackend/source/storagesqlitestatementfactory.h b/src/tools/clangrefactoringbackend/source/storagesqlitestatementfactory.h index 56548f0b31..7cd05ee27b 100644 --- a/src/tools/clangrefactoringbackend/source/storagesqlitestatementfactory.h +++ b/src/tools/clangrefactoringbackend/source/storagesqlitestatementfactory.h @@ -54,6 +54,7 @@ public: const Sqlite::Column &symbolIdColumn = table.addColumn("symbolId", Sqlite::ColumnType::Integer); const Sqlite::Column &usrColumn = table.addColumn("usr", Sqlite::ColumnType::Text); const Sqlite::Column &symbolNameColumn = table.addColumn("symbolName", Sqlite::ColumnType::Text); + table.addColumn("symbolKind", Sqlite::ColumnType::Integer); table.addIndex({usrColumn, symbolNameColumn}); table.addIndex({symbolIdColumn}); @@ -115,7 +116,7 @@ public: Sqlite::Table newUsedMacroTable{createNewUsedMacrosTable()}; Sqlite::Table newNewSourceDependenciesTable{createNewSourceDependenciesTable()}; WriteStatement insertSymbolsToNewSymbolsStatement{ - "INSERT INTO newSymbols(temporarySymbolId, usr, symbolName) VALUES(?,?,?)", + "INSERT INTO newSymbols(temporarySymbolId, usr, symbolName, symbolKind) VALUES(?,?,?,?)", database}; WriteStatement insertLocationsToNewLocationsStatement{ "INSERT OR IGNORE INTO newLocations(temporarySymbolId, line, column, sourceId) VALUES(?,?,?,?)", @@ -126,8 +127,8 @@ public: database }; WriteStatement addNewSymbolsToSymbolsStatement{ - "INSERT INTO symbols(usr, symbolName) " - "SELECT usr, symbolName FROM newSymbols WHERE NOT EXISTS " + "INSERT INTO symbols(usr, symbolName, symbolKind) " + "SELECT usr, symbolName, symbolKind FROM newSymbols WHERE NOT EXISTS " "(SELECT usr FROM symbols WHERE symbols.usr == newSymbols.usr)", database }; diff --git a/src/tools/clangrefactoringbackend/source/symbolentry.h b/src/tools/clangrefactoringbackend/source/symbolentry.h index 47e1cba7ea..cc9669c682 100644 --- a/src/tools/clangrefactoringbackend/source/symbolentry.h +++ b/src/tools/clangrefactoringbackend/source/symbolentry.h @@ -27,6 +27,8 @@ #include <stringcachefwd.h> +#include <clangsupport_global.h> + #include <utils/smallstring.h> #include <utils/sizedarray.h> @@ -38,27 +40,6 @@ namespace ClangBackEnd { using SymbolIndex = long long; -enum class SymbolKind : uchar -{ - None = 0, - Enumeration, - Record, - Function, - Variable, - Macro -}; - -enum class SymbolTag : uchar -{ - None = 0, - Class, - Struct, - Union, - MsvcInterface -}; - -using SymbolTags = Utils::SizedArray<SymbolTag, 7>; - class SymbolEntry { public: diff --git a/src/tools/clangrefactoringbackend/source/symbolstorage.cpp b/src/tools/clangrefactoringbackend/source/symbolstorage.cpp deleted file mode 100644 index 793f06f882..0000000000 --- a/src/tools/clangrefactoringbackend/source/symbolstorage.cpp +++ /dev/null @@ -1,30 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of Qt Creator. -** -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 as published by the Free Software -** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -****************************************************************************/ - -#include "symbolstorage.h" - -namespace ClangBackEnd { - -} // namespace ClangBackEnd diff --git a/src/tools/clangrefactoringbackend/source/symbolstorage.h b/src/tools/clangrefactoringbackend/source/symbolstorage.h index efb45b04d4..9c307a8664 100644 --- a/src/tools/clangrefactoringbackend/source/symbolstorage.h +++ b/src/tools/clangrefactoringbackend/source/symbolstorage.h @@ -201,7 +201,8 @@ public: for (const auto &symbolEntry : symbolEntries) { statement.write(symbolEntry.first, symbolEntry.second.usr, - symbolEntry.second.symbolName); + symbolEntry.second.symbolName, + static_cast<uint>(symbolEntry.second.symbolKind)); } } |