Orb/Doxygen/src/xmlditadocvisitor.h
changeset 3 d8fccb2cd802
child 4 468f4c8d3d5b
equal deleted inserted replaced
2:932c358ece3e 3:d8fccb2cd802
       
     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 &paramName) 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