4#ifndef QDOC_HREFRESOLVER_H
5#define QDOC_HREFRESOLVER_H
7#ifdef QDOC_TEMPLATE_GENERATOR_ENABLED
9#include "inclusionpolicy.h"
11#include <QtCore/qhash.h>
12#include <QtCore/qstring.h>
23enum class HrefSuppressReason {
31using HrefResult = std::variant<QString, HrefSuppressReason>;
33struct HrefResolverConfig
35 const OutputContext *context{
nullptr};
36 InclusionPolicy inclusionPolicy;
37 std::function<QString(
const QString &)> cleanRefFn;
38 std::function<
const QmlTypeNode *()> qmlTypeContextFn;
44 explicit HrefResolver(
const HrefResolverConfig &config);
46 [[nodiscard]] HrefResult hrefForNode(
const Node *node,
const Node *relative)
const;
47 [[nodiscard]] QString anchorForNode(
const Node *node)
const;
48 [[nodiscard]] QString fileName(
const Node *node)
const;
51 [[nodiscard]] QString fileBase(
const Node *node)
const;
52 [[nodiscard]] QString crossModulePrefix(
const Node *target,
const Node *source)
const;
54 HrefResolverConfig m_config;
55 mutable QHash<
const Node *, QString> m_fileBaseCache;