Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
templategenerator.h
Go to the documentation of this file.
1// Copyright (C) 2025 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
3
4#ifndef TEMPLATEGENERATOR_H
5#define TEMPLATEGENERATOR_H
6
7#include "generator.h"
8#include "filesystem/fileresolver.h"
9
11
12class Aggregate;
13class CodeMarker;
14struct DocumentIR;
15
17{
18public:
19 explicit TemplateGenerator(FileResolver& file_resolver);
20 ~TemplateGenerator() override = default;
21
22 void initializeGenerator() override;
23 void terminateGenerator() override;
24 QString format() const override;
25 void generateDocs() override;
26
27protected:
28 [[nodiscard]] QString fileExtension() const override;
29 void generateCppReferencePage(Aggregate *aggregate, CodeMarker *marker) override;
30 void generateQmlTypePage(QmlTypeNode *qcn, CodeMarker *marker) override;
31 void generatePageNode(PageNode *pn, CodeMarker *marker) override;
32 void generateCollectionNode(CollectionNode *cn, CodeMarker *marker) override;
33
34 qsizetype generateAtom(const Atom *atom, const Node *relative, CodeMarker *marker) override;
35
36private:
37 // Render phase: The generator's actual job - format IR according to templates.
38 // These methods know nothing about Nodes, only IR.
39 void renderDocument(const DocumentIR &ir, const QString &templateBaseName);
40
41 QString m_templateDir;
42 QString m_fileExtension = QStringLiteral("html");
43};
44
45QT_END_NAMESPACE
46
47#endif // TEMPLATEGENERATOR_H
The Atom class is the fundamental unit for representing documents internally.
Definition atom.h:19
A class for holding the members of a collection of doc pages.
The Config class contains the configuration variables for controlling how qdoc produces documentation...
Definition config.h:85
Encapsulate the logic that QDoc uses to find files whose path is provided by the user and that are re...
Generator(FileResolver &file_resolver)
Constructs the generator base class.
virtual void terminateGenerator()
virtual void generateDocs()
Traverses the database recursively to generate all the documentation.
QTextStream & out()
virtual void initializeGenerator()
No-op base implementation.
Builds IR (Intermediate Representation) from QDoc's Node tree.
Definition irbuilder.h:14
DocumentIR buildPageIR(const PageNode *pn) const
Definition irbuilder.cpp:64
A PageNode is a Node that generates a documentation page.
Definition pagenode.h:19
Generates documentation using external templates and a pre-built IR.
QString fileExtension() const override
void initializeGenerator() override
No-op base implementation.
void generateCppReferencePage(Aggregate *aggregate, CodeMarker *marker) override
void generatePageNode(PageNode *pn, CodeMarker *marker) override
~TemplateGenerator() override=default
TemplateGenerator(FileResolver &file_resolver)
qsizetype generateAtom(const Atom *atom, const Node *relative, CodeMarker *marker) override
void generateDocs() override
Traverses the database recursively to generate all the documentation.
void terminateGenerator() override
void generateCollectionNode(CollectionNode *cn, CodeMarker *marker) override
QString format() const override
Returns the format identifier for this producer (e.g., "HTML", "DocBook", "template").
void generateQmlTypePage(QmlTypeNode *qcn, CodeMarker *marker) override
Combined button and popup list for selecting options.
Intermediate representation for a documentation topic.
Definition documentir.h:20
The Node class is the base class for all the nodes in QDoc's parse tree.