// Copyright (C) 2016 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 #pragma once #include "cppeditor_global.h" #include "cppmodelmanager.h" #include #include namespace Utils { class SearchResultItem; } namespace CppEditor { class CPPEDITOR_EXPORT SymbolSearcher: public QObject { Q_OBJECT public: enum SymbolType { Classes = 0x1, Functions = 0x2, Enums = 0x4, Declarations = 0x8, TypeAliases = 0x16, }; Q_DECLARE_FLAGS(SymbolTypes, SymbolType) enum SearchScope { SearchProjectsOnly, SearchGlobal }; struct Parameters { QString text; Core::FindFlags flags; SymbolTypes types; SearchScope scope; }; SymbolSearcher(const SymbolSearcher::Parameters ¶meters, const QSet &fileNames); void runSearch(QPromise &promise); private: const CPlusPlus::Snapshot m_snapshot; const Parameters m_parameters; const QSet m_fileNames; }; class CPPEDITOR_EXPORT CppIndexingSupport { public: static bool isFindErrorsIndexingActive(); QFuture refreshSourceFiles(const QSet &sourceFiles, CppModelManager::ProgressNotificationMode mode); private: Utils::FutureSynchronizer m_synchronizer; }; } // namespace CppEditor Q_DECLARE_METATYPE(CppEditor::SymbolSearcher::SearchScope) Q_DECLARE_METATYPE(CppEditor::SymbolSearcher::Parameters) Q_DECLARE_METATYPE(CppEditor::SymbolSearcher::SymbolTypes)