|
1 /****************************************************************************** |
|
2 * |
|
3 * |
|
4 * |
|
5 * |
|
6 * Copyright (C) 1997-2008 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 DocLink; |
|
69 class DocRef; |
|
70 class DocFormula; |
|
71 class DocSecRefItem; |
|
72 class DocSecRefList; |
|
73 //class DocLanguage; |
|
74 class DocLinkedWord; |
|
75 class DocParamSect; |
|
76 class DocParamList; |
|
77 class DocInternalRef; |
|
78 class DocCopy; |
|
79 class DocText; |
|
80 class DocSimpleSectSep; |
|
81 |
|
82 /*! @brief Abstract visitor that participates in the visitor pattern. |
|
83 */ |
|
84 class DocVisitor |
|
85 { |
|
86 int m_id; |
|
87 public: |
|
88 DocVisitor(int id) : m_id(id) {} |
|
89 virtual ~DocVisitor() {} |
|
90 int id() const { return m_id; } |
|
91 |
|
92 /*! @name Visitor functions for leaf nodes |
|
93 * @{ |
|
94 */ |
|
95 virtual void visit(DocWord *) = 0; |
|
96 virtual void visit(DocWhiteSpace *) = 0; |
|
97 virtual void visit(DocSymbol *) = 0; |
|
98 virtual void visit(DocURL *) = 0; |
|
99 virtual void visit(DocStyleChange *) = 0; |
|
100 virtual void visit(DocVerbatim *) = 0; |
|
101 virtual void visit(DocLineBreak *) = 0; |
|
102 virtual void visit(DocHorRuler *) = 0; |
|
103 virtual void visit(DocAnchor *) = 0; |
|
104 virtual void visit(DocInclude *) = 0; |
|
105 virtual void visit(DocIncOperator *) = 0; |
|
106 virtual void visit(DocFormula *) = 0; |
|
107 virtual void visit(DocLinkedWord *) = 0; |
|
108 virtual void visit(DocIndexEntry *) = 0; |
|
109 virtual void visit(DocSimpleSectSep *) = 0; |
|
110 /*! @} */ |
|
111 |
|
112 /*! @name Visitor functions for internal nodes |
|
113 * @{ |
|
114 */ |
|
115 virtual void visitPre(DocAutoList *) = 0; |
|
116 virtual void visitPost(DocAutoList *) = 0; |
|
117 virtual void visitPre(DocAutoListItem *) = 0; |
|
118 virtual void visitPost(DocAutoListItem *) = 0; |
|
119 virtual void visitPre(DocPara *) = 0; |
|
120 virtual void visitPost(DocPara *) = 0; |
|
121 virtual void visitPre(DocRoot *) = 0; |
|
122 virtual void visitPost(DocRoot *) = 0; |
|
123 virtual void visitPre(DocSimpleSect *) = 0; |
|
124 virtual void visitPost(DocSimpleSect *) = 0; |
|
125 virtual void visitPre(DocTitle *) = 0; |
|
126 virtual void visitPost(DocTitle *) = 0; |
|
127 virtual void visitPre(DocSimpleList *) = 0; |
|
128 virtual void visitPost(DocSimpleList *) = 0; |
|
129 virtual void visitPre(DocSimpleListItem *) = 0; |
|
130 virtual void visitPost(DocSimpleListItem *) = 0; |
|
131 virtual void visitPre(DocSection *) = 0; |
|
132 virtual void visitPost(DocSection *) = 0; |
|
133 virtual void visitPre(DocHtmlList *) = 0; |
|
134 virtual void visitPost(DocHtmlListItem *) = 0; |
|
135 virtual void visitPre(DocHtmlListItem *) = 0; |
|
136 virtual void visitPost(DocHtmlList *) = 0; |
|
137 virtual void visitPre(DocHtmlDescList *) = 0; |
|
138 virtual void visitPost(DocHtmlDescList *) = 0; |
|
139 virtual void visitPre(DocHtmlDescTitle *) = 0; |
|
140 virtual void visitPost(DocHtmlDescTitle *) = 0; |
|
141 virtual void visitPre(DocHtmlDescData *) = 0; |
|
142 virtual void visitPost(DocHtmlDescData *) = 0; |
|
143 virtual void visitPre(DocHtmlTable *) = 0; |
|
144 virtual void visitPost(DocHtmlRow *) = 0; |
|
145 virtual void visitPre(DocHtmlCell *) = 0; |
|
146 virtual void visitPost(DocHtmlCell *) = 0; |
|
147 virtual void visitPre(DocHtmlRow *) = 0; |
|
148 virtual void visitPost(DocHtmlTable *) = 0; |
|
149 virtual void visitPre(DocHtmlCaption *) = 0; |
|
150 virtual void visitPost(DocHtmlCaption *) = 0; |
|
151 virtual void visitPre(DocInternal *) = 0; |
|
152 virtual void visitPost(DocInternal *) = 0; |
|
153 virtual void visitPre(DocHRef *) = 0; |
|
154 virtual void visitPost(DocHRef *) = 0; |
|
155 virtual void visitPre(DocHtmlHeader *) = 0; |
|
156 virtual void visitPost(DocHtmlHeader *) = 0; |
|
157 virtual void visitPre(DocImage *) = 0; |
|
158 virtual void visitPost(DocImage *) = 0; |
|
159 virtual void visitPre(DocDotFile *) = 0; |
|
160 virtual void visitPost(DocDotFile *) = 0; |
|
161 virtual void visitPre(DocLink *) = 0; |
|
162 virtual void visitPost(DocLink *) = 0; |
|
163 virtual void visitPre(DocRef *) = 0; |
|
164 virtual void visitPost(DocRef *) = 0; |
|
165 virtual void visitPre(DocSecRefItem *) = 0; |
|
166 virtual void visitPost(DocSecRefItem *) = 0; |
|
167 virtual void visitPre(DocSecRefList *) = 0; |
|
168 virtual void visitPost(DocSecRefList *) = 0; |
|
169 //virtual void visitPre(DocLanguage *) = 0; |
|
170 //virtual void visitPost(DocLanguage *) = 0; |
|
171 virtual void visitPre(DocParamSect *) = 0; |
|
172 virtual void visitPost(DocParamSect *) = 0; |
|
173 virtual void visitPre(DocParamList *) = 0; |
|
174 virtual void visitPost(DocParamList *) = 0; |
|
175 virtual void visitPre(DocXRefItem *) = 0; |
|
176 virtual void visitPost(DocXRefItem *) = 0; |
|
177 virtual void visitPre(DocInternalRef *) = 0; |
|
178 virtual void visitPost(DocInternalRef *) = 0; |
|
179 virtual void visitPre(DocCopy *) = 0; |
|
180 virtual void visitPost(DocCopy *) = 0; |
|
181 virtual void visitPre(DocText *) = 0; |
|
182 virtual void visitPost(DocText *) = 0; |
|
183 /*! @} */ |
|
184 }; |
|
185 |
|
186 #endif |