Doxygen
xmldocvisitor.cpp
浏览该文件的文档.
1 /******************************************************************************
2  *
3  * Copyright (C) 1997-2020 by Dimitri van Heesch.
4  *
5  * Permission to use, copy, modify, and distribute this software and its
6  * documentation under the terms of the GNU General Public License is hereby
7  * granted. No representations are made about the suitability of this software
8  * for any purpose. It is provided "as is" without express or implied warranty.
9  * See the GNU General Public License for more details.
10  *
11  * Documents produced by Doxygen are derivative works derived from the
12  * input used in their production; they are not affected by this license.
13  *
14  */
15 
16 #include "xmldocvisitor.h"
17 #include "docparser.h"
18 #include "language.h"
19 #include "doxygen.h"
20 #include "outputgen.h"
21 #include "xmlgen.h"
22 #include "dot.h"
23 #include "message.h"
24 #include "util.h"
25 #include "parserintf.h"
26 #include "filename.h"
27 #include "config.h"
28 #include "htmlentity.h"
29 #include "emoji.h"
30 #include "filedef.h"
31 #include "fileinfo.h"
32 
33 static void visitCaption(XmlDocVisitor *parent, const DocNodeList &children)
34 {
35  for (const auto &n : children) n->accept(parent);
36 }
37 
38 static void visitPreStart(TextStream &t, const char *cmd, bool doCaption,
39  XmlDocVisitor *parent, const DocNodeList &children,
40  const QCString &name, bool writeType, DocImage::Type type, const QCString &width,
41  const QCString &height, const QCString engine = QCString(), const QCString &alt = QCString(), bool inlineImage = FALSE)
42 {
43  t << "<" << cmd;
44  if (writeType)
45  {
46  t << " type=\"";
47  switch(type)
48  {
49  case DocImage::Html: t << "html"; break;
50  case DocImage::Latex: t << "latex"; break;
51  case DocImage::Rtf: t << "rtf"; break;
52  case DocImage::DocBook: t << "docbook"; break;
53  case DocImage::Xml: t << "xml"; break;
54  }
55  t << "\"";
56  }
57  if (!name.isEmpty())
58  {
59  t << " name=\"" << convertToXML(name, TRUE) << "\"";
60  }
61  if (!width.isEmpty())
62  {
63  t << " width=\"" << convertToXML(width) << "\"";
64  }
65  if (!height.isEmpty())
66  {
67  t << " height=\"" << convertToXML(height) << "\"";
68  }
69  if (!engine.isEmpty())
70  {
71  t << " engine=\"" << convertToXML(engine) << "\"";
72  }
73  if (!alt.isEmpty())
74  {
75  t << " alt=\"" << convertToXML(alt) << "\"";
76  }
77  if (inlineImage)
78  {
79  t << " inline=\"yes\"";
80  }
81  if (doCaption)
82  {
83  t << " caption=\"";
84  visitCaption(parent, children);
85  t << "\"";
86  }
87  t << ">";
88 }
89 
90 static void visitPostEnd(TextStream &t, const char *cmd)
91 {
92  t << "</" << cmd << ">\n";
93 }
94 
96  : DocVisitor(DocVisitor_XML), m_t(t), m_ci(ci), m_insidePre(FALSE), m_hide(FALSE),
97  m_langExt(langExt)
98 {
99 }
100 
101  //--------------------------------------
102  // visitor functions for leaf nodes
103  //--------------------------------------
104 
106 {
107  if (m_hide) return;
108  filter(w->word());
109 }
110 
112 {
113  if (m_hide) return;
114  startLink(w->ref(),w->file(),w->anchor());
115  filter(w->word());
116  endLink();
117 }
118 
120 {
121  if (m_hide) return;
122  if (m_insidePre)
123  {
124  m_t << w->chars();
125  }
126  else
127  {
128  m_t << " ";
129  }
130 }
131 
133 {
134  if (m_hide) return;
135  const char *res = HtmlEntityMapper::instance()->xml(s->symbol());
136  if (res)
137  {
138  m_t << res;
139  }
140  else
141  {
142  err("XML: non supported HTML-entity found: %s\n",HtmlEntityMapper::instance()->html(s->symbol(),TRUE));
143  }
144 }
145 
147 {
148  if (m_hide) return;
149  const char *res = EmojiEntityMapper::instance()->name(s->index());
150  if (res)
151  {
152  QCString name=res;
153  name = name.mid(1,name.length()-2);
154  m_t << "<emoji name=\"" << name << "\" unicode=\"";
155  filter(EmojiEntityMapper::instance()->unicode(s->index()));
156  m_t << "\"/>";
157  }
158  else
159  {
160  m_t << s->name();
161  }
162 }
163 
165 {
166  if (m_hide) return;
167  m_t << "<ulink url=\"";
168  if (u->isEmail()) m_t << "mailto:";
169  filter(u->url());
170  m_t << "\">";
171  filter(u->url());
172  m_t << "</ulink>";
173 }
174 
176 {
177  if (m_hide) return;
178  m_t << "<linebreak/>\n";
179 }
180 
182 {
183  if (m_hide) return;
184  m_t << "<hruler/>\n";
185 }
186 
188 {
189  if (m_hide) return;
190  switch (s->style())
191  {
193  if (s->enable()) m_t << "<bold>"; else m_t << "</bold>";
194  break;
195  case DocStyleChange::S:
196  if (s->enable()) m_t << "<s>"; else m_t << "</s>";
197  break;
199  if (s->enable()) m_t << "<strike>"; else m_t << "</strike>";
200  break;
201  case DocStyleChange::Del:
202  if (s->enable()) m_t << "<del>"; else m_t << "</del>";
203  break;
205  if (s->enable()) m_t << "<underline>"; else m_t << "</underline>";
206  break;
207  case DocStyleChange::Ins:
208  if (s->enable()) m_t << "<ins>"; else m_t << "</ins>";
209  break;
211  if (s->enable()) m_t << "<emphasis>"; else m_t << "</emphasis>";
212  break;
214  if (s->enable()) m_t << "<computeroutput>"; else m_t << "</computeroutput>";
215  break;
217  if (s->enable()) m_t << "<subscript>"; else m_t << "</subscript>";
218  break;
220  if (s->enable()) m_t << "<superscript>"; else m_t << "</superscript>";
221  break;
223  if (s->enable()) m_t << "<center>"; else m_t << "</center>";
224  break;
226  if (s->enable()) m_t << "<small>"; else m_t << "</small>";
227  break;
229  if (s->enable())
230  {
231  m_t << "<preformatted>";
233  }
234  else
235  {
236  m_t << "</preformatted>";
238  }
239  break;
240  case DocStyleChange::Div: /* HTML only */ break;
241  case DocStyleChange::Span: /* HTML only */ break;
242  }
243 }
244 
246 {
247  if (m_hide) return;
248  QCString lang = m_langExt;
249  if (!s->language().isEmpty()) // explicit language setting
250  {
251  lang = s->language();
252  }
253  SrcLangExt langExt = getLanguageFromCodeLang(lang);
254  switch(s->type())
255  {
256  case DocVerbatim::Code:
257  m_t << "<programlisting";
258  if (!s->language().isEmpty())
259  m_t << " filename=\"" << lang << "\">";
260  else
261  m_t << ">";
262  getCodeParser(lang).parseCode(m_ci,s->context(),s->text(),langExt,
263  s->isExample(),s->exampleFile());
264  m_t << "</programlisting>";
265  break;
267  m_t << "<verbatim>";
268  filter(s->text());
269  m_t << "</verbatim>";
270  break;
272  if (s->isBlock())
273  {
274  m_t << "<htmlonly block=\"yes\">";
275  }
276  else
277  {
278  m_t << "<htmlonly>";
279  }
280  filter(s->text());
281  m_t << "</htmlonly>";
282  break;
284  m_t << "<rtfonly>";
285  filter(s->text());
286  m_t << "</rtfonly>";
287  break;
289  m_t << "<manonly>";
290  filter(s->text());
291  m_t << "</manonly>";
292  break;
294  m_t << "<latexonly>";
295  filter(s->text());
296  m_t << "</latexonly>";
297  break;
299  m_t << "<docbookonly>";
300  filter(s->text());
301  m_t << "</docbookonly>";
302  break;
304  m_t << s->text();
305  break;
306  case DocVerbatim::Dot:
307  visitPreStart(m_t, "dot", s->hasCaption(), this, s->children(), QCString(""), FALSE, DocImage::Html, s->width(), s->height());
308  filter(s->text());
309  visitPostEnd(m_t, "dot");
310  break;
311  case DocVerbatim::Msc:
312  visitPreStart(m_t, "msc", s->hasCaption(), this, s->children(), QCString(""), FALSE, DocImage::Html, s->width(), s->height());
313  filter(s->text());
314  visitPostEnd(m_t, "msc");
315  break;
317  visitPreStart(m_t, "plantuml", s->hasCaption(), this, s->children(), QCString(""), FALSE, DocImage::Html, s->width(), s->height(), s->engine());
318  filter(s->text());
319  visitPostEnd(m_t, "plantuml");
320  break;
321  }
322 }
323 
325 {
326  if (m_hide) return;
327  m_t << "<anchor id=\"" << anc->file() << "_1" << anc->anchor() << "\"/>";
328 }
329 
331 {
332  if (m_hide) return;
333  SrcLangExt langExt = getLanguageFromFileName(inc->extension());
334  switch(inc->type())
335  {
337  {
338  m_t << "<programlisting filename=\"" << inc->file() << "\">";
339  FileInfo cfi( inc->file().str() );
340  FileDef *fd = createFileDef( cfi.dirPath(), cfi.fileName() );
342  inc->text(),
343  langExt,
344  inc->isExample(),
345  inc->exampleFile(),
346  fd, // fileDef,
347  -1, // start line
348  -1, // end line
349  FALSE, // inline fragment
350  0, // memberDef
351  TRUE // show line numbers
352  );
353  delete fd;
354  m_t << "</programlisting>";
355  }
356  break;
357  case DocInclude::Include:
358  m_t << "<programlisting filename=\"" << inc->file() << "\">";
360  inc->text(),
361  langExt,
362  inc->isExample(),
363  inc->exampleFile(),
364  0, // fileDef
365  -1, // startLine
366  -1, // endLine
367  TRUE, // inlineFragment
368  0, // memberDef
369  FALSE // show line numbers
370  );
371  m_t << "</programlisting>";
372  break;
375  break;
377  if (inc->isBlock())
378  {
379  m_t << "<htmlonly block=\"yes\">";
380  }
381  else
382  {
383  m_t << "<htmlonly>";
384  }
385  filter(inc->text());
386  m_t << "</htmlonly>";
387  break;
389  m_t << "<latexonly>";
390  filter(inc->text());
391  m_t << "</latexonly>";
392  break;
394  m_t << "<rtfonly>";
395  filter(inc->text());
396  m_t << "</rtfonly>";
397  break;
399  m_t << "<manonly>";
400  filter(inc->text());
401  m_t << "</manonly>";
402  break;
404  filter(inc->text());
405  break;
407  m_t << "<docbookonly>";
408  filter(inc->text());
409  m_t << "</docbookonly>";
410  break;
412  m_t << "<verbatim>";
413  filter(inc->text());
414  m_t << "</verbatim>";
415  break;
416  case DocInclude::Snippet:
417  m_t << "<programlisting filename=\"" << inc->file() << "\">";
419  inc->context(),
420  extractBlock(inc->text(),inc->blockId()),
421  langExt,
422  inc->isExample(),
423  inc->exampleFile()
424  );
425  m_t << "</programlisting>";
426  break;
428  {
429  m_t << "<programlisting filename=\"" << inc->file() << "\">";
430  FileInfo cfi( inc->file().str() );
431  FileDef *fd = createFileDef( cfi.dirPath(), cfi.fileName() );
433  inc->context(),
434  extractBlock(inc->text(),inc->blockId()),
435  langExt,
436  inc->isExample(),
437  inc->exampleFile(),
438  fd,
439  lineBlock(inc->text(),inc->blockId()),
440  -1, // endLine
441  FALSE, // inlineFragment
442  0, // memberDef
443  TRUE // show line number
444  );
445  delete fd;
446  m_t << "</programlisting>";
447  }
448  break;
451  err("Internal inconsistency: found switch SnippetDoc / IncludeDoc in file: %s"
452  "Please create a bug report\n",__FILE__);
453  break;
454  }
455 }
456 
458 {
459  //printf("DocIncOperator: type=%d first=%d, last=%d text='%s'\n",
460  // op->type(),op->isFirst(),op->isLast(),qPrint(op->text()));
461  if (op->isFirst())
462  {
463  if (!m_hide)
464  {
465  m_t << "<programlisting filename=\"" << op->includeFileName() << "\">";
466  }
468  m_hide = TRUE;
469  }
470  QCString locLangExt = getFileNameExtension(op->includeFileName());
471  if (locLangExt.isEmpty()) locLangExt = m_langExt;
472  SrcLangExt langExt = getLanguageFromFileName(locLangExt);
473  if (op->type()!=DocIncOperator::Skip)
474  {
475  m_hide = popHidden();
476  if (!m_hide)
477  {
478  FileDef *fd = 0;
479  if (!op->includeFileName().isEmpty())
480  {
481  FileInfo cfi( op->includeFileName().str() );
482  fd = createFileDef( cfi.dirPath(), cfi.fileName() );
483  }
484 
485  getCodeParser(locLangExt).parseCode(m_ci,op->context(),
486  op->text(),langExt,op->isExample(),
487  op->exampleFile(),
488  fd, // fileDef
489  op->line(), // startLine
490  -1, // endLine
491  FALSE, // inline fragment
492  0, // memberDef
493  op->showLineNo() // show line numbers
494  );
495  if (fd) delete fd;
496  }
498  m_hide=TRUE;
499  }
500  if (op->isLast())
501  {
502  m_hide = popHidden();
503  if (!m_hide) m_t << "</programlisting>";
504  }
505  else
506  {
507  if (!m_hide) m_t << "\n";
508  }
509 }
510 
512 {
513  if (m_hide) return;
514  m_t << "<formula id=\"" << f->id() << "\">";
515  filter(f->text());
516  m_t << "</formula>";
517 }
518 
520 {
521  if (m_hide) return;
522  m_t << "<indexentry>"
523  "<primaryie>";
524  filter(ie->entry());
525  m_t << "</primaryie>"
526  "<secondaryie></secondaryie>"
527  "</indexentry>";
528 }
529 
531 {
532  if (sep->parent() && sep->parent()->kind()==DocNode::Kind_SimpleSect)
533  {
534  visitPost((DocSimpleSect*)sep->parent()); // end current section
535  visitPre((DocSimpleSect*)sep->parent()); // start new section
536  }
537 }
538 
540 {
541  if (m_hide) return;
542  if (!cite->file().isEmpty()) startLink(cite->ref(),cite->file(),cite->anchor());
543  filter(cite->text());
544  if (!cite->file().isEmpty()) endLink();
545 }
546 
547 //--------------------------------------
548 // visitor functions for compound nodes
549 //--------------------------------------
550 
552 {
553  if (m_hide) return;
554  if (l->isEnumList())
555  {
556  m_t << "<orderedlist>\n";
557  }
558  else
559  {
560  m_t << "<itemizedlist>\n";
561  }
562 }
563 
565 {
566  if (m_hide) return;
567  if (l->isEnumList())
568  {
569  m_t << "</orderedlist>\n";
570  }
571  else
572  {
573  m_t << "</itemizedlist>\n";
574  }
575 }
576 
578 {
579  if (m_hide) return;
580  m_t << "<listitem>";
581 }
582 
584 {
585  if (m_hide) return;
586  m_t << "</listitem>";
587 }
588 
590 {
591  if (m_hide) return;
592  m_t << "<para>";
593 }
594 
596 {
597  if (m_hide) return;
598  m_t << "</para>\n";
599 }
600 
602 {
603  //m_t << "<hr><h4><font color=\"red\">New parser:</font></h4>\n";
604 }
605 
607 {
608  //m_t << "<hr><h4><font color=\"red\">Old parser:</font></h4>\n";
609 }
610 
612 {
613  if (m_hide) return;
614  m_t << "<simplesect kind=\"";
615  switch(s->type())
616  {
617  case DocSimpleSect::See:
618  m_t << "see"; break;
620  m_t << "return"; break;
622  m_t << "author"; break;
624  m_t << "authors"; break;
626  m_t << "version"; break;
628  m_t << "since"; break;
629  case DocSimpleSect::Date:
630  m_t << "date"; break;
631  case DocSimpleSect::Note:
632  m_t << "note"; break;
634  m_t << "warning"; break;
635  case DocSimpleSect::Pre:
636  m_t << "pre"; break;
637  case DocSimpleSect::Post:
638  m_t << "post"; break;
640  m_t << "copyright"; break;
642  m_t << "invariant"; break;
644  m_t << "remark"; break;
646  m_t << "attention"; break;
647  case DocSimpleSect::User:
648  m_t << "par"; break;
649  case DocSimpleSect::Rcs:
650  m_t << "rcs"; break;
651  case DocSimpleSect::Unknown: break;
652  }
653  m_t << "\">";
654 }
655 
657 {
658  if (m_hide) return;
659  m_t << "</simplesect>\n";
660 }
661 
663 {
664  if (m_hide) return;
665  m_t << "<title>";
666 }
667 
669 {
670  if (m_hide) return;
671  m_t << "</title>";
672 }
673 
675 {
676  if (m_hide) return;
677  m_t << "<itemizedlist>\n";
678 }
679 
681 {
682  if (m_hide) return;
683  m_t << "</itemizedlist>\n";
684 }
685 
687 {
688  if (m_hide) return;
689  m_t << "<listitem>";
690 }
691 
693 {
694  if (m_hide) return;
695  m_t << "</listitem>\n";
696 }
697 
699 {
700  if (m_hide) return;
701  m_t << "<sect" << s->level() << " id=\"" << s->file();
702  if (!s->anchor().isEmpty()) m_t << "_1" << s->anchor();
703  m_t << "\">\n";
704  m_t << "<title>";
706  m_t << "</title>\n";
707 }
708 
710 {
711  m_t << "</sect" << s->level() << ">\n";
712 }
713 
715 {
716  if (m_hide) return;
717  if (s->type()==DocHtmlList::Ordered)
718  {
719  m_t << "<orderedlist";
720  for (const auto &opt : s->attribs())
721  {
722  m_t << " " << opt.name << "=\"" << opt.value << "\"";
723  }
724  m_t << ">\n";
725  }
726  else
727  m_t << "<itemizedlist>\n";
728 }
729 
731 {
732  if (m_hide) return;
733  if (s->type()==DocHtmlList::Ordered)
734  m_t << "</orderedlist>\n";
735  else
736  m_t << "</itemizedlist>\n";
737 }
738 
740 {
741  if (m_hide) return;
742  m_t << "<listitem";
743  for (const auto &opt : l->attribs())
744  {
745  if (opt.name=="value")
746  {
747  m_t << " " << opt.name << "=\"" << opt.value << "\"";
748  }
749  }
750  m_t << ">\n";
751 }
752 
754 {
755  if (m_hide) return;
756  m_t << "</listitem>\n";
757 }
758 
760 {
761  if (m_hide) return;
762  m_t << "<variablelist>\n";
763 }
764 
766 {
767  if (m_hide) return;
768  m_t << "</variablelist>\n";
769 }
770 
772 {
773  if (m_hide) return;
774  m_t << "<varlistentry><term>";
775 }
776 
778 {
779  if (m_hide) return;
780  m_t << "</term></varlistentry>\n";
781 }
782 
784 {
785  if (m_hide) return;
786  m_t << "<listitem>";
787 }
788 
790 {
791  if (m_hide) return;
792  m_t << "</listitem>\n";
793 }
794 
796 {
797  if (m_hide) return;
798  m_t << "<table rows=\"" << (uint)t->numRows()
799  << "\" cols=\"" << (uint)t->numColumns() << "\"" ;
800  for (const auto &opt : t->attribs())
801  {
802  if (opt.name=="width")
803  {
804  m_t << " " << opt.name << "=\"" << opt.value << "\"";
805  }
806  }
807  m_t << ">";
808 }
809 
811 {
812  if (m_hide) return;
813  m_t << "</table>\n";
814 }
815 
817 {
818  if (m_hide) return;
819  m_t << "<row>\n";
820 }
821 
823 {
824  if (m_hide) return;
825  m_t << "</row>\n";
826 }
827 
829 {
830  if (m_hide) return;
831  if (c->isHeading()) m_t << "<entry thead=\"yes\""; else m_t << "<entry thead=\"no\"";
832  for (const auto &opt : c->attribs())
833  {
834  if (opt.name=="colspan" || opt.name=="rowspan")
835  {
836  m_t << " " << opt.name << "=\"" << opt.value.toInt() << "\"";
837  }
838  else if (opt.name=="align" &&
839  (opt.value=="right" || opt.value=="left" || opt.value=="center"))
840  {
841  m_t << " align=\"" << opt.value << "\"";
842  }
843  else if (opt.name=="valign" &&
844  (opt.value == "bottom" || opt.value == "top" || opt.value == "middle"))
845  {
846  m_t << " valign=\"" << opt.value << "\"";
847  }
848  else if (opt.name=="width")
849  {
850  m_t << " width=\"" << opt.value << "\"";
851  }
852  else if (opt.name=="class") // handle markdown generated attributes
853  {
854  if (opt.value.left(13)=="markdownTable") // handle markdown generated attributes
855  {
856  if (opt.value.right(5)=="Right")
857  {
858  m_t << " align='right'";
859  }
860  else if (opt.value.right(4)=="Left")
861  {
862  m_t << " align='left'";
863  }
864  else if (opt.value.right(6)=="Center")
865  {
866  m_t << " align='center'";
867  }
868  // skip 'markdownTable*' value ending with "None"
869  }
870  else if (!opt.value.isEmpty())
871  {
872  m_t << " class=\"" << convertToXML(opt.value) << "\"";
873  }
874  }
875  }
876  m_t << ">";
877 }
878 
880 {
881  if (m_hide) return;
882  m_t << "</entry>";
883 }
884 
886 {
887  if (m_hide) return;
888  m_t << "<caption>";
889 }
890 
892 {
893  if (m_hide) return;
894  m_t << "</caption>\n";
895 }
896 
898 {
899  if (m_hide) return;
900  m_t << "<internal>";
901 }
902 
904 {
905  if (m_hide) return;
906  m_t << "</internal>\n";
907 }
908 
910 {
911  if (m_hide) return;
912  m_t << "<ulink url=\"" << convertToXML(href->url(), TRUE) << "\">";
913 }
914 
916 {
917  if (m_hide) return;
918  m_t << "</ulink>";
919 }
920 
922 {
923  if (m_hide) return;
924  m_t << "<heading level=\"" << header->level() << "\">";
925 }
926 
928 {
929  if (m_hide) return;
930  m_t << "</heading>\n";
931 }
932 
934 {
935  if (m_hide) return;
936 
937  QCString url = img->url();
938  QCString baseName;
939  if (url.isEmpty())
940  {
941  baseName = img->relPath()+img->name();
942  }
943  else
944  {
945  baseName = correctURL(url,img->relPath());
946  }
947  HtmlAttribList attribs = img->attribs();
948  auto it = std::find_if(attribs.begin(),attribs.end(),
949  [](const auto &att) { return att.name=="alt"; });
950  QCString altValue = it!=attribs.end() ? it->value : "";
951  visitPreStart(m_t, "image", FALSE, this, img->children(), baseName, TRUE,
952  img->type(), img->width(), img->height(), QCString(),
953  altValue, img->isInlineImage());
954 
955  // copy the image to the output dir
956  FileDef *fd;
957  bool ambig;
958  if (url.isEmpty() && (fd=findFileDef(Doxygen::imageNameLinkedMap,img->name(),ambig)))
959  {
960  copyFile(fd->absFilePath(),Config_getString(XML_OUTPUT)+"/"+baseName);
961  }
962 }
963 
965 {
966  if (m_hide) return;
967  visitPostEnd(m_t, "image");
968 }
969 
971 {
972  if (m_hide) return;
973  visitPreStart(m_t, "dotfile", FALSE, this, df->children(), df->file(), FALSE, DocImage::Html, df->width(), df->height());
974 }
975 
977 {
978  if (m_hide) return;
979  visitPostEnd(m_t, "dotfile");
980 }
981 
983 {
984  if (m_hide) return;
985  visitPreStart(m_t, "mscfile", FALSE, this, df->children(), df->file(), FALSE, DocImage::Html, df->width(), df->height());
986 }
987 
989 {
990  if (m_hide) return;
991  visitPostEnd(m_t, "mscfile");
992 }
993 
995 {
996  if (m_hide) return;
997  visitPreStart(m_t, "diafile", FALSE, this, df->children(), df->file(), FALSE, DocImage::Html, df->width(), df->height());
998 }
999 
1001 {
1002  if (m_hide) return;
1003  visitPostEnd(m_t, "diafile");
1004 }
1005 
1007 {
1008  if (m_hide) return;
1009  startLink(lnk->ref(),lnk->file(),lnk->anchor());
1010 }
1011 
1013 {
1014  if (m_hide) return;
1015  endLink();
1016 }
1017 
1019 {
1020  if (m_hide) return;
1021  if (!ref->file().isEmpty())
1022  {
1023  startLink(ref->ref(),ref->file(),ref->isSubPage() ? QCString() : ref->anchor());
1024  }
1025  if (!ref->hasLinkText()) filter(ref->targetTitle());
1026 }
1027 
1029 {
1030  if (m_hide) return;
1031  if (!ref->file().isEmpty()) endLink();
1032  //m_t << " ";
1033 }
1034 
1036 {
1037  if (m_hide) return;
1038  m_t << "<tocitem id=\"" << ref->file();
1039  if (!ref->anchor().isEmpty()) m_t << "_1" << ref->anchor();
1040  m_t << "\"";
1041  m_t << ">";
1042 }
1043 
1045 {
1046  if (m_hide) return;
1047  m_t << "</tocitem>\n";
1048 }
1049 
1051 {
1052  if (m_hide) return;
1053  m_t << "<toclist>\n";
1054 }
1055 
1057 {
1058  if (m_hide) return;
1059  m_t << "</toclist>\n";
1060 }
1061 
1062 //void XmlDocVisitor::visitPre(DocLanguage *l)
1063 //{
1064 // if (m_hide) return;
1065 // m_t << "<language langid=\"" << l->id() << "\">";
1066 //}
1067 //
1068 //void XmlDocVisitor::visitPost(DocLanguage *)
1069 //{
1070 // if (m_hide) return;
1071 // m_t << "</language>\n";
1072 //}
1073 
1075 {
1076  if (m_hide) return;
1077  m_t << "<parameterlist kind=\"";
1078  switch(s->type())
1079  {
1080  case DocParamSect::Param:
1081  m_t << "param"; break;
1082  case DocParamSect::RetVal:
1083  m_t << "retval"; break;
1085  m_t << "exception"; break;
1087  m_t << "templateparam"; break;
1088  default:
1089  ASSERT(0);
1090  }
1091  m_t << "\">";
1092 }
1093 
1095 {
1096  if (m_hide) return;
1097  m_t << "</parameterlist>\n";
1098 }
1099 
1101 {
1102  if (m_hide) return;
1103  m_t << "<parameteritem>\n";
1104  m_t << "<parameternamelist>\n";
1105  for (const auto &param : pl->parameters())
1106  {
1107  if (!pl->paramTypes().empty())
1108  {
1109  m_t << "<parametertype>";
1110  for (const auto &type : pl->paramTypes())
1111  {
1112  if (type->kind()==DocNode::Kind_Word)
1113  {
1114  visit((DocWord*)type.get());
1115  }
1116  else if (type->kind()==DocNode::Kind_LinkedWord)
1117  {
1118  visit((DocLinkedWord*)type.get());
1119  }
1120  else if (type->kind()==DocNode::Kind_Sep)
1121  {
1122  m_t << "</parametertype>\n";
1123  m_t << "<parametertype>";
1124  }
1125  }
1126  m_t << "</parametertype>\n";
1127  }
1128  m_t << "<parametername";
1130  {
1131  m_t << " direction=\"";
1132  if (pl->direction()==DocParamSect::In)
1133  {
1134  m_t << "in";
1135  }
1136  else if (pl->direction()==DocParamSect::Out)
1137  {
1138  m_t << "out";
1139  }
1140  else if (pl->direction()==DocParamSect::InOut)
1141  {
1142  m_t << "inout";
1143  }
1144  m_t << "\"";
1145  }
1146  m_t << ">";
1147  if (param->kind()==DocNode::Kind_Word)
1148  {
1149  visit((DocWord*)param.get());
1150  }
1151  else if (param->kind()==DocNode::Kind_LinkedWord)
1152  {
1153  visit((DocLinkedWord*)param.get());
1154  }
1155  m_t << "</parametername>\n";
1156  }
1157  m_t << "</parameternamelist>\n";
1158  m_t << "<parameterdescription>\n";
1159 }
1160 
1162 {
1163  if (m_hide) return;
1164  m_t << "</parameterdescription>\n";
1165  m_t << "</parameteritem>\n";
1166 }
1167 
1169 {
1170  if (m_hide) return;
1171  if (x->title().isEmpty()) return;
1172  m_t << "<xrefsect id=\"";
1173  m_t << x->file() << "_1" << x->anchor();
1174  m_t << "\">";
1175  m_t << "<xreftitle>";
1176  filter(x->title());
1177  m_t << "</xreftitle>";
1178  m_t << "<xrefdescription>";
1179 }
1180 
1182 {
1183  if (m_hide) return;
1184  if (x->title().isEmpty()) return;
1185  m_t << "</xrefdescription>";
1186  m_t << "</xrefsect>";
1187 }
1188 
1190 {
1191  if (m_hide) return;
1192  startLink(QCString(),ref->file(),ref->anchor());
1193 }
1194 
1196 {
1197  if (m_hide) return;
1198  endLink();
1199  m_t << " ";
1200 }
1201 
1203 {
1204 }
1205 
1207 {
1208 }
1209 
1211 {
1212  if (m_hide) return;
1213  m_t << "<blockquote>";
1214 }
1215 
1217 {
1218  if (m_hide) return;
1219  m_t << "</blockquote>";
1220 }
1221 
1223 {
1224 }
1225 
1227 {
1228 }
1229 
1231 {
1232  if (m_hide) return;
1233  m_t << "<parblock>";
1234 }
1235 
1237 {
1238  if (m_hide) return;
1239  m_t << "</parblock>";
1240 }
1241 
1242 
1244 {
1245  m_t << convertToXML(str);
1246 }
1247 
1248 void XmlDocVisitor::startLink(const QCString &ref,const QCString &file,const QCString &anchor)
1249 {
1250  //printf("XmlDocVisitor: file=%s anchor=%s\n",qPrint(file),qPrint(anchor));
1251  m_t << "<ref refid=\"" << file;
1252  if (!anchor.isEmpty()) m_t << "_1" << anchor;
1253  m_t << "\" kindref=\"";
1254  if (!anchor.isEmpty()) m_t << "member"; else m_t << "compound";
1255  m_t << "\"";
1256  if (!ref.isEmpty()) m_t << " external=\"" << ref << "\"";
1257  m_t << ">";
1258 }
1259 
1261 {
1262  m_t << "</ref>";
1263 }
1264 
DocHtmlBlockQuote
Node representing an HTML blockquote
Definition: docparser.h:1433
DocAutoListItem
Node representing an item of a auto list
Definition: docparser.h:720
DocHRef
Node representing a Hypertext reference
Definition: docparser.h:936
DocStyleChange
Node representing a style change
Definition: docparser.h:343
DocVerbatim::isExample
bool isExample() const
Definition: docparser.h:522
XmlDocVisitor::visitPost
void visitPost(DocAutoList *)
Definition: xmldocvisitor.cpp:564
XmlDocVisitor::m_hide
bool m_hide
Definition: xmldocvisitor.h:161
DocVerbatim
Node representing a verbatim, unparsed text fragment
Definition: docparser.h:510
XmlDocVisitor::m_langExt
QCString m_langExt
Definition: xmldocvisitor.h:162
DocParamList::paramTypes
DocNodeList & paramTypes()
Definition: docparser.h:1239
DocTitle
Node representing a simple section title
Definition: docparser.h:736
xmlgen.h
DocXRefItem::file
QCString file() const
Definition: docparser.h:754
XmlDocVisitor::m_t
TextStream & m_t
Definition: xmldocvisitor.h:158
DocPara
Node representing a paragraph in the documentation tree
Definition: docparser.h:1178
DocImage::isInlineImage
bool isInlineImage() const
Definition: docparser.h:785
fileinfo.h
findFileDef
FileDef * findFileDef(const FileNameLinkedMap *fnMap, const QCString &n, bool &ambig)
Definition: util.cpp:3222
DocInclude::HtmlInclude
@ HtmlInclude
Definition: docparser.h:566
DocParamSect::In
@ In
Definition: docparser.h:1160
DocSimpleSect::Return
@ Return
Definition: docparser.h:1116
DocImage::width
QCString width() const
Definition: docparser.h:781
DocVerbatim::text
QCString text() const
Definition: docparser.h:519
DocDotFile
Node representing a dot file
Definition: docparser.h:830
DocVisitor::pushHidden
void pushHidden(bool hide)
Definition: docvisitor.cpp:62
DocHtmlTable
Node representing a HTML table
Definition: docparser.h:1405
XmlDocVisitor::visitPre
void visitPre(DocAutoList *)
Definition: xmldocvisitor.cpp:551
HtmlEntityMapper::xml
const char * xml(DocSymbol::SymType symb) const
Access routine to the XML code of the HTML entity
Definition: htmlentity.cpp:404
DocIncOperator::showLineNo
bool showLineNo() const
Definition: docparser.h:629
Doxygen::imageNameLinkedMap
static FileNameLinkedMap * imageNameLinkedMap
Definition: doxygen.h:89
DocSimpleSect::Warning
@ Warning
Definition: docparser.h:1117
DocImage::Xml
@ Xml
Definition: docparser.h:774
DocNode::Kind_Word
@ Kind_Word
Definition: docparser.h:101
DocRoot
Root node of documentation tree
Definition: docparser.h:1457
DocVerbatim::HtmlOnly
@ HtmlOnly
Definition: docparser.h:513
QCString::length
uint length() const
Returns the length of the string, not counting the 0-terminator.
Definition: qcstring.h:147
DocStyleChange::Center
@ Center
Definition: docparser.h:349
HtmlAttribList
Class representing a list of HTML attributes.
Definition: htmlattrib.h:30
DocVisitor::popHidden
bool popHidden()
Definition: docvisitor.cpp:67
DocHtmlHeader
Node Html heading
Definition: docparser.h:957
DocParamSect::Out
@ Out
Definition: docparser.h:1160
DocSimpleSect::Unknown
@ Unknown
Definition: docparser.h:1116
DocStyleChange::Strike
@ Strike
Definition: docparser.h:356
DocVerbatim::context
QCString context() const
Definition: docparser.h:520
DocDiagramFileBase::height
QCString height() const
Definition: docparser.h:813
DocImage::relPath
QCString relPath() const
Definition: docparser.h:783
DocParamSect::InOut
@ InOut
Definition: docparser.h:1160
DocInclude::Snippet
@ Snippet
Definition: docparser.h:567
DocHtmlListItem
Node representing a HTML list item
Definition: docparser.h:1286
QCString::isEmpty
bool isEmpty() const
Returns TRUE iff the string is empty
Definition: qcstring.h:144
DocHtmlTable::numColumns
size_t numColumns() const
Definition: docparser.h:1417
DocStyleChange::Del
@ Del
Definition: docparser.h:358
DocRef::isSubPage
bool isSubPage() const
Definition: docparser.h:906
DocVhdlFlow
Node representing a VHDL flow chart
Definition: docparser.h:860
visitCaption
static void visitCaption(XmlDocVisitor *parent, const DocNodeList &children)
Definition: xmldocvisitor.cpp:33
DocInclude::isExample
bool isExample() const
Definition: docparser.h:588
DocVerbatim::Msc
@ Msc
Definition: docparser.h:513
DocDiagramFileBase::file
QCString file() const
Definition: docparser.h:809
DocHtmlDescData
Node representing a HTML description data
Definition: docparser.h:1303
DocSimpleSect::type
Type type() const
Definition: docparser.h:1122
copyFile
bool copyFile(const QCString &src, const QCString &dest)
Copies the contents of file with name src to the newly created file with name dest.
Definition: util.cpp:6439
DocHtmlDescTitle
Node representing a Html description item
Definition: docparser.h:973
DocAnchor::anchor
QCString anchor() const
Definition: docparser.h:308
DocInclude::XmlInclude
@ XmlInclude
Definition: docparser.h:568
DocVerbatim::PlantUML
@ PlantUML
Definition: docparser.h:513
DocImage::DocBook
@ DocBook
Definition: docparser.h:774
DocEmoji
Node representing a n emoji
Definition: docparser.h:469
DocRef::ref
QCString ref() const
Definition: docparser.h:899
DocLinkedWord::anchor
QCString anchor() const
Definition: docparser.h:242
DocInternalRef::anchor
QCString anchor() const
Definition: docparser.h:927
DocStyleChange::Italic
@ Italic
Definition: docparser.h:347
DocMscFile
Node representing a msc file
Definition: docparser.h:840
SrcLangExt
SrcLangExt
Language as given by extension
Definition: types.h:41
DocVerbatim::Code
@ Code
Definition: docparser.h:513
DocStyleChange::Bold
@ Bold
Definition: docparser.h:346
DocRef::targetTitle
QCString targetTitle() const
Definition: docparser.h:901
DocInclude::IncludeDoc
@ IncludeDoc
Definition: docparser.h:567
DocRef::anchor
QCString anchor() const
Definition: docparser.h:900
DocEmoji::name
QCString name() const
Definition: docparser.h:473
DocVerbatim::RtfOnly
@ RtfOnly
Definition: docparser.h:513
QCString::str
std::string str() const
Definition: qcstring.h:442
DocIncOperator::exampleFile
QCString exampleFile() const
Definition: docparser.h:639
DocParamSect::TemplateParam
@ TemplateParam
Definition: docparser.h:1156
DocVerbatim::type
Type type() const
Definition: docparser.h:518
DocIndexEntry::entry
QCString entry() const
Definition: docparser.h:691
DocSecRefItem
Node representing a reference to a section
Definition: docparser.h:1023
DocStyleChange::Span
@ Span
Definition: docparser.h:354
DocAnchor
Node representing an anchor
Definition: docparser.h:303
DocFormula::text
QCString text() const
Definition: docparser.h:664
correctURL
QCString correctURL(const QCString &url, const QCString &relPath)
Corrects URL url according to the relative path relPath.
Definition: util.cpp:6573
DocXRefItem::anchor
QCString anchor() const
Definition: docparser.h:755
DocRef::hasLinkText
bool hasLinkText() const
Definition: docparser.h:902
DocStyleChange::Superscript
@ Superscript
Definition: docparser.h:352
err
void err(const char *fmt,...)
Definition: message.cpp:203
DocInclude::text
QCString text() const
Definition: docparser.h:585
TextStream
Text streaming class that buffers data.
Definition: textstream.h:33
DocText
Root node of a text fragment
Definition: docparser.h:1447
DocHtmlList::attribs
const HtmlAttribList & attribs() const
Definition: docparser.h:1101
DocVisitor
Abstract visitor that participates in the visitor pattern.
Definition: docvisitor.h:92
DocSimpleSect::Author
@ Author
Definition: docparser.h:1116
filename.h
DocSimpleSect::Note
@ Note
Definition: docparser.h:1117
DocURL::isEmail
bool isEmail() const
Definition: docparser.h:264
DocInclude::DocbookInclude
@ DocbookInclude
Definition: docparser.h:568
DocImage::name
QCString name() const
Definition: docparser.h:779
DocInclude::DontInclude
@ DontInclude
Definition: docparser.h:566
HtmlEntityMapper::instance
static HtmlEntityMapper * instance()
Returns the one and only instance of the HTML entity mapper
Definition: htmlentity.cpp:341
DocInclude::VerbInclude
@ VerbInclude
Definition: docparser.h:566
visitPostEnd
static void visitPostEnd(TextStream &t, const char *cmd)
Definition: xmldocvisitor.cpp:90
DocImage::Html
@ Html
Definition: docparser.h:774
DocIncOperator::isFirst
bool isFirst() const
Definition: docparser.h:634
DocFormula
Node representing an item of a cross-referenced list
Definition: docparser.h:658
DocVerbatim::DocbookOnly
@ DocbookOnly
Definition: docparser.h:513
DocLinkedWord::word
QCString word() const
Definition: docparser.h:237
DocHtmlDescList
Node representing a Html description list
Definition: docparser.h:987
DocVisitor::getCodeParser
CodeParserInterface & getCodeParser(const QCString &langExt)
Definition: docvisitor.cpp:41
DocIncOperator
Node representing a include/dontinclude operator block
Definition: docparser.h:606
DocSymbol::symbol
SymType symbol() const
Definition: docparser.h:459
DocHtmlList::Ordered
@ Ordered
Definition: docparser.h:1096
DocImage::Type
Type
Definition: docparser.h:774
DocIndexEntry
Node representing an entry in the index.
Definition: docparser.h:682
DocSimpleSect::User
@ User
Definition: docparser.h:1117
DocSecRefList
Node representing a list of section references
Definition: docparser.h:1048
DocLineBreak
Node representing a line break
Definition: docparser.h:272
DocWord
Node representing a word
Definition: docparser.h:217
DocSymbol
Node representing a special symbol
Definition: docparser.h:385
uint
unsigned uint
Definition: qcstring.h:40
EmojiEntityMapper::name
const char * name(int index) const
Access routine to the name of the Emoji entity
Definition: emoji.cpp:1590
outputgen.h
dot.h
extractBlock
QCString extractBlock(const QCString &text, const QCString &marker)
Returns the section of text, in between a pair of markers.
Definition: util.cpp:6453
DocXRefItem
Node representing an item of a cross-referenced list
Definition: docparser.h:749
DocURL::url
QCString url() const
Definition: docparser.h:261
DocSection::level
int level() const
Definition: docparser.h:1007
DocHtmlTable::attribs
const HtmlAttribList & attribs() const
Definition: docparser.h:1414
createFileDef
FileDef * createFileDef(const QCString &p, const QCString &n, const QCString &ref, const QCString &dn)
Definition: filedef.cpp:190
DocImage
Node representing an image
Definition: docparser.h:771
DocHtmlCell::attribs
const HtmlAttribList & attribs() const
Definition: docparser.h:1330
DocNode::kind
virtual Kind kind() const =0
DocInclude::file
QCString file() const
Definition: docparser.h:577
DocNodeList
std::vector< std::unique_ptr< DocNode > > DocNodeList
Definition: docparser.h:190
DocURL
Node representing a URL (or email address)
Definition: docparser.h:256
message.h
visitPreStart
static void visitPreStart(TextStream &t, const char *cmd, bool doCaption, XmlDocVisitor *parent, const DocNodeList &children, const QCString &name, bool writeType, DocImage::Type type, const QCString &width, const QCString &height, const QCString engine=QCString(), const QCString &alt=QCString(), bool inlineImage=FALSE)
Definition: xmldocvisitor.cpp:38
DocParamSect::Unspecified
@ Unspecified
Definition: docparser.h:1160
DocSimpleSect::See
@ See
Definition: docparser.h:1116
DocHtmlCaption
Node representing a HTML table caption
Definition: docparser.h:1352
DocIncOperator::isExample
bool isExample() const
Definition: docparser.h:638
DocStyleChange::Ins
@ Ins
Definition: docparser.h:359
DocInclude::SnipWithLines
@ SnipWithLines
Definition: docparser.h:567
DocImage::Latex
@ Latex
Definition: docparser.h:774
DocParamList
Node representing a parameter list.
Definition: docparser.h:1228
DocSimpleSect::Rcs
@ Rcs
Definition: docparser.h:1117
DocSecRefItem::file
QCString file() const
Definition: docparser.h:1029
doxygen.h
parserintf.h
DocCite::ref
QCString ref() const
Definition: docparser.h:328
DocInternalRef::file
QCString file() const
Definition: docparser.h:925
DocIncOperator::Skip
@ Skip
Definition: docparser.h:609
DocVerbatim::exampleFile
QCString exampleFile() const
Definition: docparser.h:523
DocParBlock
Node representing an block of paragraphs
Definition: docparser.h:1070
DocVerbatim::ManOnly
@ ManOnly
Definition: docparser.h:513
DocSimpleSectSep
Node representing a separator between two simple sections of the same type.
Definition: docparser.h:1139
DocImage::Rtf
@ Rtf
Definition: docparser.h:774
language.h
DocHRef::url
QCString url() const
Definition: docparser.h:943
DocIncOperator::line
int line() const
Definition: docparser.h:628
DocStyleChange::Small
@ Small
Definition: docparser.h:350
DocCite
Node representing a citation of some bibliographic reference
Definition: docparser.h:321
DocRef
Node representing a reference to some item
Definition: docparser.h:891
DocSimpleSect::Date
@ Date
Definition: docparser.h:1116
docparser.h
getLanguageFromFileName
SrcLangExt getLanguageFromFileName(const QCString &fileName, SrcLangExt defLang)
Definition: util.cpp:5574
TRUE
#define TRUE
Definition: qcstring.h:36
DocSimpleSect::Authors
@ Authors
Definition: docparser.h:1116
DocParamSect
Node representing a parameter section
Definition: docparser.h:1150
DocInclude::IncWithLines
@ IncWithLines
Definition: docparser.h:567
DocVerbatim::children
const DocNodeList & children() const
Definition: docparser.h:532
DocInclude::isBlock
bool isBlock() const
Definition: docparser.h:590
DocHtmlList
Node representing a Html list
Definition: docparser.h:1093
filedef.h
lineBlock
int lineBlock(const QCString &text, const QCString &marker)
Returns the line number of the line following the line with the marker.
Definition: util.cpp:6498
DocRef::file
QCString file() const
Definition: docparser.h:897
DocVerbatim::hasCaption
bool hasCaption() const
Definition: docparser.h:527
DocParamSect::type
Type type() const
Definition: docparser.h:1167
DocParamList::direction
DocParamSect::Direction direction() const
Definition: docparser.h:1241
DocSimpleSect
Node representing a simple section
Definition: docparser.h:1111
DocSection
Node representing a normal section
Definition: docparser.h:1001
XmlDocVisitor::m_insidePre
bool m_insidePre
Definition: xmldocvisitor.h:160
DocHorRuler
Node representing a horizontal ruler
Definition: docparser.h:288
DocVerbatim::language
QCString language() const
Definition: docparser.h:525
XmlDocVisitor::m_ci
CodeOutputInterface & m_ci
Definition: xmldocvisitor.h:159
DocAnchor::file
QCString file() const
Definition: docparser.h:309
DocWord::word
QCString word() const
Definition: docparser.h:221
DocInclude
Node representing an included text block from file
Definition: docparser.h:563
DocStyleChange::Subscript
@ Subscript
Definition: docparser.h:351
DocLinkedWord::ref
QCString ref() const
Definition: docparser.h:241
CodeParserInterface::parseCode
virtual void parseCode(CodeOutputInterface &codeOutIntf, const QCString &scopeName, const QCString &input, SrcLangExt lang, bool isExampleBlock, const QCString &exampleName=QCString(), const FileDef *fileDef=0, int startLine=-1, int endLine=-1, bool inlineFragment=FALSE, const MemberDef *memberDef=0, bool showLineNumbers=TRUE, const Definition *searchCtx=0, bool collectXRefs=TRUE)=0
Parses a source file or fragment with the goal to produce highlighted and cross-referenced output.
DocAutoList
Node representing an auto List
Definition: docparser.h:703
DocImage::height
QCString height() const
Definition: docparser.h:782
DocVisitor_XML
const int DocVisitor_XML
Definition: docvisitor.h:26
DocNode::Kind_Sep
@ Kind_Sep
Definition: docparser.h:154
DocWhiteSpace::chars
QCString chars() const
Definition: docparser.h:490
DocNode::Kind_LinkedWord
@ Kind_LinkedWord
Definition: docparser.h:142
DocXRefItem::title
QCString title() const
Definition: docparser.h:756
DocInternal
Node representing an internal section of documentation
Definition: docparser.h:1059
DocParamSect::Exception
@ Exception
Definition: docparser.h:1156
DocHtmlList::type
Type type() const
Definition: docparser.h:1100
DocInclude::RtfInclude
@ RtfInclude
Definition: docparser.h:568
DocInclude::SnippetDoc
@ SnippetDoc
Definition: docparser.h:567
DocInclude::LatexInclude
@ LatexInclude
Definition: docparser.h:566
DocSection::title
QCString title() const
Definition: docparser.h:1008
DocEmoji::index
int index() const
Definition: docparser.h:474
QCString::mid
QCString mid(size_t index, size_t len=static_cast< size_t >(-1)) const
Definition: qcstring.h:224
FileInfo::dirPath
std::string dirPath(bool absPath=true) const
Definition: fileinfo.cpp:137
DocCite::anchor
QCString anchor() const
Definition: docparser.h:329
xmldocvisitor.h
DocVerbatim::engine
QCString engine() const
Definition: docparser.h:530
DocStyleChange::style
Style style() const
Definition: docparser.h:368
DocLinkedWord
Node representing a word that can be linked to something
Definition: docparser.h:231
DocStyleChange::Code
@ Code
Definition: docparser.h:348
XmlDocVisitor::visit
void visit(DocWord *)
Definition: xmldocvisitor.cpp:105
DocInclude::Include
@ Include
Definition: docparser.h:566
DocCite::file
QCString file() const
Definition: docparser.h:326
DocDiagramFileBase::width
QCString width() const
Definition: docparser.h:812
DocHtmlCell::isHeading
bool isHeading() const
Definition: docparser.h:1324
DocIncOperator::type
Type type() const
Definition: docparser.h:616
getLanguageFromCodeLang
SrcLangExt getLanguageFromCodeLang(QCString &fileName)
Routine to handle the language attribute of the \code command
Definition: util.cpp:5592
CodeOutputInterface
Output interface for code parser.
Definition: outputgen.h:61
DocParamSect::Param
@ Param
Definition: docparser.h:1156
DocSection::file
QCString file() const
Definition: docparser.h:1011
DocAutoList::isEnumList
bool isEnumList() const
Definition: docparser.h:708
DocSimpleSect::Copyright
@ Copyright
Definition: docparser.h:1117
DocDiaFile
Node representing a dia file
Definition: docparser.h:850
DocVerbatim::LatexOnly
@ LatexOnly
Definition: docparser.h:513
FileInfo
Minimal replacement for QFileInfo.
Definition: fileinfo.h:22
FileDef::absFilePath
virtual QCString absFilePath() const =0
DocStyleChange::Preformatted
@ Preformatted
Definition: docparser.h:353
Config_getString
#define Config_getString(name)
Definition: config.h:32
DocInclude::blockId
QCString blockId() const
Definition: docparser.h:587
DocStyleChange::enable
bool enable() const
Definition: docparser.h:370
XmlDocVisitor::startLink
void startLink(const QCString &ref, const QCString &file, const QCString &anchor)
Definition: xmldocvisitor.cpp:1248
DocSection::anchor
QCString anchor() const
Definition: docparser.h:1009
config.h
DocSimpleSect::Post
@ Post
Definition: docparser.h:1117
convertCharEntitiesToUTF8
QCString convertCharEntitiesToUTF8(const QCString &str)
Definition: util.cpp:4170
DocSimpleSect::Pre
@ Pre
Definition: docparser.h:1117
DocSimpleList
Node representing a simple list
Definition: docparser.h:1082
DocSimpleSect::Remark
@ Remark
Definition: docparser.h:1117
ASSERT
#define ASSERT(x)
Definition: qcstring.h:44
getFileNameExtension
QCString getFileNameExtension(const QCString &fn)
Definition: util.cpp:5621
DocLinkedWord::file
QCString file() const
Definition: docparser.h:239
DocFormula::id
int id() const
Definition: docparser.h:666
DocStyleChange::Underline
@ Underline
Definition: docparser.h:357
DocSimpleListItem
Node representing a simple list item
Definition: docparser.h:1266
convertToXML
QCString convertToXML(const QCString &s, bool keepEntities)
Definition: util.cpp:3948
emoji.h
DocIncOperator::includeFileName
QCString includeFileName() const
Definition: docparser.h:640
FileDef
A model of a file symbol.
Definition: filedef.h:73
DocInclude::type
Type type() const
Definition: docparser.h:584
CompAccept::children
const DocNodeList & children() const
Definition: docparser.h:207
DocWhiteSpace
Node representing some amount of white space
Definition: docparser.h:484
DocVerbatim::XmlOnly
@ XmlOnly
Definition: docparser.h:513
DocVerbatim::height
QCString height() const
Definition: docparser.h:529
DocParamSect::RetVal
@ RetVal
Definition: docparser.h:1156
DocInclude::DontIncWithLines
@ DontIncWithLines
Definition: docparser.h:568
XmlDocVisitor::XmlDocVisitor
XmlDocVisitor(TextStream &t, CodeOutputInterface &ci, const QCString &langExt)
Definition: xmldocvisitor.cpp:95
DocIncOperator::context
QCString context() const
Definition: docparser.h:632
XmlDocVisitor::endLink
void endLink()
Definition: xmldocvisitor.cpp:1260
DocStyleChange::Div
@ Div
Definition: docparser.h:355
EmojiEntityMapper::instance
static EmojiEntityMapper * instance()
Returns the one and only instance of the Emoji entity mapper
Definition: emoji.cpp:1536
FileInfo::fileName
std::string fileName() const
Definition: fileinfo.cpp:118
DocNode::parent
DocNode * parent() const
Definition: docparser.h:166
DocHtmlCell
Node representing a HTML table cell
Definition: docparser.h:1316
DocInclude::extension
QCString extension() const
Definition: docparser.h:578
DocCite::text
QCString text() const
Definition: docparser.h:330
XmlDocVisitor::filter
void filter(const QCString &str)
Definition: xmldocvisitor.cpp:1243
DocImage::url
QCString url() const
Definition: docparser.h:784
htmlentity.h
DocInternalRef
Node representing an internal reference to some item
Definition: docparser.h:919
DocNode::Kind_SimpleSect
@ Kind_SimpleSect
Definition: docparser.h:109
DocVerbatim::width
QCString width() const
Definition: docparser.h:528
DocParamList::parameters
DocNodeList & parameters()
Definition: docparser.h:1238
DocStyleChange::S
@ S
Definition: docparser.h:360
XmlDocVisitor
Concrete visitor implementation for XML output.
Definition: xmldocvisitor.h:32
DocVerbatim::isBlock
bool isBlock() const
Definition: docparser.h:526
DocVerbatim::Verbatim
@ Verbatim
Definition: docparser.h:513
util.h
A bunch of utility functions.
DocHtmlTable::numRows
size_t numRows() const
Definition: docparser.h:1412
DocImage::attribs
const HtmlAttribList & attribs() const
Definition: docparser.h:787
DocSecRefItem::anchor
QCString anchor() const
Definition: docparser.h:1030
DocImage::type
Type type() const
Definition: docparser.h:778
DocHtmlRow
Node representing a HTML table row
Definition: docparser.h:1371
DocInclude::ManInclude
@ ManInclude
Definition: docparser.h:568
DocSimpleSect::Invar
@ Invar
Definition: docparser.h:1117
DocIncOperator::isLast
bool isLast() const
Definition: docparser.h:635
DocSimpleSect::Version
@ Version
Definition: docparser.h:1116
DocHtmlHeader::level
int level() const
Definition: docparser.h:962
DocInclude::exampleFile
QCString exampleFile() const
Definition: docparser.h:589
DocIncOperator::text
QCString text() const
Definition: docparser.h:630
FALSE
#define FALSE
Definition: qcstring.h:33
DocSimpleSect::Since
@ Since
Definition: docparser.h:1116
DocSimpleSect::Attention
@ Attention
Definition: docparser.h:1117
DocInclude::context
QCString context() const
Definition: docparser.h:586
DocHtmlListItem::attribs
const HtmlAttribList & attribs() const
Definition: docparser.h:1293
DocVerbatim::Dot
@ Dot
Definition: docparser.h:513
QCString
This is an alternative implementation of QCString.
Definition: qcstring.h:108