CPlusPlus: Make Usage::Type QFlags-based

We want to extend the enum with more non-exclusive values.

Change-Id: I4d8ebe1f7327139c7817b9f621b4b74a883c5e09
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
Christian Kandeler
2022-11-02 12:16:38 +01:00
parent 0b1d265991
commit d891e18edc
7 changed files with 422 additions and 424 deletions

View File

@@ -41,20 +41,13 @@ using namespace std::placeholders;
namespace CppEditor {
SearchResultColor::Style colorStyleForUsageType(CPlusPlus::Usage::Type type)
SearchResultColor::Style colorStyleForUsageType(CPlusPlus::Usage::Tags tags)
{
switch (type) {
case CPlusPlus::Usage::Type::Read:
if (tags.testFlag(CPlusPlus::Usage::Tag::Read))
return SearchResultColor::Style::Alt1;
case CPlusPlus::Usage::Type::Initialization:
case CPlusPlus::Usage::Type::Write:
case CPlusPlus::Usage::Type::WritableRef:
if (tags.testAnyFlags({CPlusPlus::Usage::Tag::Write, CPlusPlus::Usage::Tag::WritableRef}))
return SearchResultColor::Style::Alt2;
case CPlusPlus::Usage::Type::Declaration:
case CPlusPlus::Usage::Type::Other:
return SearchResultColor::Style::Default;
}
return SearchResultColor::Style::Default; // For dumb compilers.
return SearchResultColor::Style::Default;
}
QWidget *CppSearchResultFilter::createWidget()
@@ -87,19 +80,14 @@ QWidget *CppSearchResultFilter::createWidget()
bool CppSearchResultFilter::matches(const SearchResultItem &item) const
{
switch (static_cast<CPlusPlus::Usage::Type>(item.userData().toInt())) {
case CPlusPlus::Usage::Type::Read:
const auto usageTags = CPlusPlus::Usage::Tags::fromInt(item.userData().toInt());
if (usageTags.testFlag(CPlusPlus::Usage::Tag::Read))
return m_showReads;
case CPlusPlus::Usage::Type::Write:
case CPlusPlus::Usage::Type::WritableRef:
case CPlusPlus::Usage::Type::Initialization:
if (usageTags.testAnyFlags({CPlusPlus::Usage::Tag::Write, CPlusPlus::Usage::Tag::WritableRef}))
return m_showWrites;
case CPlusPlus::Usage::Type::Declaration:
if (usageTags.testFlag(CPlusPlus::Usage::Tag::Declaration))
return m_showDecls;
case CPlusPlus::Usage::Type::Other:
return m_showOther;
}
return false;
return m_showOther;
}
void CppSearchResultFilter::setValue(bool &member, bool value)
@@ -582,9 +570,9 @@ static void displayResults(SearchResult *search,
item.setFilePath(result.path);
item.setMainRange(result.line, result.col, result.len);
item.setLineText(result.lineText);
item.setUserData(int(result.type));
item.setUserData(result.tags.toInt());
item.setContainingFunctionName(result.containingFunction);
item.setStyle(colorStyleForUsageType(result.type));
item.setStyle(colorStyleForUsageType(result.tags));
item.setUseTextEditorFont(true);
if (search->supportsReplace())
item.setSelectForReplacement(SessionManager::projectForFile(result.path));
@@ -678,7 +666,7 @@ restart_search:
unsigned column;
const QString &lineSource = matchingLine(use.bytesBegin(), source, &column);
usages.append(CPlusPlus::Usage(fileName, lineSource, {},
CPlusPlus::Usage::Type::Other, use.beginLine(),
{}, use.beginLine(),
column, useMacro.nameToQString().size()));
}
}