aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMarco Bubke <marco.bubke@qt.io>2018-04-05 10:58:33 +0200
committerMarco Bubke <marco.bubke@qt.io>2018-04-12 13:12:08 +0000
commitee85cf4518ef67f25adcbdaf62d54cc93e614648 (patch)
treefb5134eaec1c77d096894c79b06be3f2b0d40ebf /src
parentb0fd6c30ce7c6d08289310c6f55352d12e4daaf8 (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')
-rw-r--r--src/libs/clangsupport/clangsupport_global.h21
-rw-r--r--src/libs/clangsupport/refactoringdatabaseinitializer.h2
-rw-r--r--src/plugins/clangpchmanager/pchmanagerconnectionclient.cpp7
-rw-r--r--src/plugins/clangrefactoring/clangrefactoring.pro3
-rw-r--r--src/plugins/clangrefactoring/symbolquery.cpp30
-rw-r--r--src/tools/clangpchmanagerbackend/clangpchmanagerbackendmain.cpp13
-rw-r--r--src/tools/clangrefactoringbackend/source/clangrefactoringbackend-source.pri1
-rw-r--r--src/tools/clangrefactoringbackend/source/storagesqlitestatementfactory.h7
-rw-r--r--src/tools/clangrefactoringbackend/source/symbolentry.h23
-rw-r--r--src/tools/clangrefactoringbackend/source/symbolstorage.cpp30
-rw-r--r--src/tools/clangrefactoringbackend/source/symbolstorage.h3
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));
}
}