// Copyright (C) 2024 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only #ifndef QQMLLSHELPUTILS_P_H #define QQMLLSHELPUTILS_P_H // // W A R N I N G // ------------- // // This file is not part of the Qt API. It exists purely as an // implementation detail. This header file may change from version to // version without notice, or even be removed. // // We mean it. // #include #include #include #include #include #include QT_BEGIN_NAMESPACE class HelpManager final { public: HelpManager(); void setDocumentationRootPath(const QString &path); [[nodiscard]] QString documentationRootPath() const; [[nodiscard]] std::optional documentationForItem( const QQmlJS::Dom::DomItem &file, QLspSpecification::Position position); private: [[nodiscard]] std::optional extractDocumentationForIdentifiers(const QQmlJS::Dom::DomItem &item, QQmlLSUtils::ExpressionType expr) const; [[nodiscard]] std::optional extractDocumentationForDomElements( const QQmlJS::Dom::DomItem &item) const; [[nodiscard]] std::optional extractDocumentation( const QQmlJS::Dom::DomItem &item) const; [[nodiscard]] std::optional tryExtract(ExtractDocumentation &extractor, const std::vector &links, const QString &name) const; [[nodiscard]] std::vector collectDocumentationLinks(const QQmlJS::Dom::DomItem &item, const QQmlJSScope::ConstPtr &scope, const QString &name) const; void registerDocumentations(const QStringList &docs) const; std::unique_ptr m_helpPlugin; QString m_docRootPath; QHash m_cppTypesToQmlTypes; }; QT_END_NAMESPACE #endif // QQMLLSHELPUTILS_P_H