Fix for UBSan build
[platform/upstream/doxygen.git] / src / docvisitor.h
1 /******************************************************************************
2  *
3  * $Id: $
4  *
5  *
6  * Copyright (C) 1997-2012 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 _DOCVISITOR_H
20 #define _DOCVISITOR_H
21
22 // ids
23 const int DocVisitor_Html  = 0;
24 const int DocVisitor_Latex = 1;
25 const int DocVisitor_XML   = 2;
26 const int DocVisitor_RTF   = 3;
27 const int DocVisitor_Man   = 4;
28 const int DocVisitor_Text  = 5;
29 const int DocVisitor_Other = 6;
30
31 // forward declarations
32 class DocWord;
33 class DocWhiteSpace;
34 class DocAutoList;
35 class DocAutoListItem;
36 class DocPara;
37 class DocRoot;
38 class DocSymbol;
39 class DocURL;
40 class DocStyleChange;
41 class DocSimpleSect;
42 class DocTitle;
43 class DocSimpleList;
44 class DocSimpleListItem;
45 class DocSection;
46 class DocVerbatim;
47 class DocXRefItem;
48 class DocHtmlList;
49 class DocHtmlListItem;
50 class DocHtmlDescList;
51 class DocHtmlDescTitle;
52 class DocHtmlDescData;
53 class DocHtmlTable;
54 class DocHtmlRow;
55 class DocHtmlCell;
56 class DocHtmlCaption;
57 class DocLineBreak;
58 class DocHorRuler;
59 class DocAnchor;
60 class DocIndexEntry;
61 class DocInternal;
62 class DocHRef;
63 class DocInclude;
64 class DocIncOperator;
65 class DocHtmlHeader;
66 class DocImage;
67 class DocDotFile;
68 class DocMscFile;
69 class DocLink;
70 class DocCite;
71 class DocRef;
72 class DocFormula;
73 class DocSecRefItem;
74 class DocSecRefList;
75 class DocLinkedWord;
76 class DocParamSect;
77 class DocParamList;
78 class DocInternalRef;
79 class DocCopy; // TODO: no longer generated => remove
80 class DocText;
81 class DocSimpleSectSep;
82 class DocHtmlBlockQuote;
83
84 /*! @brief Abstract visitor that participates in the visitor pattern.
85  */
86 class DocVisitor
87 {
88     int m_id;
89   public:
90     DocVisitor(int id) : m_id(id) {}
91     virtual ~DocVisitor() {}
92     int id() const { return m_id; }
93
94     /*! @name Visitor functions for leaf nodes 
95      *  @{
96      */
97     virtual void visit(DocWord *) = 0;
98     virtual void visit(DocWhiteSpace *) = 0;
99     virtual void visit(DocSymbol *) = 0;
100     virtual void visit(DocURL *) = 0;
101     virtual void visit(DocStyleChange *) = 0;
102     virtual void visit(DocVerbatim *) = 0;
103     virtual void visit(DocLineBreak *) = 0;
104     virtual void visit(DocHorRuler *) = 0;
105     virtual void visit(DocAnchor *) = 0;
106     virtual void visit(DocInclude *) = 0;
107     virtual void visit(DocIncOperator *) = 0;
108     virtual void visit(DocFormula *) = 0;
109     virtual void visit(DocLinkedWord *) = 0;
110     virtual void visit(DocIndexEntry *) = 0;
111     virtual void visit(DocSimpleSectSep *) = 0;
112     virtual void visit(DocCite *) = 0;
113     /*! @} */
114
115     /*! @name Visitor functions for internal nodes 
116      *  @{
117      */
118     virtual void visitPre(DocAutoList *) = 0;
119     virtual void visitPost(DocAutoList *) = 0;
120     virtual void visitPre(DocAutoListItem *) = 0;
121     virtual void visitPost(DocAutoListItem *) = 0;
122     virtual void visitPre(DocPara *) = 0;
123     virtual void visitPost(DocPara *) = 0;
124     virtual void visitPre(DocRoot *) = 0;
125     virtual void visitPost(DocRoot *) = 0;
126     virtual void visitPre(DocSimpleSect *) = 0;
127     virtual void visitPost(DocSimpleSect *) = 0;
128     virtual void visitPre(DocTitle *) = 0;
129     virtual void visitPost(DocTitle *) = 0;
130     virtual void visitPre(DocSimpleList *) = 0;
131     virtual void visitPost(DocSimpleList *) = 0;
132     virtual void visitPre(DocSimpleListItem *) = 0;
133     virtual void visitPost(DocSimpleListItem *) = 0;
134     virtual void visitPre(DocSection *) = 0;
135     virtual void visitPost(DocSection *) = 0;
136     virtual void visitPre(DocHtmlList *) = 0;
137     virtual void visitPost(DocHtmlListItem *) = 0;
138     virtual void visitPre(DocHtmlListItem *) = 0;
139     virtual void visitPost(DocHtmlList *) = 0;
140     virtual void visitPre(DocHtmlDescList *) = 0;
141     virtual void visitPost(DocHtmlDescList *) = 0;
142     virtual void visitPre(DocHtmlDescTitle *) = 0;
143     virtual void visitPost(DocHtmlDescTitle *) = 0;
144     virtual void visitPre(DocHtmlDescData *) = 0;
145     virtual void visitPost(DocHtmlDescData *) = 0;
146     virtual void visitPre(DocHtmlTable *) = 0;
147     virtual void visitPost(DocHtmlRow *) = 0;
148     virtual void visitPre(DocHtmlCell *) = 0;
149     virtual void visitPost(DocHtmlCell *) = 0;
150     virtual void visitPre(DocHtmlRow *) = 0;
151     virtual void visitPost(DocHtmlTable *) = 0;
152     virtual void visitPre(DocHtmlCaption *) = 0;
153     virtual void visitPost(DocHtmlCaption *) = 0;
154     virtual void visitPre(DocInternal *) = 0;
155     virtual void visitPost(DocInternal *) = 0;
156     virtual void visitPre(DocHRef *) = 0;
157     virtual void visitPost(DocHRef *) = 0;
158     virtual void visitPre(DocHtmlHeader *) = 0;
159     virtual void visitPost(DocHtmlHeader *) = 0;
160     virtual void visitPre(DocImage *) = 0;
161     virtual void visitPost(DocImage *) = 0;
162     virtual void visitPre(DocDotFile *) = 0;
163     virtual void visitPost(DocDotFile *) = 0;
164     virtual void visitPre(DocMscFile *) = 0;
165     virtual void visitPost(DocMscFile *) = 0;   
166     virtual void visitPre(DocLink *) = 0;
167     virtual void visitPost(DocLink *) = 0;
168     virtual void visitPre(DocRef *) = 0;
169     virtual void visitPost(DocRef *) = 0;
170     virtual void visitPre(DocSecRefItem *) = 0;
171     virtual void visitPost(DocSecRefItem *) = 0;
172     virtual void visitPre(DocSecRefList *) = 0;
173     virtual void visitPost(DocSecRefList *) = 0;
174     virtual void visitPre(DocParamSect *) = 0;
175     virtual void visitPost(DocParamSect *) = 0;
176     virtual void visitPre(DocParamList *) = 0;
177     virtual void visitPost(DocParamList *) = 0;
178     virtual void visitPre(DocXRefItem *) = 0;
179     virtual void visitPost(DocXRefItem *) = 0;
180     virtual void visitPre(DocInternalRef *) = 0;
181     virtual void visitPost(DocInternalRef *) = 0;
182     virtual void visitPre(DocCopy *) = 0;
183     virtual void visitPost(DocCopy *) = 0;
184     virtual void visitPre(DocText *) = 0;
185     virtual void visitPost(DocText *) = 0;
186     virtual void visitPre(DocHtmlBlockQuote *) = 0;
187     virtual void visitPost(DocHtmlBlockQuote *) = 0;
188     /*! @} */
189 };
190
191 #endif