Imported Upstream version 1.9.8
[platform/upstream/doxygen.git] / src / xmldocvisitor.h
index 9f88056..4439c82 100644 (file)
 
 #include "qcstring.h"
 #include "docvisitor.h"
+#include "docnode.h"
 #include "textstream.h"
 
-class CodeOutputInterface;
+class OutputCodeList;
 class QCString;
 
 /*! @brief Concrete visitor implementation for XML output. */
 class XmlDocVisitor : public DocVisitor
 {
   public:
-    XmlDocVisitor(TextStream &t,CodeOutputInterface &ci,const QCString &langExt);
+    XmlDocVisitor(TextStream &t,OutputCodeList &ci,const QCString &langExt);
 
     //--------------------------------------
     // visitor functions for leaf nodes
     //--------------------------------------
 
-    void visit(DocWord *);
-    void visit(DocLinkedWord *);
-    void visit(DocWhiteSpace *);
-    void visit(DocSymbol *);
-    void visit(DocEmoji *);
-    void visit(DocURL *);
-    void visit(DocLineBreak *);
-    void visit(DocHorRuler *);
-    void visit(DocStyleChange *);
-    void visit(DocVerbatim *);
-    void visit(DocAnchor *);
-    void visit(DocInclude *);
-    void visit(DocIncOperator *);
-    void visit(DocFormula *);
-    void visit(DocIndexEntry *);
-    void visit(DocSimpleSectSep *);
-    void visit(DocCite *);
+    void operator()(const DocWord &);
+    void operator()(const DocLinkedWord &);
+    void operator()(const DocWhiteSpace &);
+    void operator()(const DocSymbol &);
+    void operator()(const DocEmoji &);
+    void operator()(const DocURL &);
+    void operator()(const DocLineBreak &);
+    void operator()(const DocHorRuler &);
+    void operator()(const DocStyleChange &);
+    void operator()(const DocVerbatim &);
+    void operator()(const DocAnchor &);
+    void operator()(const DocInclude &);
+    void operator()(const DocIncOperator &);
+    void operator()(const DocFormula &);
+    void operator()(const DocIndexEntry &);
+    void operator()(const DocSimpleSectSep &);
+    void operator()(const DocCite &);
+    void operator()(const DocSeparator &);
 
     //--------------------------------------
     // visitor functions for compound nodes
     //--------------------------------------
 
-    void visitPre(DocAutoList *);
-    void visitPost(DocAutoList *);
-    void visitPre(DocAutoListItem *);
-    void visitPost(DocAutoListItem *);
-    void visitPre(DocPara *) ;
-    void visitPost(DocPara *);
-    void visitPre(DocRoot *);
-    void visitPost(DocRoot *);
-    void visitPre(DocSimpleSect *);
-    void visitPost(DocSimpleSect *);
-    void visitPre(DocTitle *);
-    void visitPost(DocTitle *);
-    void visitPre(DocSimpleList *);
-    void visitPost(DocSimpleList *);
-    void visitPre(DocSimpleListItem *);
-    void visitPost(DocSimpleListItem *);
-    void visitPre(DocSection *);
-    void visitPost(DocSection *);
-    void visitPre(DocHtmlList *);
-    void visitPost(DocHtmlList *) ;
-    void visitPre(DocHtmlListItem *);
-    void visitPost(DocHtmlListItem *);
-    //void visitPre(DocHtmlPre *);
-    //void visitPost(DocHtmlPre *);
-    void visitPre(DocHtmlDescList *);
-    void visitPost(DocHtmlDescList *);
-    void visitPre(DocHtmlDescTitle *);
-    void visitPost(DocHtmlDescTitle *);
-    void visitPre(DocHtmlDescData *);
-    void visitPost(DocHtmlDescData *);
-    void visitPre(DocHtmlTable *);
-    void visitPost(DocHtmlTable *);
-    void visitPre(DocHtmlRow *);
-    void visitPost(DocHtmlRow *) ;
-    void visitPre(DocHtmlCell *);
-    void visitPost(DocHtmlCell *);
-    void visitPre(DocHtmlCaption *);
-    void visitPost(DocHtmlCaption *);
-    void visitPre(DocInternal *);
-    void visitPost(DocInternal *);
-    void visitPre(DocHRef *);
-    void visitPost(DocHRef *);
-    void visitPre(DocHtmlHeader *);
-    void visitPost(DocHtmlHeader *);
-    void visitPre(DocImage *);
-    void visitPost(DocImage *);
-    void visitPre(DocDotFile *);
-    void visitPost(DocDotFile *);
-
-    void visitPre(DocMscFile *);
-    void visitPost(DocMscFile *);
-    void visitPre(DocDiaFile *);
-    void visitPost(DocDiaFile *);
-    void visitPre(DocLink *);
-    void visitPost(DocLink *);
-    void visitPre(DocRef *);
-    void visitPost(DocRef *);
-    void visitPre(DocSecRefItem *);
-    void visitPost(DocSecRefItem *);
-    void visitPre(DocSecRefList *);
-    void visitPost(DocSecRefList *);
-    //void visitPre(DocLanguage *);
-    //void visitPost(DocLanguage *);
-    void visitPre(DocParamSect *);
-    void visitPost(DocParamSect *);
-    void visitPre(DocParamList *);
-    void visitPost(DocParamList *);
-    void visitPre(DocXRefItem *);
-    void visitPost(DocXRefItem *);
-    void visitPre(DocInternalRef *);
-    void visitPost(DocInternalRef *);
-    void visitPre(DocText *);
-    void visitPost(DocText *);
-    void visitPre(DocHtmlBlockQuote *);
-    void visitPost(DocHtmlBlockQuote *);
-    void visitPre(DocVhdlFlow *);
-    void visitPost(DocVhdlFlow *);
-    void visitPre(DocParBlock *);
-    void visitPost(DocParBlock *);
+    void operator()(const DocAutoList &);
+    void operator()(const DocAutoListItem &);
+    void operator()(const DocPara &) ;
+    void operator()(const DocRoot &);
+    void operator()(const DocSimpleSect &);
+    void operator()(const DocTitle &);
+    void operator()(const DocSimpleList &);
+    void operator()(const DocSimpleListItem &);
+    void operator()(const DocSection &);
+    void operator()(const DocHtmlList &);
+    void operator()(const DocHtmlListItem &);
+    void operator()(const DocHtmlDescList &);
+    void operator()(const DocHtmlDescTitle &);
+    void operator()(const DocHtmlDescData &);
+    void operator()(const DocHtmlTable &);
+    void operator()(const DocHtmlRow &);
+    void operator()(const DocHtmlCell &);
+    void operator()(const DocHtmlCaption &);
+    void operator()(const DocInternal &);
+    void operator()(const DocHRef &);
+    void operator()(const DocHtmlSummary &);
+    void operator()(const DocHtmlDetails &);
+    void operator()(const DocHtmlHeader &);
+    void operator()(const DocImage &);
+    void operator()(const DocDotFile &);
+    void operator()(const DocMscFile &);
+    void operator()(const DocDiaFile &);
+    void operator()(const DocLink &);
+    void operator()(const DocRef &);
+    void operator()(const DocSecRefItem &);
+    void operator()(const DocSecRefList &);
+    void operator()(const DocParamSect &);
+    void operator()(const DocParamList &);
+    void operator()(const DocXRefItem &);
+    void operator()(const DocInternalRef &);
+    void operator()(const DocText &);
+    void operator()(const DocHtmlBlockQuote &);
+    void operator()(const DocVhdlFlow &);
+    void operator()(const DocParBlock &);
 
   private:
+    template<class T>
+    void visitChildren(const T &t)
+    {
+      for (const auto &child : t.children())
+      {
+        std::visit(*this, child);
+      }
+    }
 
     //--------------------------------------
     // helper functions
@@ -156,7 +126,7 @@ class XmlDocVisitor : public DocVisitor
     //--------------------------------------
 
     TextStream &m_t;
-    CodeOutputInterface &m_ci;
+    OutputCodeList &m_ci;
     bool m_insidePre;
     bool m_hide;
     QCString m_langExt;