Doxygen
Loading...
Searching...
No Matches
docbookvisitor.h
Go to the documentation of this file.
1/******************************************************************************
2*
3* Copyright (C) 1997-2020 by Dimitri van Heesch.
4*
5* Permission to use, copy, modify, and distribute this software and its
6* documentation under the terms of the GNU General Public License is hereby
7* granted. No representations are made about the suitability of this software
8* for any purpose. It is provided "as is" without express or implied warranty.
9* See the GNU General Public License for more details.
10*
11* Documents produced by Doxygen are derivative works derived from the
12* input used in their production; they are not affected by this license.
13*
14*/
15
16#ifndef DOCBOOKDOCVISITOR_H
17#define DOCBOOKDOCVISITOR_H
18
19#include <iostream>
20
21#include "containers.h"
22#include "docnode.h"
23#include "docvisitor.h"
24#include "dstring.h"
25
26class DString;
27class DocNodeList;
28class OutputCodeList;
29class TextStream;
30
31/*! @brief Concrete visitor implementation for Docbook output. */
32class DocbookDocVisitor final : public DocVisitor
33{
34 public:
36 //-----------------------------------------
37 template<class T>
38 void visitChildren(const T &t)
39 {
40 for (const auto &child : t.children())
41 {
42 std::visit(*this, child);
43 }
44 }
45 //--------------------------------------
46 // visitor functions for leaf nodes
47 //--------------------------------------
48 void operator()(const DocWord &);
49 void operator()(const DocLinkedWord &);
50 void operator()(const DocWhiteSpace &);
51 void operator()(const DocSymbol &);
52 void operator()(const DocEmoji &);
53 void operator()(const DocURL &);
54 void operator()(const DocLineBreak &);
55 void operator()(const DocHorRuler &);
56 void operator()(const DocStyleChange &);
57 void operator()(const DocVerbatim &);
58 void operator()(const DocAnchor &);
59 void operator()(const DocInclude &);
60 void operator()(const DocIncOperator &);
61 void operator()(const DocFormula &);
62 void operator()(const DocIndexEntry &);
63 void operator()(const DocSimpleSectSep &);
64 void operator()(const DocCite &);
65 void operator()(const DocSeparator &);
66 //--------------------------------------
67 // visitor functions for compound nodes
68 //--------------------------------------
69 void operator()(const DocAutoList &);
70 void operator()(const DocAutoListItem &);
71 void operator()(const DocPara &) ;
72 void operator()(const DocRoot &);
73 void operator()(const DocSimpleSect &);
74 void operator()(const DocTitle &);
75 void operator()(const DocSimpleList &);
76 void operator()(const DocSimpleListItem &);
77 void operator()(const DocSection &);
78 void operator()(const DocHtmlList &);
79 void operator()(const DocHtmlListItem &);
80 void operator()(const DocHtmlDescList &);
81 void operator()(const DocHtmlDescTitle &);
82 void operator()(const DocHtmlDescData &);
83 void operator()(const DocHtmlTable &);
84 void operator()(const DocHtmlRow &);
85 void operator()(const DocHtmlCell &);
86 void operator()(const DocHtmlCaption &);
87 void operator()(const DocInternal &);
88 void operator()(const DocHRef &);
89 void operator()(const DocHtmlSummary &);
90 void operator()(const DocHtmlDetails &);
91 void operator()(const DocHtmlHeader &);
92 void operator()(const DocImage &);
93 void operator()(const DocDotFile &);
94 void operator()(const DocMscFile &);
95 void operator()(const DocDiaFile &);
96 void operator()(const DocPlantUmlFile &);
97 void operator()(const DocMermaidFile &);
98 void operator()(const DocLink &);
99 void operator()(const DocRef &);
100 void operator()(const DocSecRefItem &);
101 void operator()(const DocSecRefList &);
102 void operator()(const DocParamSect &);
103 void operator()(const DocParamList &);
104 void operator()(const DocXRefItem &);
105 void operator()(const DocInternalRef &);
106 void operator()(const DocText &);
107 void operator()(const DocHtmlBlockQuote &);
108 void operator()(const DocVhdlFlow &);
109 void operator()(const DocParBlock &);
110
111 private:
112 //--------------------------------------
113 // helper functions
114 //--------------------------------------
115 void filter(const DString &str, bool retainNewLine = false, bool citeEntry = false);
116 void startLink(const DString &file,
117 const DString &anchor);
118 void endLink();
119 void startMscFile(const DString &fileName,const DString &relPath, const DString &width,
120 const DString &height, bool hasCaption,const DocNodeList &children,
121 const DString &srcFile, int srcLine, bool newFile = true);
122 void endMscFile(bool hasCaption);
123 void writeMscFile(const DString &fileName, const DocVerbatim &s, bool newFile = true);
124 void startDiaFile(const DString &fileName,const DString &relPath, const DString &width,
125 const DString &height, bool hasCaption,const DocNodeList &children,
126 const DString &srcFile, int srcLine, bool newFile = true);
127 void endDiaFile(bool hasCaption);
128 void writeDiaFile(const DString &fileName, const DocVerbatim &s);
129 void startDotFile(const DString &fileName,const DString &relPath, const DString &width,
130 const DString &height, bool hasCaption,const DocNodeList &children,
131 const DString &srcFile, int srcLine, bool newFile = true);
132 void endDotFile(bool hasCaption);
133 void writeDotFile(const DString &fileName, const DocVerbatim &s, bool newFile = true);
134 void writePlantUMLFile(const DString &fileName, const DocVerbatim &s);
135 void startPlantUmlFile(const DString &fileName,const DString &relPath, const DString &width,
136 const DString &height, bool hasCaption,const DocNodeList &children,
137 const DString &srcFile, int srcLine);
138 void endPlantUmlFile(bool hasCaption);
139 void writeMermaidFile(const DString &fileName, const DocVerbatim &s);
140 void startMermaidFile(const DString &fileName,const DString &relPath, const DString &width,
141 const DString &height, bool hasCaption,const DocNodeList &children,
142 const DString &srcFile, int srcLine);
143 void endMermaidFile(bool hasCaption);
145 const DocNodeList &children,
146 bool hasCaption,
147 const DString &name,
148 const DString &width,
149 const DString &height,
150 bool inlineImage = false);
151 void visitPostEnd(TextStream &t, bool hasCaption, bool inlineImage = false);
152 void visitCaption(const DocNodeList &children);
153 //--------------------------------------
154 // state variables
155 //--------------------------------------
158 bool m_insidePre = false;
159 bool m_hide = false;
162 int m_colCnt = 0;
163 BoolStack m_bodySet; // it is possible to have tables without a header, needs to be an array as we can have tables in tables
164};
165
166#endif
A String class for use with Doxygen wrapping std::string and adding some additional functionality off...
Definition dstring.h:88
Node representing an anchor.
Definition docnode.h:229
Node representing an auto List.
Definition docnode.h:571
Node representing an item of a auto list.
Definition docnode.h:595
Node representing a citation of some bibliographic reference.
Definition docnode.h:245
Node representing a dia file.
Definition docnode.h:731
Node representing a dot file.
Definition docnode.h:713
Node representing an emoji.
Definition docnode.h:341
Node representing an item of a cross-referenced list.
Definition docnode.h:529
Node representing a Hypertext reference.
Definition docnode.h:832
Node representing a horizontal ruler.
Definition docnode.h:216
Node representing an HTML blockquote.
Definition docnode.h:1296
Node representing a HTML table caption.
Definition docnode.h:1233
Node representing a HTML table cell.
Definition docnode.h:1198
Node representing a HTML description data.
Definition docnode.h:1186
Node representing a Html description list.
Definition docnode.h:910
Node representing a Html description item.
Definition docnode.h:897
Node Html details.
Definition docnode.h:866
Node Html heading.
Definition docnode.h:882
Node representing a Html list.
Definition docnode.h:1009
Node representing a HTML list item.
Definition docnode.h:1170
Node representing a HTML table row.
Definition docnode.h:1251
Node Html summary.
Definition docnode.h:853
Node representing a HTML table.
Definition docnode.h:1274
Node representing an image.
Definition docnode.h:642
Node representing a include/dontinclude operator block.
Definition docnode.h:477
Node representing an included text block from file.
Definition docnode.h:435
Node representing an entry in the index.
Definition docnode.h:552
Node representing an internal section of documentation.
Definition docnode.h:978
Node representing an internal reference to some item.
Definition docnode.h:816
Node representing a line break.
Definition docnode.h:202
Node representing a word that can be linked to something.
Definition docnode.h:165
Node representing a mermaid file.
Definition docnode.h:749
Node representing a msc file.
Definition docnode.h:722
Node representing an block of paragraphs.
Definition docnode.h:988
Node representing a paragraph in the documentation tree.
Definition docnode.h:1089
Node representing a parameter list.
Definition docnode.h:1130
Node representing a parameter section.
Definition docnode.h:1062
Node representing a uml file.
Definition docnode.h:740
Node representing a reference to some item.
Definition docnode.h:787
Root node of documentation tree.
Definition docnode.h:1318
Node representing a reference to a section.
Definition docnode.h:944
Node representing a list of section references.
Definition docnode.h:968
Node representing a normal section.
Definition docnode.h:923
Node representing a separator.
Definition docnode.h:365
Node representing a simple list.
Definition docnode.h:999
Node representing a simple list item.
Definition docnode.h:1158
Node representing a simple section.
Definition docnode.h:1026
Node representing a separator between two simple sections of the same type.
Definition docnode.h:1053
Node representing a style change.
Definition docnode.h:268
Node representing a special symbol.
Definition docnode.h:328
Root node of a text fragment.
Definition docnode.h:1309
Node representing a simple section title.
Definition docnode.h:608
Node representing a URL (or email address).
Definition docnode.h:188
Node representing a verbatim, unparsed text fragment.
Definition docnode.h:376
Node representing a VHDL flow chart.
Definition docnode.h:758
Node representing some amount of white space.
Definition docnode.h:354
Node representing a word.
Definition docnode.h:153
Node representing an item of a cross-referenced list.
Definition docnode.h:621
void endDiaFile(bool hasCaption)
void operator()(const DocWord &)
void startPlantUmlFile(const DString &fileName, const DString &relPath, const DString &width, const DString &height, bool hasCaption, const DocNodeList &children, const DString &srcFile, int srcLine)
void startDiaFile(const DString &fileName, const DString &relPath, const DString &width, const DString &height, bool hasCaption, const DocNodeList &children, const DString &srcFile, int srcLine, bool newFile=true)
void visitChildren(const T &t)
void visitPreStart(TextStream &t, const DocNodeList &children, bool hasCaption, const DString &name, const DString &width, const DString &height, bool inlineImage=false)
void endMermaidFile(bool hasCaption)
void writeMermaidFile(const DString &fileName, const DocVerbatim &s)
void startMermaidFile(const DString &fileName, const DString &relPath, const DString &width, const DString &height, bool hasCaption, const DocNodeList &children, const DString &srcFile, int srcLine)
OutputCodeList & m_ci
void endPlantUmlFile(bool hasCaption)
void visitCaption(const DocNodeList &children)
void writeDotFile(const DString &fileName, const DocVerbatim &s, bool newFile=true)
void endDotFile(bool hasCaption)
void startDotFile(const DString &fileName, const DString &relPath, const DString &width, const DString &height, bool hasCaption, const DocNodeList &children, const DString &srcFile, int srcLine, bool newFile=true)
DocbookDocVisitor(TextStream &t, OutputCodeList &ci, const DString &langExt)
void visitPostEnd(TextStream &t, bool hasCaption, bool inlineImage=false)
void startLink(const DString &file, const DString &anchor)
void endMscFile(bool hasCaption)
void startMscFile(const DString &fileName, const DString &relPath, const DString &width, const DString &height, bool hasCaption, const DocNodeList &children, const DString &srcFile, int srcLine, bool newFile=true)
void filter(const DString &str, bool retainNewLine=false, bool citeEntry=false)
void writePlantUMLFile(const DString &fileName, const DocVerbatim &s)
void writeDiaFile(const DString &fileName, const DocVerbatim &s)
void writeMscFile(const DString &fileName, const DocVerbatim &s, bool newFile=true)
Class representing a list of different code generators.
Definition outputlist.h:162
Text streaming class that buffers data.
Definition textstream.h:36
std::stack< bool > BoolStack
Definition containers.h:35