LocatorMatcher: Introduce MatcherType enum

Use it for registering/getting different kinds of matchers.

Change-Id: I6f944e0332bf8c512892a00b8ba88f9939f34682
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
This commit is contained in:
Jarek Kobus
2023-04-11 15:02:36 +02:00
parent f5cccab95b
commit 99b5d93cfb
10 changed files with 46 additions and 73 deletions

View File

@@ -427,51 +427,23 @@ 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 = {};
static QHash<MatcherType, QList<LocatorMatcherTaskCreator>> s_matcherCreators = {};
void LocatorMatcher::addLocatorMatcherCreator(const LocatorMatcherTaskCreator &creator)
void LocatorMatcher::addMatcherCreator(MatcherType type, const LocatorMatcherTaskCreator &creator)
{
QTC_ASSERT(creator, return);
s_locatorMatcherCreators.append(creator);
s_matcherCreators[type].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> LocatorMatcher::matchers(MatcherType type)
{
const QList<LocatorMatcherTaskCreator> creators = s_matcherCreators.value(type);
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

@@ -145,6 +145,12 @@ public:
using LocatorMatcherTaskCreator = std::function<QList<LocatorMatcherTask>()>;
class LocatorMatcherPrivate;
enum class MatcherType {
AllSymbols,
Classes,
Functions
};
class CORE_EXPORT LocatorMatcher final : public QObject
{
Q_OBJECT
@@ -167,13 +173,8 @@ public:
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();
static void addMatcherCreator(MatcherType type, const LocatorMatcherTaskCreator &creator);
static QList<LocatorMatcherTask> matchers(MatcherType type);
signals:
void serialOutputDataReady(const LocatorMatcherTask::OutputData &serialOutputData);