|
1 |
|
2 #ifndef _XMLDITADOCVISITOR_H |
|
3 #define _XMLDITADOCVISITOR_H |
|
4 |
|
5 #include "docvisitor.h" |
|
6 #include "xmlwriter.h" |
|
7 #include <qstack.h> |
|
8 #include <qcstring.h> |
|
9 #include <qmap.h> |
|
10 #include <qdict.h> |
|
11 |
|
12 |
|
13 class QTextStream; |
|
14 class CodeOutputInterface; |
|
15 class QString; |
|
16 |
|
17 /*! @brief Concrete visitor implementation for XML output. */ |
|
18 class XmlDitaDocVisitor : public DocVisitor |
|
19 { |
|
20 public: |
|
21 XmlDitaDocVisitor(XmlStream &s,CodeOutputInterface &ci); |
|
22 |
|
23 //-------------------------------------- |
|
24 // visitor functions for leaf nodes |
|
25 //-------------------------------------- |
|
26 |
|
27 void visit(DocWord *); |
|
28 void visit(DocLinkedWord *); |
|
29 void visit(DocWhiteSpace *); |
|
30 void visit(DocSymbol *); |
|
31 void visit(DocURL *); |
|
32 void visit(DocLineBreak *); |
|
33 void visit(DocHorRuler *); |
|
34 void visit(DocStyleChange *); |
|
35 void visit(DocVerbatim *); |
|
36 void visit(DocAnchor *); |
|
37 void visit(DocInclude *); |
|
38 void visit(DocIncOperator *); |
|
39 void visit(DocFormula *); |
|
40 void visit(DocIndexEntry *); |
|
41 void visit(DocSimpleSectSep *); |
|
42 |
|
43 //-------------------------------------- |
|
44 // visitor functions for compound nodes |
|
45 //-------------------------------------- |
|
46 |
|
47 void visitPre(DocAutoList *); |
|
48 void visitPost(DocAutoList *); |
|
49 void visitPre(DocAutoListItem *); |
|
50 void visitPost(DocAutoListItem *); |
|
51 void visitPre(DocPara *) ; |
|
52 void visitPost(DocPara *); |
|
53 void visitPre(DocRoot *); |
|
54 void visitPost(DocRoot *); |
|
55 void visitPre(DocSimpleSect *); |
|
56 void visitPost(DocSimpleSect *); |
|
57 void visitPre(DocTitle *); |
|
58 void visitPost(DocTitle *); |
|
59 void visitPre(DocSimpleList *); |
|
60 void visitPost(DocSimpleList *); |
|
61 void visitPre(DocSimpleListItem *); |
|
62 void visitPost(DocSimpleListItem *); |
|
63 void visitPre(DocSection *); |
|
64 void visitPost(DocSection *); |
|
65 void visitPre(DocHtmlList *); |
|
66 void visitPost(DocHtmlList *) ; |
|
67 void visitPre(DocHtmlListItem *); |
|
68 void visitPost(DocHtmlListItem *); |
|
69 //void visitPre(DocHtmlPre *); |
|
70 //void visitPost(DocHtmlPre *); |
|
71 void visitPre(DocHtmlDescList *); |
|
72 void visitPost(DocHtmlDescList *); |
|
73 void visitPre(DocHtmlDescTitle *); |
|
74 void visitPost(DocHtmlDescTitle *); |
|
75 void visitPre(DocHtmlDescData *); |
|
76 void visitPost(DocHtmlDescData *); |
|
77 void visitPre(DocHtmlTable *); |
|
78 void visitPost(DocHtmlTable *); |
|
79 void visitPre(DocHtmlRow *); |
|
80 void visitPost(DocHtmlRow *) ; |
|
81 void visitPre(DocHtmlCell *); |
|
82 void visitPost(DocHtmlCell *); |
|
83 void visitPre(DocHtmlCaption *); |
|
84 void visitPost(DocHtmlCaption *); |
|
85 void visitPre(DocInternal *); |
|
86 void visitPost(DocInternal *); |
|
87 void visitPre(DocHRef *); |
|
88 void visitPost(DocHRef *); |
|
89 void visitPre(DocHtmlHeader *); |
|
90 void visitPost(DocHtmlHeader *); |
|
91 void visitPre(DocImage *); |
|
92 void visitPost(DocImage *); |
|
93 void visitPre(DocDotFile *); |
|
94 void visitPost(DocDotFile *); |
|
95 void visitPre(DocLink *); |
|
96 void visitPost(DocLink *); |
|
97 void visitPre(DocRef *); |
|
98 void visitPost(DocRef *); |
|
99 void visitPre(DocSecRefItem *); |
|
100 void visitPost(DocSecRefItem *); |
|
101 void visitPre(DocSecRefList *); |
|
102 void visitPost(DocSecRefList *); |
|
103 //void visitPre(DocLanguage *); |
|
104 //void visitPost(DocLanguage *); |
|
105 void visitPre(DocParamSect *); |
|
106 void visitPost(DocParamSect *); |
|
107 void visitPre(DocParamList *); |
|
108 void visitPost(DocParamList *); |
|
109 void visitPre(DocXRefItem *); |
|
110 void visitPost(DocXRefItem *); |
|
111 void visitPre(DocInternalRef *); |
|
112 void visitPost(DocInternalRef *); |
|
113 void visitPre(DocCopy *); |
|
114 void visitPost(DocCopy *); |
|
115 void visitPre(DocText *); |
|
116 void visitPost(DocText *); |
|
117 |
|
118 virtual ~XmlDitaDocVisitor() {} |
|
119 |
|
120 const QString query(const QString ¶mName) const; |
|
121 QDictIterator<QString> queryIterator() |
|
122 { |
|
123 return QDictIterator<QString>(paramDict); |
|
124 } |
|
125 private: |
|
126 |
|
127 //-------------------------------------- |
|
128 // helper functions |
|
129 //-------------------------------------- |
|
130 |
|
131 void filter(const char *str); |
|
132 void startLink(const QString &ref,const QString &file, |
|
133 const QString &anchor); |
|
134 void endLink(); |
|
135 |
|
136 void write(const QString &string); |
|
137 void push(const QString &tagName); |
|
138 void push(const QString &tagName, const QString &key, const QString &value); |
|
139 void push(const QString &tagName, AttributeMap &map); |
|
140 void pop(const QString &tagName); |
|
141 void pushpop(const QString &tagName); |
|
142 void pushpop(const QString &tagName, const QString &text); |
|
143 |
|
144 void pushEnabled(); |
|
145 void popEnabled(); |
|
146 // Default pop of a single element |
|
147 void visitPreDefault(const QString &elem); |
|
148 // Default pop of a single element |
|
149 void visitPostDefault(const QString &elem); |
|
150 |
|
151 void startXref(const QString &href,const QString &text); |
|
152 void endXref(); |
|
153 bool canPushPara() const; |
|
154 bool canPopPara() const; |
|
155 //-------------------------------------- |
|
156 // state variables |
|
157 //-------------------------------------- |
|
158 XmlStream& xmlStream; |
|
159 XmlElementStack xmlElemStack; |
|
160 CodeOutputInterface &m_ci; |
|
161 bool m_insidePre; |
|
162 bool m_hide; |
|
163 QStack<bool> m_enabled; |
|
164 QCString m_langExt; |
|
165 bool m_insideParamlist; |
|
166 QMap<int, QString> paramMap; |
|
167 QDict<QString> paramDict; |
|
168 QString currParam; |
|
169 }; |
|
170 |
|
171 #endif //_XMLDITADOCVISITOR_H |