htmldocvisitor.h
Go to the documentation of this file.
1 /******************************************************************************
2  *
3  *
4  *
5  *
6  * Copyright (C) 1997-2015 by Dimitri van Heesch.
7  *
8  * Permission to use, copy, modify, and distribute this software and its
9  * documentation under the terms of the GNU General Public License is hereby
10  * granted. No representations are made about the suitability of this software
11  * for any purpose. It is provided "as is" without express or implied warranty.
12  * See the GNU General Public License for more details.
13  *
14  * Documents produced by Doxygen are derivative works derived from the
15  * input used in their production; they are not affected by this license.
16  *
17  */
18 
19 #ifndef _HTMLDOCVISITOR_H
20 #define _HTMLDOCVISITOR_H
21 
22 #include "docvisitor.h"
23 #include <qstack.h>
24 #include <qcstring.h>
25 
26 class Definition;
27 class MemberDef;
28 class DocNode;
29 class FTextStream;
31 
32 /*! @brief Concrete visitor implementation for HTML output. */
33 class HtmlDocVisitor : public DocVisitor
34 {
35  public:
37 
38  //--------------------------------------
39  // visitor functions for leaf nodes
40  //--------------------------------------
41 
42  void visit(DocWord *);
43  void visit(DocLinkedWord *);
44  void visit(DocWhiteSpace *);
45  void visit(DocSymbol *);
46  void visit(DocURL *);
47  void visit(DocLineBreak *);
48  void visit(DocHorRuler *);
49  void visit(DocStyleChange *);
50  void visit(DocVerbatim *);
51  void visit(DocAnchor *);
52  void visit(DocInclude *);
53  void visit(DocIncOperator *);
54  void visit(DocFormula *);
55  void visit(DocIndexEntry *);
56  void visit(DocSimpleSectSep *);
57  void visit(DocCite *);
58 
59  //--------------------------------------
60  // visitor functions for compound nodes
61  //--------------------------------------
62 
63  void visitPre(DocAutoList *);
64  void visitPost(DocAutoList *);
65  void visitPre(DocAutoListItem *);
66  void visitPost(DocAutoListItem *);
67  void visitPre(DocPara *) ;
68  void visitPost(DocPara *);
69  void visitPre(DocRoot *);
70  void visitPost(DocRoot *);
71  void visitPre(DocSimpleSect *);
72  void visitPost(DocSimpleSect *);
73  void visitPre(DocTitle *);
74  void visitPost(DocTitle *);
75  void visitPre(DocSimpleList *);
76  void visitPost(DocSimpleList *);
79  void visitPre(DocSection *);
80  void visitPost(DocSection *);
81  void visitPre(DocHtmlList *);
82  void visitPost(DocHtmlList *) ;
83  void visitPre(DocHtmlListItem *);
84  void visitPost(DocHtmlListItem *);
85  void visitPre(DocHtmlDescList *);
86  void visitPost(DocHtmlDescList *);
87  void visitPre(DocHtmlDescTitle *);
89  void visitPre(DocHtmlDescData *);
90  void visitPost(DocHtmlDescData *);
91  void visitPre(DocHtmlTable *);
92  void visitPost(DocHtmlTable *);
93  void visitPre(DocHtmlRow *);
94  void visitPost(DocHtmlRow *) ;
95  void visitPre(DocHtmlCell *);
96  void visitPost(DocHtmlCell *);
97  void visitPre(DocHtmlCaption *);
98  void visitPost(DocHtmlCaption *);
99  void visitPre(DocInternal *);
100  void visitPost(DocInternal *);
101  void visitPre(DocHRef *);
102  void visitPost(DocHRef *);
103  void visitPre(DocHtmlHeader *);
104  void visitPost(DocHtmlHeader *);
105  void visitPre(DocImage *);
106  void visitPost(DocImage *);
107  void visitPre(DocDotFile *);
108  void visitPost(DocDotFile *);
109  void visitPre(DocMscFile *);
110  void visitPost(DocMscFile *);
111  void visitPre(DocDiaFile *);
112  void visitPost(DocDiaFile *);
113  void visitPre(DocLink *);
114  void visitPost(DocLink *);
115  void visitPre(DocRef *);
116  void visitPost(DocRef *);
117  void visitPre(DocSecRefItem *);
118  void visitPost(DocSecRefItem *);
119  void visitPre(DocSecRefList *);
120  void visitPost(DocSecRefList *);
121  void visitPre(DocParamSect *);
122  void visitPost(DocParamSect *);
123  void visitPre(DocParamList *);
124  void visitPost(DocParamList *);
125  void visitPre(DocXRefItem *);
126  void visitPost(DocXRefItem *);
127  void visitPre(DocInternalRef *);
128  void visitPost(DocInternalRef *);
129  void visitPre(DocCopy *);
130  void visitPost(DocCopy *);
131  void visitPre(DocText *);
132  void visitPost(DocText *);
133  void visitPre(DocHtmlBlockQuote *);
135  void visitPre(DocVhdlFlow *);
136  void visitPost(DocVhdlFlow *);
137  void visitPre(DocParBlock *);
138  void visitPost(DocParBlock *);
139 
140  private:
141 
142  //--------------------------------------
143  // helper functions
144  //--------------------------------------
145 
147  void filter(const char *str);
148  void filterQuotedCdataAttr(const char* str);
149  void startLink(const QCString &ref,const QCString &file,
150  const QCString &relPath,const QCString &anchor,
151  const QCString &tooltip = "");
152  void endLink();
153  void writeDotFile(const QCString &fileName,const QCString &relPath,const QCString &context);
154  void writeMscFile(const QCString &fileName,const QCString &relPath,const QCString &context);
155  void writeDiaFile(const QCString &fileName,const QCString &relPath,const QCString &context);
156  void writePlantUMLFile(const QCString &fileName,const QCString &relPath,const QCString &context);
157 
158  void pushEnabled();
159  void popEnabled();
160 
161  void forceEndParagraph(DocNode *n);
162  void forceStartParagraph(DocNode *n);
163 
164  //--------------------------------------
165  // state variables
166  //--------------------------------------
167 
171  bool m_hide;
175 };
176 
177 #endif
void writePlantUMLFile(const QCString &fileName, const QCString &relPath, const QCString &context)
CodeOutputInterface & m_ci
Concrete visitor implementation for HTML output.
void startLink(const QCString &ref, const QCString &file, const QCString &relPath, const QCString &anchor, const QCString &tooltip="")
QCString m_langExt
Simplified and optimized version of QTextStream.
Definition: ftextstream.h:11
void visitPre(DocAutoList *)
Abstract visitor that participates in the visitor pattern.
Definition: docvisitor.h:90
fileName
Definition: dumpTree.py:9
FTextStream & m_t
void visit(DocWord *)
std::void_t< T > n
void writeObfuscatedMailAddress(const QCString &url)
void filter(const char *str)
void forceEndParagraph(DocNode *n)
QStack< bool > m_enabled
Definition * m_ctx
void writeDotFile(const QCString &fileName, const QCString &relPath, const QCString &context)
void filterQuotedCdataAttr(const char *str)
static QCString str
HtmlDocVisitor(FTextStream &t, CodeOutputInterface &ci, Definition *ctx)
void forceStartParagraph(DocNode *n)
void writeMscFile(const QCString &fileName, const QCString &relPath, const QCString &context)
void visitPost(DocAutoList *)
void writeDiaFile(const QCString &fileName, const QCString &relPath, const QCString &context)