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>
22enum class HrefSuppressReason {
30using HrefResult = std::variant<QString, HrefSuppressReason>;
32struct HrefResolverConfig
35 QString fileExtension;
36 bool useOutputSubdirs{
false};
37 bool noLinkErrors{
false};
38 InclusionPolicy inclusionPolicy;
39 std::function<QString(
const Node *)> outputPrefixFn;
40 std::function<QString(
const Node *)> outputSuffixFn;
41 std::function<QString(
const QString &)> cleanRefFn;
42 std::function<
const QmlTypeNode *()> qmlTypeContextFn;
48 explicit HrefResolver(
const HrefResolverConfig &config);
50 [[nodiscard]] HrefResult hrefForNode(
const Node *node,
const Node *relative)
const;
51 [[nodiscard]] QString anchorForNode(
const Node *node)
const;
52 [[nodiscard]] QString fileName(
const Node *node)
const;
55 [[nodiscard]] QString fileBase(
const Node *node)
const;
57 HrefResolverConfig m_config;
58 mutable QHash<
const Node *, QString> m_fileBaseCache;