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 "docvisitor.h"
23#include "docnode.h"
24#include "qcstring.h"
25
26class OutputCodeList;
27class QCString;
28class TextStream;
29
30/*! @brief Concrete visitor implementation for Docbook output. */
32{
33 public:
34 DocbookDocVisitor(TextStream &t,OutputCodeList &ci,const QCString &langExt);
35 //-----------------------------------------
36 template<class T>
37 void visitChildren(const T &t)
38 {
39 for (const auto &child : t.children())
40 {
41 std::visit(*this, child);
42 }
43 }
44 //--------------------------------------
45 // visitor functions for leaf nodes
46 //--------------------------------------
47 void operator()(const DocWord &);
48 void operator()(const DocLinkedWord &);
49 void operator()(const DocWhiteSpace &);
50 void operator()(const DocSymbol &);
51 void operator()(const DocEmoji &);
52 void operator()(const DocURL &);
53 void operator()(const DocLineBreak &);
54 void operator()(const DocHorRuler &);
55 void operator()(const DocStyleChange &);
56 void operator()(const DocVerbatim &);
57 void operator()(const DocAnchor &);
58 void operator()(const DocInclude &);
59 void operator()(const DocIncOperator &);
60 void operator()(const DocFormula &);
61 void operator()(const DocIndexEntry &);
62 void operator()(const DocSimpleSectSep &);
63 void operator()(const DocCite &);
64 void operator()(const DocSeparator &);
65 //--------------------------------------
66 // visitor functions for compound nodes
67 //--------------------------------------
68 void operator()(const DocAutoList &);
69 void operator()(const DocAutoListItem &);
70 void operator()(const DocPara &) ;
71 void operator()(const DocRoot &);
72 void operator()(const DocSimpleSect &);
73 void operator()(const DocTitle &);
74 void operator()(const DocSimpleList &);
75 void operator()(const DocSimpleListItem &);
76 void operator()(const DocSection &);
77 void operator()(const DocHtmlList &);
78 void operator()(const DocHtmlListItem &);
79 void operator()(const DocHtmlDescList &);
80 void operator()(const DocHtmlDescTitle &);
81 void operator()(const DocHtmlDescData &);
82 void operator()(const DocHtmlTable &);
83 void operator()(const DocHtmlRow &);
84 void operator()(const DocHtmlCell &);
85 void operator()(const DocHtmlCaption &);
86 void operator()(const DocInternal &);
87 void operator()(const DocHRef &);
88 void operator()(const DocHtmlSummary &);
89 void operator()(const DocHtmlDetails &);
90 void operator()(const DocHtmlHeader &);
91 void operator()(const DocImage &);
92 void operator()(const DocDotFile &);
93 void operator()(const DocMscFile &);
94 void operator()(const DocDiaFile &);
95 void operator()(const DocPlantUmlFile &);
96 void operator()(const DocLink &);
97 void operator()(const DocRef &);
98 void operator()(const DocSecRefItem &);
99 void operator()(const DocSecRefList &);
100 void operator()(const DocParamSect &);
101 void operator()(const DocParamList &);
102 void operator()(const DocXRefItem &);
103 void operator()(const DocInternalRef &);
104 void operator()(const DocText &);
105 void operator()(const DocHtmlBlockQuote &);
106 void operator()(const DocVhdlFlow &);
107 void operator()(const DocParBlock &);
108
109 private:
110 //--------------------------------------
111 // helper functions
112 //--------------------------------------
113 void filter(const QCString &str, const bool retainNewLine = false);
114 void startLink(const QCString &file,
115 const QCString &anchor);
116 void endLink();
117 void startMscFile(const QCString &fileName,const QCString &relPath, const QCString &width,
118 const QCString &height, bool hasCaption,const DocNodeList &children,
119 const QCString &srcFile, int srcLine);
120 void endMscFile(bool hasCaption);
121 void writeMscFile(const QCString &fileName, const DocVerbatim &s);
122 void startDiaFile(const QCString &fileName,const QCString &relPath, const QCString &width,
123 const QCString &height, bool hasCaption,const DocNodeList &children,
124 const QCString &srcFile, int srcLine);
125 void endDiaFile(bool hasCaption);
126 void writeDiaFile(const QCString &fileName, const DocVerbatim &s);
127 void startDotFile(const QCString &fileName,const QCString &relPath, const QCString &width,
128 const QCString &height, bool hasCaption,const DocNodeList &children,
129 const QCString &srcFile, int srcLine);
130 void endDotFile(bool hasCaption);
131 void writeDotFile(const QCString &fileName, const DocVerbatim &s);
132 void writePlantUMLFile(const QCString &fileName, const DocVerbatim &s);
133 void startPlantUmlFile(const QCString &fileName,const QCString &relPath, const QCString &width,
134 const QCString &height, bool hasCaption,const DocNodeList &children,
135 const QCString &srcFile, int srcLine);
136 void endPlantUmlFile(bool hasCaption);
137 void visitPreStart(TextStream &t,
138 const DocNodeList &children,
139 bool hasCaption,
140 const QCString &name,
141 const QCString &width,
142 const QCString &height,
143 bool inlineImage = FALSE);
144 void visitPostEnd(TextStream &t, bool hasCaption, bool inlineImage = FALSE);
145 void visitCaption(const DocNodeList &children);
146 //--------------------------------------
147 // state variables
148 //--------------------------------------
149 TextStream &m_t;
150 OutputCodeList &m_ci;
151 bool m_insidePre = false;
152 bool m_hide = false;
154 QCString m_langExt;
155 int m_colCnt = 0;
156 BoolStack m_bodySet; // it is possible to have tables without a header, needs to be an array as we can have tables in tables
157};
158
159#endif
void writeDotFile(const QCString &fileName, const DocVerbatim &s)
void visitPreStart(TextStream &t, const DocNodeList &children, bool hasCaption, const QCString &name, const QCString &width, const QCString &height, bool inlineImage=FALSE)
void endDiaFile(bool hasCaption)
void operator()(const DocWord &)
void filter(const QCString &str, const bool retainNewLine=false)
void visitChildren(const T &t)
void startLink(const QCString &file, const QCString &anchor)
void writeMscFile(const QCString &fileName, const DocVerbatim &s)
void startDiaFile(const QCString &fileName, const QCString &relPath, const QCString &width, const QCString &height, bool hasCaption, const DocNodeList &children, const QCString &srcFile, int srcLine)
OutputCodeList & m_ci
void startMscFile(const QCString &fileName, const QCString &relPath, const QCString &width, const QCString &height, bool hasCaption, const DocNodeList &children, const QCString &srcFile, int srcLine)
void startDotFile(const QCString &fileName, const QCString &relPath, const QCString &width, const QCString &height, bool hasCaption, const DocNodeList &children, const QCString &srcFile, int srcLine)
void endPlantUmlFile(bool hasCaption)
void visitCaption(const DocNodeList &children)
void writeDiaFile(const QCString &fileName, const DocVerbatim &s)
void endDotFile(bool hasCaption)
void visitPostEnd(TextStream &t, bool hasCaption, bool inlineImage=FALSE)
void writePlantUMLFile(const QCString &fileName, const DocVerbatim &s)
void endMscFile(bool hasCaption)
DocbookDocVisitor(TextStream &t, OutputCodeList &ci, const QCString &langExt)
void startPlantUmlFile(const QCString &fileName, const QCString &relPath, const QCString &width, const QCString &height, bool hasCaption, const DocNodeList &children, const QCString &srcFile, int srcLine)
Class representing a list of different code generators.
Definition outputlist.h:164
This is an alternative implementation of QCString.
Definition qcstring.h:101
Text streaming class that buffers data.
Definition textstream.h:36
std::stack< bool > BoolStack
Definition containers.h:35
#define FALSE
Definition qcstring.h:34