Use QFlags for indicating symbols to search for

This commit is contained in:
Thorbjørn Lindeijer
2008-12-05 09:02:08 +01:00
parent 923bfa52d3
commit 4e76b54dec
2 changed files with 16 additions and 10 deletions

View File

@@ -40,13 +40,13 @@ using namespace CPlusPlus;
using namespace CppTools::Internal; using namespace CppTools::Internal;
SearchSymbols::SearchSymbols(): 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) 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) bool SearchSymbols::visit(Enum *symbol)
{ {
if (symbolsToSearchFor != ClassesMethodsFunctionsAndEnums) if (!(symbolsToSearchFor & Enums))
return false; return false;
QString name = symbolName(symbol); QString name = symbolName(symbol);
@@ -89,7 +89,7 @@ bool SearchSymbols::visit(Enum *symbol)
bool SearchSymbols::visit(Function *symbol) bool SearchSymbols::visit(Function *symbol)
{ {
if (symbolsToSearchFor != ClassesMethodsFunctionsAndEnums) if (!(symbolsToSearchFor & Functions))
return false; return false;
QString name = symbolName(symbol); QString name = symbolName(symbol);
@@ -131,6 +131,9 @@ bool SearchSymbols::visit(Declaration *symbol)
bool SearchSymbols::visit(Class *symbol) bool SearchSymbols::visit(Class *symbol)
{ {
if (!(symbolsToSearchFor & Classes))
return false;
QString name = symbolName(symbol); QString name = symbolName(symbol);
QString previousScope = switchScope(name); QString previousScope = switchScope(name);
QIcon icon = icons.iconForSymbol(symbol); QIcon icon = icons.iconForSymbol(symbol);

View File

@@ -80,15 +80,16 @@ class SearchSymbols: public std::unary_function<CPlusPlus::Document::Ptr, QList<
protected CPlusPlus::SymbolVisitor protected CPlusPlus::SymbolVisitor
{ {
public: public:
// TODO: Probably should use QFlags
enum SymbolType { enum SymbolType {
Classes, Classes = 0x1,
ClassesMethodsFunctionsAndEnums Functions = 0x2,
Enums = 0x4
}; };
Q_DECLARE_FLAGS(SymbolTypes, SymbolType)
SearchSymbols(); SearchSymbols();
void setSymbolsToSearchFor(SymbolType type); void setSymbolsToSearchFor(SymbolTypes types);
QList<ModelItemInfo> operator()(CPlusPlus::Document::Ptr doc) QList<ModelItemInfo> operator()(CPlusPlus::Document::Ptr doc)
{ return operator()(doc, QString()); } { return operator()(doc, QString()); }
@@ -117,9 +118,11 @@ private:
CPlusPlus::Overview overview; CPlusPlus::Overview overview;
CPlusPlus::Icons icons; CPlusPlus::Icons icons;
QList<ModelItemInfo> items; QList<ModelItemInfo> items;
SymbolType symbolsToSearchFor; SymbolTypes symbolsToSearchFor;
}; };
Q_DECLARE_OPERATORS_FOR_FLAGS(SearchSymbols::SymbolTypes)
} // namespace Internal } // namespace Internal
} // namespace CppTools } // namespace CppTools