37 t <<
"<simplesect kind=\"";
47 t <<
"authors";
break;
49 t <<
"version";
break;
57 t <<
"warning";
break;
63 t <<
"copyright";
break;
65 t <<
"invariant";
break;
69 t <<
"attention";
break;
71 t <<
"important";
break;
83 t <<
"</simplesect>\n";
88 for (
const auto &n : children)
90 std::visit(visitor,n);
125 if (!engine.isEmpty())
135 t <<
" inline=\"yes\"";
148 t <<
"</" << cmd <<
">\n";
210 m_t <<
"<emoji name=\"" << name <<
"\" unicode=\"";
223 m_t <<
"<ulink url=\"";
234 m_t <<
"<linebreak/>\n";
240 m_t <<
"<hruler/>\n";
255 if (s.
enable())
m_t <<
"<strike>";
else m_t <<
"</strike>";
261 if (s.
enable())
m_t <<
"<underline>";
else m_t <<
"</underline>";
267 if (s.
enable())
m_t <<
"<emphasis>";
else m_t <<
"</emphasis>";
272 if (s.
enable())
m_t <<
"<computeroutput>";
else m_t <<
"</computeroutput>";
275 if (s.
enable())
m_t <<
"<subscript>";
else m_t <<
"</subscript>";
278 if (s.
enable())
m_t <<
"<superscript>";
else m_t <<
"</superscript>";
281 if (s.
enable())
m_t <<
"<center>";
else m_t <<
"</center>";
284 if (s.
enable())
m_t <<
"<small>";
else m_t <<
"</small>";
292 m_t <<
"<preformatted>";
297 m_t <<
"</preformatted>";
318 m_t <<
"<programlisting";
320 m_t <<
" filename=\"" << lang <<
"\">";
326 m_t <<
"</programlisting>";
329 m_t <<
"<javadocliteral>";
331 m_t <<
"</javadocliteral>";
334 m_t <<
"<javadoccode>";
336 m_t <<
"</javadoccode>";
341 m_t <<
"</verbatim>";
346 m_t <<
"<htmlonly block=\"yes\">";
353 m_t <<
"</htmlonly>";
366 m_t <<
"<latexonly>";
368 m_t <<
"</latexonly>";
371 m_t <<
"<docbookonly>";
373 m_t <<
"</docbookonly>";
389 visitPreStart(
m_t,
"plantuml", s.
hasCaption(), *
this, s.
children(),
QCString(
""),
FALSE,
DocImage::Html, s.
width(), s.
height(), s.
engine());
404 m_t <<
"<anchor id=\"" << anc.
file() <<
"_1" << anc.
anchor() <<
"\"/>";
416 m_t <<
"<programlisting filename=\"" << inc.
file() <<
"\">";
428 m_t <<
"</programlisting>";
432 m_t <<
"<programlisting filename=\"" << inc.
file() <<
"\">";
442 m_t <<
"</programlisting>";
450 m_t <<
"<htmlonly block=\"yes\">";
457 m_t <<
"</htmlonly>";
460 m_t <<
"<latexonly>";
462 m_t <<
"</latexonly>";
478 m_t <<
"<docbookonly>";
480 m_t <<
"</docbookonly>";
485 m_t <<
"</verbatim>";
489 m_t <<
"<programlisting filename=\"" << inc.
file() <<
"\">";
498 m_t <<
"</programlisting>";
524 std::unique_ptr<FileDef> fd;
558 m_t <<
"<formula id=\"" << f.
id() <<
"\">";
566 m_t <<
"<indexentry>"
569 m_t <<
"</primaryie>"
570 "<secondaryie></secondaryie>"
599 if (!opt.noPar())
filter(
"[");
601 if (!opt.noPar())
filter(
"]");
615 m_t <<
"<orderedlist>\n";
619 m_t <<
"<itemizedlist>\n";
624 m_t <<
"</orderedlist>\n";
628 m_t <<
"</itemizedlist>\n";
638 m_t <<
"<listitem override=\"unchecked\">";
642 m_t <<
"<listitem override=\"checked\">";
649 m_t <<
"</listitem>";
671 std::visit(*
this,*s.
title());
688 m_t <<
"<itemizedlist>\n";
690 m_t <<
"</itemizedlist>\n";
701 m_t <<
"</listitem>\n";
716 m_t <<
"<sect" << s.
level() <<
" id=\"" << sectId <<
"\">\n";
719 std::visit(*
this,*s.
title());
722 m_t <<
"</sect" << s.
level() <<
">";
737 m_t <<
"<orderedlist";
738 for (
const auto &opt : s.
attribs())
740 m_t <<
" " << opt.name <<
"=\"" << opt.value <<
"\"";
746 m_t <<
"<itemizedlist>\n";
751 m_t <<
"</orderedlist>\n";
755 m_t <<
"</itemizedlist>\n";
763 for (
const auto &opt : l.
attribs())
765 if (opt.name==
"value")
767 m_t <<
" " << opt.name <<
"=\"" << opt.value <<
"\"";
772 m_t <<
"</listitem>\n";
778 m_t <<
"<variablelist>\n";
780 m_t <<
"</variablelist>\n";
786 m_t <<
"<varlistentry><term>";
788 m_t <<
"</term></varlistentry>\n";
796 m_t <<
"</listitem>\n";
804 for (
const auto &opt : t.
attribs())
806 if (opt.name==
"width")
808 m_t <<
" " << opt.name <<
"=\"" << opt.value <<
"\"";
814 std::visit(*
this,*t.
caption());
831 if (c.
isHeading())
m_t <<
"<entry thead=\"yes\"";
else m_t <<
"<entry thead=\"no\"";
832 for (
const auto &opt : c.
attribs())
834 if (opt.name==
"colspan" || opt.name==
"rowspan")
836 m_t <<
" " << opt.name <<
"=\"" << opt.value.toInt() <<
"\"";
838 else if (opt.name==
"align" &&
839 (opt.value==
"right" || opt.value==
"left" || opt.value==
"center"))
841 m_t <<
" align=\"" << opt.value <<
"\"";
843 else if (opt.name==
"valign" &&
844 (opt.value ==
"bottom" || opt.value ==
"top" || opt.value ==
"middle"))
846 m_t <<
" valign=\"" << opt.value <<
"\"";
848 else if (opt.name==
"width")
850 m_t <<
" width=\"" << opt.value <<
"\"";
852 else if (opt.name==
"class")
854 if (opt.value.startsWith(
"markdownTable"))
856 if (opt.value.endsWith(
"Right"))
858 m_t <<
" align='right'";
860 else if (opt.value.endsWith(
"Left"))
862 m_t <<
" align='left'";
864 else if (opt.value.endsWith(
"Center"))
866 m_t <<
" align='center'";
870 else if (!opt.value.isEmpty())
891 m_t <<
"</caption>\n";
899 m_t <<
"</internal>\n";
925 std::visit(*
this,*summary);
934 m_t <<
"<heading level=\"" << header.
level() <<
"\">";
936 m_t <<
"</heading>\n";
954 auto it = std::find_if(attribs.begin(),attribs.end(),
955 [](
const auto &att) { return att.name==
"alt"; });
956 QCString altValue = it!=attribs.end() ? it->value :
"";
1040 m_t <<
"<tocitem id=\"" << ref.
file();
1045 m_t <<
"</tocitem>\n";
1051 m_t <<
"<toclist>\n";
1053 m_t <<
"</toclist>\n";
1059 m_t <<
"<parameterlist kind=\"";
1063 m_t <<
"param";
break;
1065 m_t <<
"retval";
break;
1067 m_t <<
"exception";
break;
1069 m_t <<
"templateparam";
break;
1075 m_t <<
"</parameterlist>\n";
1080 m_t <<
"</parametertype>\n";
1081 m_t <<
"<parametertype>";
1087 m_t <<
"<parameteritem>\n";
1088 m_t <<
"<parameternamelist>\n";
1093 m_t <<
"<parametertype>";
1096 std::visit(*
this,type);
1098 m_t <<
"</parametertype>\n";
1100 m_t <<
"<parametername";
1103 m_t <<
" direction=\"";
1119 std::visit(*
this,param);
1120 m_t <<
"</parametername>\n";
1122 m_t <<
"</parameternamelist>\n";
1123 m_t <<
"<parameterdescription>\n";
1126 std::visit(*
this,par);
1128 m_t <<
"</parameterdescription>\n";
1129 m_t <<
"</parameteritem>\n";
1136 m_t <<
"<xrefsect id=\"";
1139 m_t <<
"<xreftitle>";
1141 m_t <<
"</xreftitle>";
1142 m_t <<
"<xrefdescription>";
1145 m_t <<
"</xrefdescription>";
1146 m_t <<
"</xrefsect>";
1166 m_t <<
"<blockquote>";
1168 m_t <<
"</blockquote>";
1178 m_t <<
"<parblock>";
1180 m_t <<
"</parblock>";
1192 m_t <<
"<ref refid=\"" << file;
1193 if (!anchor.
isEmpty())
m_t <<
"_1" << anchor;
1194 m_t <<
"\" kindref=\"";
1195 if (!anchor.
isEmpty())
m_t <<
"member";
else m_t <<
"compound";
1197 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, const CodeParserOptions &options)=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.
CiteInfoOption option() const
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 mermaid file.
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.
A model of a file symbol.
virtual QCString absFilePath() const =0
Minimal replacement for QFileInfo.
std::string fileName() const
std::string dirPath(bool absPath=true) const
bool empty() const
checks whether the container is empty
Class representing a list of HTML attributes.
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)
Options to configure the code parser.
CodeParserOptions & setStartLine(int lineNr)
CodeParserOptions & setInlineFragment(bool enable)
CodeParserOptions & setShowLineNumbers(bool enable)
CodeParserOptions & setFileDef(const FileDef *fd)
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)