diff --git a/src/plugins/cpptools/searchsymbols.cpp b/src/plugins/cpptools/searchsymbols.cpp index c0d29aae18a7fabde085f4a5e129abd1e4fb7539..4b1e48abdf7e55a3d3326d0ed0ca5b59686aadee 100644 --- a/src/plugins/cpptools/searchsymbols.cpp +++ b/src/plugins/cpptools/searchsymbols.cpp @@ -40,13 +40,13 @@ using namespace CPlusPlus; using namespace CppTools::Internal; SearchSymbols::SearchSymbols(): - symbolsToSearchFor(ClassesMethodsFunctionsAndEnums) + symbolsToSearchFor(Classes | Functions | Enums) { } -void SearchSymbols::setSymbolsToSearchFor(SymbolType type) +void SearchSymbols::setSymbolsToSearchFor(SymbolTypes types) { - symbolsToSearchFor = type; + symbolsToSearchFor = types; } QList<ModelItemInfo> SearchSymbols::operator()(Document::Ptr doc, const QString &scope) @@ -69,7 +69,7 @@ QString SearchSymbols::switchScope(const QString &scope) bool SearchSymbols::visit(Enum *symbol) { - if (symbolsToSearchFor != ClassesMethodsFunctionsAndEnums) + if (!(symbolsToSearchFor & Enums)) return false; QString name = symbolName(symbol); @@ -89,7 +89,7 @@ bool SearchSymbols::visit(Enum *symbol) bool SearchSymbols::visit(Function *symbol) { - if (symbolsToSearchFor != ClassesMethodsFunctionsAndEnums) + if (!(symbolsToSearchFor & Functions)) return false; QString name = symbolName(symbol); @@ -131,6 +131,9 @@ bool SearchSymbols::visit(Declaration *symbol) bool SearchSymbols::visit(Class *symbol) { + if (!(symbolsToSearchFor & Classes)) + return false; + QString name = symbolName(symbol); QString previousScope = switchScope(name); QIcon icon = icons.iconForSymbol(symbol); diff --git a/src/plugins/cpptools/searchsymbols.h b/src/plugins/cpptools/searchsymbols.h index d9b678e026fb6778ada898736a45ea3936e571e2..948f9d78e84ea72898f3e1b87f8baf6f26edac88 100644 --- a/src/plugins/cpptools/searchsymbols.h +++ b/src/plugins/cpptools/searchsymbols.h @@ -80,15 +80,16 @@ class SearchSymbols: public std::unary_function<CPlusPlus::Document::Ptr, QList< protected CPlusPlus::SymbolVisitor { public: - // TODO: Probably should use QFlags enum SymbolType { - Classes, - ClassesMethodsFunctionsAndEnums + Classes = 0x1, + Functions = 0x2, + Enums = 0x4 }; + Q_DECLARE_FLAGS(SymbolTypes, SymbolType) SearchSymbols(); - void setSymbolsToSearchFor(SymbolType type); + void setSymbolsToSearchFor(SymbolTypes types); QList<ModelItemInfo> operator()(CPlusPlus::Document::Ptr doc) { return operator()(doc, QString()); } @@ -117,9 +118,11 @@ private: CPlusPlus::Overview overview; CPlusPlus::Icons icons; QList<ModelItemInfo> items; - SymbolType symbolsToSearchFor; + SymbolTypes symbolsToSearchFor; }; +Q_DECLARE_OPERATORS_FOR_FLAGS(SearchSymbols::SymbolTypes) + } // namespace Internal } // namespace CppTools