File indexing completed on 2024-04-28 04:37:18

0001 /*
0002     SPDX-FileCopyrightText: 2006 Adam Treat <treat@kde.org>
0003     SPDX-FileCopyrightText: 2007 Alexander Dymo <adymo@kdevelop.org>
0004 
0005     SPDX-License-Identifier: LGPL-2.0-or-later
0006 */
0007 
0008 #ifndef KDEVPLATFORM_LANGUAGECONTROLLER_H
0009 #define KDEVPLATFORM_LANGUAGECONTROLLER_H
0010 
0011 #include <interfaces/ilanguagecontroller.h>
0012 
0013 #include "shellexport.h"
0014 
0015 namespace KDevelop {
0016 
0017 class ILanguageSupport;
0018 class LanguageControllerPrivate;
0019 
0020 class KDEVPLATFORMSHELL_EXPORT LanguageController : public ILanguageController {
0021     Q_OBJECT
0022 public:
0023     explicit LanguageController(QObject *parent);
0024     ~LanguageController() override;
0025 
0026     void initialize();
0027     
0028     //After this was called, no more languages will be returned
0029     void cleanup();
0030 
0031     /** @copydoc ILanguageController::language() */
0032     ILanguageSupport* language(const QString &name) const override;
0033     /** @copydoc ILanguageController::languageForUrl() */
0034     QList<ILanguageSupport*> languagesForUrl(const QUrl &url) override;
0035     /** @copydoc ILanguageController::backgroundParser() */
0036     BackgroundParser *backgroundParser() const override;
0037 
0038     StaticAssistantsManager *staticAssistantsManager() const override;
0039 
0040     QList<ILanguageSupport*> loadedLanguages() const override;
0041 
0042     ICompletionSettings *completionSettings() const override;
0043 
0044     ProblemModelSet* problemModelSet() const override;
0045 
0046     QList<ILanguageSupport*> languagesForMimetype(const QString& mime);
0047     QList<QString> mimetypesForLanguageName(const QString& languageName);
0048 
0049 protected:
0050     /**
0051      * functions for unit tests
0052      * @see TestLanguageController
0053      */
0054     void addLanguageSupport(KDevelop::ILanguageSupport* languageSupport, const QStringList& mimetypes);
0055 
0056 private:
0057     const QScopedPointer<class LanguageControllerPrivate> d_ptr;
0058     Q_DECLARE_PRIVATE(LanguageController)
0059 };
0060 
0061 }
0062 
0063 #endif
0064