LocatorMatcher: Introduce LocatorMatcherTaskCreator

Register cpp and lsp matchers for all symbols,
classes and functions.

Change-Id: Id85c8164077ec395dac7e6ff45acc89db9e6ae08
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
Jarek Kobus
2023-04-05 08:12:43 +02:00
parent dde4a7ebf5
commit 0c3789726d
6 changed files with 90 additions and 14 deletions

View File

@@ -427,6 +427,51 @@ LocatorMatcherTask::OutputData LocatorMatcher::runBlocking(const QList<LocatorMa
return tree.outputData();
}
static QList<LocatorMatcherTaskCreator> s_locatorMatcherCreators = {};
static QList<LocatorMatcherTaskCreator> s_classMatcherCreators = {};
static QList<LocatorMatcherTaskCreator> s_functionMatcherCreators = {};
void LocatorMatcher::addLocatorMatcherCreator(const LocatorMatcherTaskCreator &creator)
{
QTC_ASSERT(creator, return);
s_locatorMatcherCreators.append(creator);
}
void LocatorMatcher::addClassMatcherCreator(const LocatorMatcherTaskCreator &creator)
{
QTC_ASSERT(creator, return);
s_classMatcherCreators.append(creator);
}
void LocatorMatcher::addFunctionMatcherCreator(const LocatorMatcherTaskCreator &creator)
{
QTC_ASSERT(creator, return);
s_functionMatcherCreators.append(creator);
}
static QList<LocatorMatcherTask> matchers(const QList<LocatorMatcherTaskCreator> &creators)
{
QList<LocatorMatcherTask> result;
for (const LocatorMatcherTaskCreator &creator : creators)
result << creator();
return result;
}
QList<LocatorMatcherTask> LocatorMatcher::locatorMatchers()
{
return matchers(s_locatorMatcherCreators);
}
QList<LocatorMatcherTask> LocatorMatcher::classMatchers()
{
return matchers(s_classMatcherCreators);
}
QList<LocatorMatcherTask> LocatorMatcher::functionMatchers()
{
return matchers(s_functionMatcherCreators);
}
static QList<ILocatorFilter *> g_locatorFilters;
/*!

View File

@@ -142,6 +142,7 @@ public:
Utils::Tasking::TreeStorage<Storage> storage;
};
using LocatorMatcherTaskCreator = std::function<QList<LocatorMatcherTask>()>;
class LocatorMatcherPrivate;
class CORE_EXPORT LocatorMatcher final : public QObject
@@ -165,6 +166,15 @@ public:
static LocatorMatcherTask::OutputData runBlocking(const QList<LocatorMatcherTask> &tasks,
const LocatorMatcherTask::InputData &input,
int parallelLimit = 0);
static void addLocatorMatcherCreator(const LocatorMatcherTaskCreator &creator);
static void addClassMatcherCreator(const LocatorMatcherTaskCreator &creator);
static void addFunctionMatcherCreator(const LocatorMatcherTaskCreator &creator);
static QList<LocatorMatcherTask> locatorMatchers();
static QList<LocatorMatcherTask> classMatchers();
static QList<LocatorMatcherTask> functionMatchers();
signals:
void serialOutputDataReady(const LocatorMatcherTask::OutputData &serialOutputData);
void done(bool success);