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 TEXTDOCVISITOR_H
20 #define TEXTDOCVISITOR_H
21 
22 #include "qcstring.h"
23 #include "docvisitor.h"
24 #include "docparser.h"
25 #include "textstream.h"
26 
27 /*! @brief Concrete visitor implementation for TEXT output. */
28 class TextDocVisitor : public DocVisitor
29 {
30   public:
TextDocVisitor(TextStream & t)31     TextDocVisitor(TextStream &t) : DocVisitor(DocVisitor_Text), m_t(t) {}
32 
33     //--------------------------------------
34     // visitor functions for leaf nodes
35     //--------------------------------------
36 
visit(DocWord * w)37     void visit(DocWord *w)        { filter(w->word()); }
visit(DocLinkedWord * w)38     void visit(DocLinkedWord *w)  { filter(w->word()); }
visit(DocWhiteSpace *)39     void visit(DocWhiteSpace *)   { m_t << " ";       }
40     void visit(DocSymbol *);
41     void visit(DocEmoji *);
visit(DocURL * u)42     void visit(DocURL *u)         { filter(u->url());  }
visit(DocLineBreak *)43     void visit(DocLineBreak *)    { m_t << " ";       }
visit(DocHorRuler *)44     void visit(DocHorRuler *)     {}
visit(DocStyleChange *)45     void visit(DocStyleChange *)  {}
visit(DocVerbatim * s)46     void visit(DocVerbatim *s)    { filter(s->text()); }
visit(DocAnchor *)47     void visit(DocAnchor *)       {}
visit(DocInclude *)48     void visit(DocInclude *)      {}
visit(DocIncOperator *)49     void visit(DocIncOperator *)  {}
visit(DocFormula *)50     void visit(DocFormula *)      {}
visit(DocIndexEntry *)51     void visit(DocIndexEntry *)   {}
visit(DocSimpleSectSep *)52     void visit(DocSimpleSectSep *){}
visit(DocCite *)53     void visit(DocCite *)         {}
54 
55     //--------------------------------------
56     // visitor functions for compound nodes
57     //--------------------------------------
58 
visitPre(DocAutoList *)59     void visitPre(DocAutoList *) {}
visitPost(DocAutoList *)60     void visitPost(DocAutoList *) {}
visitPre(DocAutoListItem *)61     void visitPre(DocAutoListItem *) {}
visitPost(DocAutoListItem *)62     void visitPost(DocAutoListItem *) {}
visitPre(DocPara *)63     void visitPre(DocPara *)  {}
visitPost(DocPara *)64     void visitPost(DocPara *) {}
visitPre(DocRoot *)65     void visitPre(DocRoot *) {}
visitPost(DocRoot *)66     void visitPost(DocRoot *) {}
visitPre(DocSimpleSect *)67     void visitPre(DocSimpleSect *) {}
visitPost(DocSimpleSect *)68     void visitPost(DocSimpleSect *) {}
visitPre(DocTitle *)69     void visitPre(DocTitle *) {}
visitPost(DocTitle *)70     void visitPost(DocTitle *) {}
visitPre(DocSimpleList *)71     void visitPre(DocSimpleList *) {}
visitPost(DocSimpleList *)72     void visitPost(DocSimpleList *) {}
visitPre(DocSimpleListItem *)73     void visitPre(DocSimpleListItem *) {}
visitPost(DocSimpleListItem *)74     void visitPost(DocSimpleListItem *) {}
visitPre(DocSection *)75     void visitPre(DocSection *) {}
visitPost(DocSection *)76     void visitPost(DocSection *) {}
visitPre(DocHtmlList *)77     void visitPre(DocHtmlList *) {}
visitPost(DocHtmlList *)78     void visitPost(DocHtmlList *)  {}
visitPre(DocHtmlListItem *)79     void visitPre(DocHtmlListItem *) {}
visitPost(DocHtmlListItem *)80     void visitPost(DocHtmlListItem *) {}
visitPre(DocHtmlDescList *)81     void visitPre(DocHtmlDescList *) {}
visitPost(DocHtmlDescList *)82     void visitPost(DocHtmlDescList *) {}
visitPre(DocHtmlDescTitle *)83     void visitPre(DocHtmlDescTitle *) {}
visitPost(DocHtmlDescTitle *)84     void visitPost(DocHtmlDescTitle *) {}
visitPre(DocHtmlDescData *)85     void visitPre(DocHtmlDescData *) {}
visitPost(DocHtmlDescData *)86     void visitPost(DocHtmlDescData *) {}
visitPre(DocHtmlTable *)87     void visitPre(DocHtmlTable *) {}
visitPost(DocHtmlTable *)88     void visitPost(DocHtmlTable *) {}
visitPre(DocHtmlRow *)89     void visitPre(DocHtmlRow *) {}
visitPost(DocHtmlRow *)90     void visitPost(DocHtmlRow *)  {}
visitPre(DocHtmlCell *)91     void visitPre(DocHtmlCell *) {}
visitPost(DocHtmlCell *)92     void visitPost(DocHtmlCell *) {}
visitPre(DocHtmlCaption *)93     void visitPre(DocHtmlCaption *) {}
visitPost(DocHtmlCaption *)94     void visitPost(DocHtmlCaption *) {}
visitPre(DocInternal *)95     void visitPre(DocInternal *) {}
visitPost(DocInternal *)96     void visitPost(DocInternal *) {}
visitPre(DocHRef *)97     void visitPre(DocHRef *) {}
visitPost(DocHRef *)98     void visitPost(DocHRef *) {}
visitPre(DocHtmlHeader *)99     void visitPre(DocHtmlHeader *) {}
visitPost(DocHtmlHeader *)100     void visitPost(DocHtmlHeader *) {}
visitPre(DocImage *)101     void visitPre(DocImage *) {}
visitPost(DocImage *)102     void visitPost(DocImage *) {}
visitPre(DocDotFile *)103     void visitPre(DocDotFile *) {}
visitPost(DocDotFile *)104     void visitPost(DocDotFile *) {}
105 
visitPre(DocMscFile *)106     void visitPre(DocMscFile *) {}
visitPost(DocMscFile *)107     void visitPost(DocMscFile *) {}
visitPre(DocDiaFile *)108     void visitPre(DocDiaFile *) {}
visitPost(DocDiaFile *)109     void visitPost(DocDiaFile *) {}
visitPre(DocLink *)110     void visitPre(DocLink *) {}
visitPost(DocLink *)111     void visitPost(DocLink *) {}
visitPre(DocRef *)112     void visitPre(DocRef *) {}
visitPost(DocRef *)113     void visitPost(DocRef *) {}
visitPre(DocSecRefItem *)114     void visitPre(DocSecRefItem *) {}
visitPost(DocSecRefItem *)115     void visitPost(DocSecRefItem *) {}
visitPre(DocSecRefList *)116     void visitPre(DocSecRefList *) {}
visitPost(DocSecRefList *)117     void visitPost(DocSecRefList *) {}
visitPre(DocParamSect *)118     void visitPre(DocParamSect *) {}
visitPost(DocParamSect *)119     void visitPost(DocParamSect *) {}
visitPre(DocParamList *)120     void visitPre(DocParamList *) {}
visitPost(DocParamList *)121     void visitPost(DocParamList *) {}
visitPre(DocXRefItem *)122     void visitPre(DocXRefItem *) {}
visitPost(DocXRefItem *)123     void visitPost(DocXRefItem *) {}
visitPre(DocInternalRef *)124     void visitPre(DocInternalRef *) {}
visitPost(DocInternalRef *)125     void visitPost(DocInternalRef *) {}
visitPre(DocText *)126     void visitPre(DocText *) {}
visitPost(DocText *)127     void visitPost(DocText *) {}
visitPre(DocHtmlBlockQuote *)128     void visitPre(DocHtmlBlockQuote *) {}
visitPost(DocHtmlBlockQuote *)129     void visitPost(DocHtmlBlockQuote *) {}
visitPre(DocVhdlFlow *)130     void visitPre(DocVhdlFlow *) {}
visitPost(DocVhdlFlow *)131     void visitPost(DocVhdlFlow *) {}
visitPre(DocParBlock *)132     void visitPre(DocParBlock *) {}
visitPost(DocParBlock *)133     void visitPost(DocParBlock *) {}
134 
135   private:
136 
137     void filter(const QCString &str);
138 
139     TextStream &m_t;
140 };
141 
142 #endif
143