1 /******************************************************************************
6 * Copyright (C) 1997-2015 by Dimitri van Heesch.
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.
14 * Documents produced by Doxygen are derivative works derived from the
15 * input used in their production; they are not affected by this license.
19 #ifndef XMLDOCVISITOR_H
20 #define XMLDOCVISITOR_H
25 #include "docvisitor.h"
27 #include "textstream.h"
29 class CodeOutputInterface;
32 /*! @brief Concrete visitor implementation for XML output. */
33 class XmlDocVisitor : public DocVisitor
36 XmlDocVisitor(TextStream &t,CodeOutputInterface &ci,const QCString &langExt);
38 //--------------------------------------
39 // visitor functions for leaf nodes
40 //--------------------------------------
42 void operator()(const DocWord &);
43 void operator()(const DocLinkedWord &);
44 void operator()(const DocWhiteSpace &);
45 void operator()(const DocSymbol &);
46 void operator()(const DocEmoji &);
47 void operator()(const DocURL &);
48 void operator()(const DocLineBreak &);
49 void operator()(const DocHorRuler &);
50 void operator()(const DocStyleChange &);
51 void operator()(const DocVerbatim &);
52 void operator()(const DocAnchor &);
53 void operator()(const DocInclude &);
54 void operator()(const DocIncOperator &);
55 void operator()(const DocFormula &);
56 void operator()(const DocIndexEntry &);
57 void operator()(const DocSimpleSectSep &);
58 void operator()(const DocCite &);
59 void operator()(const DocSeparator &);
61 //--------------------------------------
62 // visitor functions for compound nodes
63 //--------------------------------------
65 void operator()(const DocAutoList &);
66 void operator()(const DocAutoListItem &);
67 void operator()(const DocPara &) ;
68 void operator()(const DocRoot &);
69 void operator()(const DocSimpleSect &);
70 void operator()(const DocTitle &);
71 void operator()(const DocSimpleList &);
72 void operator()(const DocSimpleListItem &);
73 void operator()(const DocSection &);
74 void operator()(const DocHtmlList &);
75 void operator()(const DocHtmlListItem &);
76 void operator()(const DocHtmlDescList &);
77 void operator()(const DocHtmlDescTitle &);
78 void operator()(const DocHtmlDescData &);
79 void operator()(const DocHtmlTable &);
80 void operator()(const DocHtmlRow &);
81 void operator()(const DocHtmlCell &);
82 void operator()(const DocHtmlCaption &);
83 void operator()(const DocInternal &);
84 void operator()(const DocHRef &);
85 void operator()(const DocHtmlDetails &);
86 void operator()(const DocHtmlHeader &);
87 void operator()(const DocImage &);
88 void operator()(const DocDotFile &);
89 void operator()(const DocMscFile &);
90 void operator()(const DocDiaFile &);
91 void operator()(const DocLink &);
92 void operator()(const DocRef &);
93 void operator()(const DocSecRefItem &);
94 void operator()(const DocSecRefList &);
95 void operator()(const DocParamSect &);
96 void operator()(const DocParamList &);
97 void operator()(const DocXRefItem &);
98 void operator()(const DocInternalRef &);
99 void operator()(const DocText &);
100 void operator()(const DocHtmlBlockQuote &);
101 void operator()(const DocVhdlFlow &);
102 void operator()(const DocParBlock &);
106 void visitChildren(const T &t)
108 for (const auto &child : t.children())
110 std::visit(*this, child);
114 //--------------------------------------
116 //--------------------------------------
118 void filter(const QCString &str);
119 void startLink(const QCString &ref,const QCString &file,
120 const QCString &anchor);
123 //--------------------------------------
125 //--------------------------------------
128 CodeOutputInterface &m_ci;