36 t <<
"<simplesect kind=\"";
46 t <<
"authors";
break;
48 t <<
"version";
break;
56 t <<
"warning";
break;
62 t <<
"copyright";
break;
64 t <<
"invariant";
break;
68 t <<
"attention";
break;
70 t <<
"important";
break;
82 t <<
"</simplesect>\n";
87 for (
const auto &n : children)
89 std::visit(visitor,n);
124 if (!engine.isEmpty())
134 t <<
" inline=\"yes\"";
147 t <<
"</" << cmd <<
">\n";
209 m_t <<
"<emoji name=\"" << name <<
"\" unicode=\"";
222 m_t <<
"<ulink url=\"";
233 m_t <<
"<linebreak/>\n";
239 m_t <<
"<hruler/>\n";
254 if (s.
enable())
m_t <<
"<strike>";
else m_t <<
"</strike>";
260 if (s.
enable())
m_t <<
"<underline>";
else m_t <<
"</underline>";
266 if (s.
enable())
m_t <<
"<emphasis>";
else m_t <<
"</emphasis>";
270 if (s.
enable())
m_t <<
"<computeroutput>";
else m_t <<
"</computeroutput>";
273 if (s.
enable())
m_t <<
"<subscript>";
else m_t <<
"</subscript>";
276 if (s.
enable())
m_t <<
"<superscript>";
else m_t <<
"</superscript>";
279 if (s.
enable())
m_t <<
"<center>";
else m_t <<
"</center>";
282 if (s.
enable())
m_t <<
"<small>";
else m_t <<
"</small>";
290 m_t <<
"<preformatted>";
295 m_t <<
"</preformatted>";
316 m_t <<
"<programlisting";
318 m_t <<
" filename=\"" << lang <<
"\">";
324 m_t <<
"</programlisting>";
327 m_t <<
"<javadocliteral>";
329 m_t <<
"</javadocliteral>";
332 m_t <<
"<javadoccode>";
334 m_t <<
"</javadoccode>";
339 m_t <<
"</verbatim>";
344 m_t <<
"<htmlonly block=\"yes\">";
351 m_t <<
"</htmlonly>";
364 m_t <<
"<latexonly>";
366 m_t <<
"</latexonly>";
369 m_t <<
"<docbookonly>";
371 m_t <<
"</docbookonly>";
387 visitPreStart(
m_t,
"plantuml", s.
hasCaption(), *
this, s.
children(), QCString(
""),
FALSE,
DocImage::Html, s.
width(), s.
height(), s.
engine());
397 m_t <<
"<anchor id=\"" << anc.
file() <<
"_1" << anc.
anchor() <<
"\"/>";
409 m_t <<
"<programlisting filename=\"" << inc.
file() <<
"\">";
410 FileInfo cfi( inc.
file().
str() );
425 m_t <<
"</programlisting>";
429 m_t <<
"<programlisting filename=\"" << inc.
file() <<
"\">";
443 m_t <<
"</programlisting>";
451 m_t <<
"<htmlonly block=\"yes\">";
458 m_t <<
"</htmlonly>";
461 m_t <<
"<latexonly>";
463 m_t <<
"</latexonly>";
479 m_t <<
"<docbookonly>";
481 m_t <<
"</docbookonly>";
486 m_t <<
"</verbatim>";
490 m_t <<
"<programlisting filename=\"" << inc.
file() <<
"\">";
499 m_t <<
"</programlisting>";
525 std::unique_ptr<FileDef> fd;
562 m_t <<
"<formula id=\"" << f.
id() <<
"\">";
570 m_t <<
"<indexentry>"
573 m_t <<
"</primaryie>"
574 "<secondaryie></secondaryie>"
580 const DocSimpleSect *sect = std::get_if<DocSimpleSect>(sep.
parent());
605 m_t <<
"<orderedlist>\n";
609 m_t <<
"<itemizedlist>\n";
614 m_t <<
"</orderedlist>\n";
618 m_t <<
"</itemizedlist>\n";
628 m_t <<
"<listitem override=\"unchecked\">";
632 m_t <<
"<listitem override=\"checked\">";
639 m_t <<
"</listitem>";
661 std::visit(*
this,*s.
title());
678 m_t <<
"<itemizedlist>\n";
680 m_t <<
"</itemizedlist>\n";
691 m_t <<
"</listitem>\n";
698 QCString sectId = s.
file();
706 m_t <<
"<sect" << s.
level() <<
" id=\"" << sectId <<
"\">\n";
709 std::visit(*
this,*s.
title());
712 m_t <<
"</sect" << s.
level() <<
">";
727 m_t <<
"<orderedlist";
728 for (
const auto &opt : s.
attribs())
730 m_t <<
" " << opt.name <<
"=\"" << opt.value <<
"\"";
736 m_t <<
"<itemizedlist>\n";
741 m_t <<
"</orderedlist>\n";
745 m_t <<
"</itemizedlist>\n";
753 for (
const auto &opt : l.
attribs())
755 if (opt.name==
"value")
757 m_t <<
" " << opt.name <<
"=\"" << opt.value <<
"\"";
762 m_t <<
"</listitem>\n";
768 m_t <<
"<variablelist>\n";
770 m_t <<
"</variablelist>\n";
776 m_t <<
"<varlistentry><term>";
778 m_t <<
"</term></varlistentry>\n";
786 m_t <<
"</listitem>\n";
794 for (
const auto &opt : t.
attribs())
796 if (opt.name==
"width")
798 m_t <<
" " << opt.name <<
"=\"" << opt.value <<
"\"";
804 std::visit(*
this,*t.
caption());
821 if (c.
isHeading())
m_t <<
"<entry thead=\"yes\"";
else m_t <<
"<entry thead=\"no\"";
822 for (
const auto &opt : c.
attribs())
824 if (opt.name==
"colspan" || opt.name==
"rowspan")
826 m_t <<
" " << opt.name <<
"=\"" << opt.value.toInt() <<
"\"";
828 else if (opt.name==
"align" &&
829 (opt.value==
"right" || opt.value==
"left" || opt.value==
"center"))
831 m_t <<
" align=\"" << opt.value <<
"\"";
833 else if (opt.name==
"valign" &&
834 (opt.value ==
"bottom" || opt.value ==
"top" || opt.value ==
"middle"))
836 m_t <<
" valign=\"" << opt.value <<
"\"";
838 else if (opt.name==
"width")
840 m_t <<
" width=\"" << opt.value <<
"\"";
842 else if (opt.name==
"class")
844 if (opt.value.startsWith(
"markdownTable"))
846 if (opt.value.endsWith(
"Right"))
848 m_t <<
" align='right'";
850 else if (opt.value.endsWith(
"Left"))
852 m_t <<
" align='left'";
854 else if (opt.value.endsWith(
"Center"))
856 m_t <<
" align='center'";
860 else if (!opt.value.isEmpty())
881 m_t <<
"</caption>\n";
889 m_t <<
"</internal>\n";
915 std::visit(*
this,*summary);
924 m_t <<
"<heading level=\"" << header.
level() <<
"\">";
926 m_t <<
"</heading>\n";
933 QCString url = img.
url();
943 HtmlAttribList attribs = img.
attribs();
944 auto it = std::find_if(attribs.begin(),attribs.end(),
945 [](
const auto &att) { return att.name==
"alt"; });
946 QCString altValue = it!=attribs.end() ? it->value :
"";
952 FileDef *fd =
nullptr;
1021 m_t <<
"<tocitem id=\"" << ref.
file();
1026 m_t <<
"</tocitem>\n";
1032 m_t <<
"<toclist>\n";
1034 m_t <<
"</toclist>\n";
1040 m_t <<
"<parameterlist kind=\"";
1044 m_t <<
"param";
break;
1046 m_t <<
"retval";
break;
1048 m_t <<
"exception";
break;
1050 m_t <<
"templateparam";
break;
1056 m_t <<
"</parameterlist>\n";
1061 m_t <<
"</parametertype>\n";
1062 m_t <<
"<parametertype>";
1068 m_t <<
"<parameteritem>\n";
1069 m_t <<
"<parameternamelist>\n";
1074 m_t <<
"<parametertype>";
1077 std::visit(*
this,type);
1079 m_t <<
"</parametertype>\n";
1081 m_t <<
"<parametername";
1084 m_t <<
" direction=\"";
1100 std::visit(*
this,param);
1101 m_t <<
"</parametername>\n";
1103 m_t <<
"</parameternamelist>\n";
1104 m_t <<
"<parameterdescription>\n";
1107 std::visit(*
this,par);
1109 m_t <<
"</parameterdescription>\n";
1110 m_t <<
"</parameteritem>\n";
1117 m_t <<
"<xrefsect id=\"";
1120 m_t <<
"<xreftitle>";
1122 m_t <<
"</xreftitle>";
1123 m_t <<
"<xrefdescription>";
1126 m_t <<
"</xrefdescription>";
1127 m_t <<
"</xrefsect>";
1147 m_t <<
"<blockquote>";
1149 m_t <<
"</blockquote>";
1159 m_t <<
"<parblock>";
1161 m_t <<
"</parblock>";
1173 m_t <<
"<ref refid=\"" << file;
1174 if (!anchor.
isEmpty())
m_t <<
"_1" << anchor;
1175 m_t <<
"\" kindref=\"";
1176 if (!anchor.
isEmpty())
m_t <<
"member";
else m_t <<
"compound";
1178 if (!ref.
isEmpty())
m_t <<
" external=\"" << ref <<
"\"";
void parseCodeFragment(OutputCodeList &codeOutList, const QCString &fileName, const QCString &blockId, const QCString &scopeName, bool showLineNumbers, bool trimLeft, bool stripCodeComments)
static CodeFragmentManager & instance()
virtual void parseCode(OutputCodeList &codeOutList, const QCString &scopeName, const QCString &input, SrcLangExt lang, bool stripCodeComments, bool isExampleBlock, const QCString &exampleName=QCString(), const FileDef *fileDef=nullptr, int startLine=-1, int endLine=-1, bool inlineFragment=FALSE, const MemberDef *memberDef=nullptr, bool showLineNumbers=TRUE, const Definition *searchCtx=nullptr, bool collectXRefs=TRUE)=0
Parses a source file or fragment with the goal to produce highlighted and cross-referenced output.
Node representing an anchor.
Node representing an auto List.
Node representing an item of a auto list.
Node representing a citation of some bibliographic reference.
Node representing a dia file.
Node representing a dot file.
Node representing an emoji.
Node representing a Hypertext reference.
Node representing a horizontal ruler.
Node representing an HTML blockquote.
Node representing a HTML table caption.
Node representing a HTML table cell.
const HtmlAttribList & attribs() const
Node representing a HTML description data.
Node representing a Html description list.
Node representing a Html description item.
const DocNodeVariant * summary() const
Node representing a Html list.
const HtmlAttribList & attribs() const
Node representing a HTML list item.
const HtmlAttribList & attribs() const
Node representing a HTML table row.
Node representing a HTML table.
size_t numColumns() const
const DocNodeVariant * caption() const
const HtmlAttribList & attribs() const
Node representing an image.
const HtmlAttribList & attribs() const
bool isInlineImage() const
Node representing a include/dontinclude operator block.
bool stripCodeComments() const
QCString includeFileName() const
QCString exampleFile() const
Node representing an included text block from file.
QCString extension() const
bool stripCodeComments() const
QCString exampleFile() const
Node representing an entry in the index.
Node representing an internal section of documentation.
Node representing an internal reference to some item.
Node representing a line break.
Node representing a link to some item.
Node representing a word that can be linked to something.
Node representing a msc file.
DocNodeVariant * parent()
Node representing an block of paragraphs.
Node representing a paragraph in the documentation tree.
Node representing a parameter list.
const DocNodeList & parameters() const
const DocNodeList & paramTypes() const
DocParamSect::Direction direction() const
const DocNodeList & paragraphs() const
Node representing a parameter section.
Node representing a uml file.
Node representing a reference to some item.
QCString targetTitle() const
Root node of documentation tree.
Node representing a reference to a section.
Node representing a list of section references.
Node representing a normal section.
const DocNodeVariant * title() const
Node representing a separator.
Node representing a simple list.
Node representing a simple list item.
const DocNodeVariant * paragraph() const
Node representing a simple section.
const DocNodeVariant * title() const
Node representing a separator between two simple sections of the same type.
Node representing a style change.
Node representing a special symbol.
HtmlEntityMapper::SymType symbol() const
Root node of a text fragment.
Node representing a simple section title.
Node representing a URL (or email address)
Node representing a verbatim, unparsed text fragment.
QCString language() const
const DocNodeList & children() const
QCString exampleFile() const
Node representing a VHDL flow chart.
CodeParserInterface & getCodeParser(const QCString &langExt)
void pushHidden(bool hide)
Node representing some amount of white space.
Node representing a word.
Node representing an item of a cross-referenced list.
static FileNameLinkedMap * imageNameLinkedMap
const char * name(int index) const
Access routine to the name of the Emoji entity.
static EmojiEntityMapper & instance()
Returns the one and only instance of the Emoji entity mapper.
virtual QCString absFilePath() const =0
std::string fileName() const
std::string dirPath(bool absPath=true) const
bool empty() const
checks whether the container is empty
const char * xml(SymType symb) const
Access routine to the XML code of the HTML entity.
static HtmlEntityMapper & instance()
Returns the one and only instance of the HTML entity mapper.
Class representing a list of different code generators.
This is an alternative implementation of QCString.
size_t length() const
Returns the length of the string, not counting the 0-terminator.
QCString mid(size_t index, size_t len=static_cast< size_t >(-1)) const
bool isEmpty() const
Returns TRUE iff the string is empty.
const std::string & str() const
Text streaming class that buffers data.
Concrete visitor implementation for XML output.
void visitChildren(const T &t)
void filter(const QCString &str)
void startLink(const QCString &ref, const QCString &file, const QCString &anchor)
XmlDocVisitor(TextStream &t, OutputCodeList &ci, const QCString &langExt)
void operator()(const DocWord &)
#define Config_getBool(name)
#define Config_getString(name)
std::unique_ptr< FileDef > createFileDef(const QCString &p, const QCString &n, const QCString &ref, const QCString &dn)
static void visitPreStart(TextStream &t, bool hasCaption, QCString name, QCString width, QCString height, bool inlineImage=FALSE)
static void visitPostEnd(TextStream &t, bool hasCaption, bool inlineImage=FALSE)
SrcLangExt
Language as given by extension.
SrcLangExt getLanguageFromFileName(const QCString &fileName, SrcLangExt defLang)
QCString correctURL(const QCString &url, const QCString &relPath)
Corrects URL url according to the relative path relPath.
QCString stripPath(const QCString &s)
SrcLangExt getLanguageFromCodeLang(QCString &fileName)
Routine to handle the language attribute of the \code command.
QCString convertToXML(const QCString &s, bool keepEntities)
bool copyFile(const QCString &src, const QCString &dest)
Copies the contents of file with name src to the newly created file with name dest.
QCString getFileNameExtension(const QCString &fn)
FileDef * findFileDef(const FileNameLinkedMap *fnMap, const QCString &n, bool &ambig)
A bunch of utility functions.
static void visitCaption(XmlDocVisitor &visitor, const DocNodeList &children)
static void visitPostEnd(TextStream &t, const char *cmd)
static void endSimpleSect(TextStream &t, const DocSimpleSect &)
static void startSimpleSect(TextStream &t, const DocSimpleSect &s)
static void visitPreStart(TextStream &t, const char *cmd, bool doCaption, XmlDocVisitor &visitor, 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)