47static const std::array<const char *,g_maxLevels>
g_secLabels =
51 "doxysubsubsubsection",
52 "doxysubsubsubsubsection",
53 "doxysubsubsubsubsubsection",
54 "doxysubsubsubsubsubsubsection"
64 if (compactLatex) l++;
95 static const reg::Ex re(R
"((\d+)%)");
96 std::string s = dimension.str();
104 t << percent/100.0 <<
"\\text" << orientationString;
115 t <<
"\n\\begin{DoxyInlineImage}%\n";
121 t <<
"\n\\begin{DoxyImage}%\n";
125 t <<
"\n\\begin{DoxyImageNoCaption}%\n"
130 t <<
"\\includegraphics";
154 t <<
"[height=\\baselineskip,keepaspectratio=true]";
158 t <<
"[width=\\textwidth,height=\\textheight/2,keepaspectratio=true]";
166 t <<
"{" << name <<
"}";
174 t <<
"%\n\\doxyfigcaption{";
178 t <<
"%\n\\doxyfigcaptionnolink{";
194 t <<
"%\n\\end{DoxyInlineImage}\n";
201 t <<
"\\end{DoxyImage}\n";
205 t <<
"\\end{DoxyImageNoCaption}\n";
212 for (
const auto &n : children)
219 const QCString &langExt,
int hierarchyLevel)
268 m_t <<
"\\texorpdfstring{$<$}{<}";
279 m_t <<
"\\texorpdfstring{$>$}{>}";
337 m_t <<
"~\\newline\n";
345 m_t <<
"\\DoxyHorRuler{1}\n";
347 m_t <<
"\\DoxyHorRuler{0}\n";
356 if (s.
enable())
m_t <<
"{\\bfseries{";
else m_t <<
"}}";
376 if (s.
enable())
m_t <<
"\\textsubscript{";
else m_t <<
"}";
379 if (s.
enable())
m_t <<
"\\textsuperscript{";
else m_t <<
"}";
382 if (s.
enable())
m_t <<
"\\begin{center}";
else m_t <<
"\\end{center} ";
385 if (s.
enable())
m_t <<
"\n\\footnotesize ";
else m_t <<
"\n\\normalsize ";
393 m_t <<
"\n\\begin{DoxyPre}";
399 m_t <<
"\\end{DoxyPre}\n";
420 m_ci.startCodeFragment(
"DoxyCode");
424 m_ci.endCodeFragment(
"DoxyCode");
431 m_t <<
"{\\ttfamily ";
438 m_t <<
"\\begin{DoxyCode}{0}";
440 m_t <<
"\\end{DoxyCode}\n";
444 m_t <<
"\\begin{DoxyVerb}";
446 m_t <<
"\\end{DoxyVerb}\n";
466 if (!fileName.isEmpty())
479 "msc {"+s.
text()+
"}",
481 if (!fileName.isEmpty())
495 for (
const auto &baseName: baseNameVector)
502 if (
Config_getBool(MERMAID_RENDER_MODE)!=MERMAID_RENDER_MODE_t::CLIENT_SIDE)
535 m_ci.startCodeFragment(
"DoxyCodeInclude");
547 m_ci.endCodeFragment(
"DoxyCodeInclude");
552 m_ci.startCodeFragment(
"DoxyCodeInclude");
561 m_ci.endCodeFragment(
"DoxyCodeInclude");
578 m_t <<
"\\begin{DoxyCode}{0}";
580 m_t <<
"\\end{DoxyCode}\n";
584 m_t <<
"\n\\begin{DoxyVerbInclude}\n";
586 m_t <<
"\\end{DoxyVerbInclude}\n";
592 m_ci.startCodeFragment(
"DoxyCodeInclude");
601 m_ci.endCodeFragment(
"DoxyCodeInclude");
613 if (!
m_hide)
m_ci.startCodeFragment(
"DoxyCodeInclude");
625 std::unique_ptr<FileDef> fd;
647 if (!
m_hide)
m_ci.endCodeFragment(
"DoxyCodeInclude");
659 const char *p = s.
data();
667 case '\'':
m_t <<
"\\textnormal{\\textquotesingle}";
break;
668 default:
m_t << c;
break;
697 if (!opt.noPar()) txt +=
"[";
699 if (!opt.noPar()) txt +=
"]";
701 m_t <<
"{\\bfseries ";
711 anchor = anchor.
mid(anchorPrefix.
length());
713 txt =
"\\DoxyCite{" + anchor +
"}";
718 else if (opt.isShortAuthor())
720 txt +=
"{shortauthor}";
722 else if (opt.isYear())
726 if (!opt.noPar()) txt +=
"{1}";
733 if (!opt.noPar()) txt +=
"[";
735 if (!opt.noPar()) txt +=
"]";
736 m_t <<
"{\\bfseries ";
753 m_t <<
"\n\\begin{DoxyEnumerate}";
759 m_t <<
"\n\\begin{DoxyItemize}";
764 m_t <<
"\n\\end{DoxyEnumerate}";
768 m_t <<
"\n\\end{DoxyItemize}";
778 m_t <<
"\n\\item[\\DoxyUnchecked] ";
782 m_t <<
"\n\\item[\\DoxyChecked] ";
799 std::get_if<DocParamSect>(p.
parent())
805 m_t <<
"~\\newline\n";
825 m_t <<
"\\begin{DoxySeeAlso}{";
829 m_t <<
"\\begin{DoxyReturn}{";
833 m_t <<
"\\begin{DoxyAuthor}{";
837 m_t <<
"\\begin{DoxyAuthor}{";
841 m_t <<
"\\begin{DoxyVersion}{";
845 m_t <<
"\\begin{DoxySince}{";
849 m_t <<
"\\begin{DoxyDate}{";
853 m_t <<
"\\begin{DoxyNote}{";
857 m_t <<
"\\begin{DoxyWarning}{";
861 m_t <<
"\\begin{DoxyPrecond}{";
865 m_t <<
"\\begin{DoxyPostcond}{";
869 m_t <<
"\\begin{DoxyCopyright}{";
873 m_t <<
"\\begin{DoxyInvariant}{";
877 m_t <<
"\\begin{DoxyRemark}{";
881 m_t <<
"\\begin{DoxyAttention}{";
885 m_t <<
"\\begin{DoxyImportant}{";
889 m_t <<
"\\begin{DoxyParagraph}{";
892 m_t <<
"\\begin{DoxyParagraph}{";
900 std::visit(*
this,*s.
title());
909 m_t <<
"\n\\end{DoxySeeAlso}\n";
912 m_t <<
"\n\\end{DoxyReturn}\n";
915 m_t <<
"\n\\end{DoxyAuthor}\n";
918 m_t <<
"\n\\end{DoxyAuthor}\n";
921 m_t <<
"\n\\end{DoxyVersion}\n";
924 m_t <<
"\n\\end{DoxySince}\n";
927 m_t <<
"\n\\end{DoxyDate}\n";
930 m_t <<
"\n\\end{DoxyNote}\n";
933 m_t <<
"\n\\end{DoxyWarning}\n";
936 m_t <<
"\n\\end{DoxyPrecond}\n";
939 m_t <<
"\n\\end{DoxyPostcond}\n";
942 m_t <<
"\n\\end{DoxyCopyright}\n";
945 m_t <<
"\n\\end{DoxyInvariant}\n";
948 m_t <<
"\n\\end{DoxyRemark}\n";
951 m_t <<
"\n\\end{DoxyAttention}\n";
954 m_t <<
"\n\\end{DoxyImportant}\n";
957 m_t <<
"\n\\end{DoxyParagraph}\n";
960 m_t <<
"\n\\end{DoxyParagraph}\n";
977 m_t <<
"\\begin{DoxyItemize}\n";
980 m_t <<
"\\end{DoxyItemize}\n";
1006 m_t <<
"\\texorpdfstring{";
1011 std::visit(*
this,*s.
title());
1020 std::visit(*
this,*s.
title());
1037 m_t <<
"\n\\begin{DoxyEnumerate}";
1038 for (
const auto &opt : s.
attribs())
1040 if (opt.name==
"type")
1044 m_t << (first ?
"[":
",");
1045 m_t <<
"label=\\arabic*";
1048 else if (opt.value==
"a")
1050 m_t << (first ?
"[":
",");
1051 m_t <<
"label=\\enumalphalphcnt*";
1054 else if (opt.value==
"A")
1056 m_t << (first ?
"[":
",");
1057 m_t <<
"label=\\enumAlphAlphcnt*";
1060 else if (opt.value==
"i")
1062 m_t << (first ?
"[":
",");
1063 m_t <<
"label=\\roman*";
1066 else if (opt.value==
"I")
1068 m_t << (first ?
"[":
",");
1069 m_t <<
"label=\\Roman*";
1073 else if (opt.name==
"start")
1075 m_t << (first ?
"[":
",");
1077 int val = opt.value.toInt(&ok);
1078 if (ok)
m_t <<
"start=" << val;
1082 if (!first)
m_t <<
"]\n";
1086 m_t <<
"\n\\begin{DoxyItemize}";
1091 m_t <<
"\n\\end{DoxyEnumerate}";
1093 m_t <<
"\n\\end{DoxyItemize}";
1101 for (
const auto &opt : l.
attribs())
1103 if (opt.name==
"value")
1106 int val = opt.value.toInt(&ok);
1124 auto it = std::find_if(attrs.begin(),attrs.end(),
1125 [](
const auto &att) { return att.name==
"class"; });
1126 if (it!=attrs.end() && it->value ==
"reflist")
return true;
1132 bool isNested=
false;
1134 while (n && !isNested)
1136 if (std::get_if<DocHtmlDescList>(n))
1151 m_t <<
"\n\\begin{DoxyRefList}";
1156 m_t <<
"\n\\begin{DoxyDescription}";
1161 m_t <<
"\n\\end{DoxyRefList}";
1165 m_t <<
"\n\\end{DoxyDescription}";
1172 m_t <<
"\n\\item[{\\parbox[t]{\\linewidth}{";
1190 bool isNested=
m_lcg.usedTableLevel()>0;
1191 while (n && !isNested)
1203 m_t <<
"\\begin{DoxyTableNested}{" << cols <<
"}";
1207 m_t <<
"\n\\begin{DoxyTable}{" << cols <<
"}";
1215 m_t <<
"\\end{DoxyTableNested}\n";
1219 m_t <<
"\\end{DoxyTable}\n";
1246 std::visit(*
this, *t.
caption());
1286 if (span.rowSpan>0) span.rowSpan--;
1287 if (span.rowSpan<=0)
1291 else if (span.column>col)
1293 col = span.column+span.colSpan;
1297 col = span.column+span.colSpan;
1313 auto appendOpt = [&cellOpts](
const QCString &s)
1315 if (!cellOpts.
isEmpty()) cellOpts+=
",";
1318 auto appendSpec = [&cellSpec](
const QCString &s)
1320 if (!cellSpec.
isEmpty()) cellSpec+=
",";
1323 auto writeCell = [
this,&cellOpts,&cellSpec]()
1330 m_t <<
"[" << cellOpts <<
"]";
1332 m_t <<
"{" << cellSpec <<
"}";
1337 for (
const auto &span :
rowSpans())
1346 for (
size_t i=0;i<span.colSpan;i++)
1372 appendOpt(
"r="+
QCString().setNum(rs));
1382 appendOpt(
"c="+
QCString().setNum(cs));
1386 appendSpec(
"bg=\\tableheadbgcolor");
1387 appendSpec(
"font=\\bfseries");
1405 for (
int i=0;i<cs-1;i++)
1428 m_t <<
"{\\texttt{";
1436 m_t <<
"{\\bfseries{";
1448 std::visit(*
this,*summary);
1449 m_t <<
"\\begin{adjustwidth}{1em}{0em}\n";
1454 m_t <<
"\\end{adjustwidth}\n";
1493 bool exists =
false;
1501 if (!fileName.isEmpty())
1513 bool exists =
false;
1521 if (!fileName.isEmpty())
1533 bool exists =
false;
1541 if (!fileName.isEmpty())
1562 if (
Config_getBool(MERMAID_RENDER_MODE)==MERMAID_RENDER_MODE_t::CLIENT_SIDE)
return;
1608 m_t <<
"\\item \\contentsline{section}{";
1639 m_t <<
"\\footnotesize\n";
1640 m_t <<
"\\begin{multicols}{2}\n";
1641 m_t <<
"\\begin{DoxyCompactList}\n";
1645 m_t <<
"\\end{DoxyCompactList}\n";
1646 m_t <<
"\\end{multicols}\n";
1647 m_t <<
"\\normalsize\n";
1655 m_lcg.incUsedTableLevel();
1659 m_t <<
"\n\\begin{DoxyParams}";
1660 if (hasInOutSpecs && hasTypeSpecs)
m_t <<
"[2]";
1661 else if (hasInOutSpecs || hasTypeSpecs)
m_t <<
"[1]";
1666 m_t <<
"\n\\begin{DoxyRetVals}{";
1670 m_t <<
"\n\\begin{DoxyExceptions}{";
1674 m_t <<
"\n\\begin{DoxyTemplParams}{";
1683 m_lcg.decUsedTableLevel();
1687 m_t <<
"\\end{DoxyParams}\n";
1690 m_t <<
"\\end{DoxyRetVals}\n";
1693 m_t <<
"\\end{DoxyExceptions}\n";
1696 m_t <<
"\\end{DoxyTemplParams}\n";
1716 parentType = sect->
type();
1730 m_t <<
"\\doxymbox{\\texttt{";
1745 if (useTable)
m_t <<
" & ";
1751 std::visit(*
this,type);
1753 if (useTable)
m_t <<
" & ";
1759 if (!first)
m_t <<
",";
else first=
FALSE;
1761 std::visit(*
this,param);
1775 std::visit(*
this,par);
1790 m_t <<
"\\begin{DoxyRefDesc}{";
1793 bool anonymousEnum = x.
file()==
"@";
1795 if (pdfHyperlinks && !anonymousEnum)
1801 m_t <<
"\\textbf{ ";
1806 if (pdfHyperlinks && !anonymousEnum)
1814 m_t <<
"\\end{DoxyRefDesc}\n";
1834 m_t <<
"\\begin{quote}\n";
1837 m_t <<
"\\end{quote}\n";
1855 m_lcg.insideTabbing(),
1858 m_lcg.usedTableLevel()>0,
1865 bool refToTable,
bool refToSection)
1868 if (ref.
isEmpty() && pdfHyperLinks)
1872 m_t <<
"\\doxytablelink{";
1874 else if (refToSection)
1893 else if (ref.
isEmpty() && refToSection)
1895 m_t <<
"\\doxysectref{";
1897 else if (ref.
isEmpty() && refToTable)
1899 m_t <<
"\\doxytableref{";
1903 m_t <<
"\\doxyref{";
1907 m_t <<
"\\textbf{ ";
1915 if (ref.
isEmpty() && !pdfHyperLinks)
1919 m_t <<
"}{" << file;
1920 if (!file.isEmpty() && !anchor.
isEmpty())
m_t <<
"_";
1921 m_t << anchor <<
"}";
1924 m_t <<
"{" << sectionType.
level() <<
"}";
1927 if (ref.
isEmpty() && pdfHyperLinks)
1941 int srcLine,
bool newFile
1962 int srcLine,
bool newFile
1995 int srcLine,
bool newFile
2017 if (shortName.
find(
'.')==-1) shortName +=
".png";
2039 bool useBitmap = inBuf.find(
"@startditaa") != std::string::npos;
2045 for (
const auto &bName: baseNameVector)
2051 if (shortName.
find(
'.')==-1) shortName +=
".png";
2069 if (
Config_getBool(MERMAID_RENDER_MODE)==MERMAID_RENDER_MODE_t::CLIENT_SIDE)
return;
2075 if (shortName.find(
'.')==-1) shortName +=
"." + imgExt;
2090 if (
Config_getBool(MERMAID_RENDER_MODE)==MERMAID_RENDER_MODE_t::CLIENT_SIDE)
return;
2098 outDir,
QCString(),inBuf,imageFormat,
2101 if (shortName.find(
'.')==-1) shortName +=
"." + imgExt;
2122 err(
"Maximum indent level ({}) exceeded while generating LaTeX output!\n",
maxIndentLevels-1);
QCString anchorPrefix() const
static CitationManager & instance()
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.
Valignment valignment() const
Alignment alignment() const
Node representing a HTML description data.
Node representing a Html description list.
const HtmlAttribList & attribs() const
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 numberHeaderRows() const
size_t numColumns() const
const DocNodeVariant * caption() const
Node representing an image.
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.
bool hasInOutSpecifier() const
bool hasTypeSpecifier() const
Node representing a uml file.
Node representing a reference to some item.
SectionType sectionType() const
QCString targetTitle() const
bool refToSection() 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.
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.
Minimal replacement for QFileInfo.
std::string fileName() const
std::string dirPath(bool absPath=true) const
Class representing a list of HTML attributes.
const char * latex(SymType symb) const
Access routine to the LaTeX code of the HTML entity.
static HtmlEntityMapper & instance()
Returns the one and only instance of the HTML entity mapper.
Generator for LaTeX code fragments.
void startMermaidFile(const QCString &fileName, const QCString &width, const QCString &height, bool hasCaption, const QCString &srcFile, int srcLine)
void startDiaFile(const QCString &fileName, const QCString &width, const QCString &height, bool hasCaption, const QCString &srcFile, int srcLine, bool newFile=true)
void setCurrentColumn(size_t col)
static const int maxIndentLevels
void endLink(const QCString &ref, const QCString &file, const QCString &anchor, bool refToTable=false, bool refToSection=false, SectionType sectionType=SectionType::Anchor)
void startMscFile(const QCString &fileName, const QCString &width, const QCString &height, bool hasCaption, const QCString &srcFile, int srcLine, bool newFile=true)
void writeMermaidFile(const QCString &baseName, const DocVerbatim &s)
void endDotFile(bool hasCaption)
void operator()(const DocWord &)
void visitCaption(const DocNodeList &children)
void addRowSpan(ActiveRowSpan &&span)
void setNumCols(size_t num)
void writeStartTableCommand(const DocNodeVariant *n, size_t cols)
void writeEndTableCommand(const DocNodeVariant *n)
void startLink(const QCString &ref, const QCString &file, const QCString &anchor, bool refToTable=false, bool refToSection=false)
LatexDocVisitor(TextStream &t, OutputCodeList &ci, LatexCodeGenerator &lcg, const QCString &langExt, int hierarchyLevel=0)
size_t currentColumn() const
void writePlantUMLFile(const QCString &fileName, const DocVerbatim &s)
void filter(const QCString &str, const bool retainNewLine=false)
void endMscFile(bool hasCaption)
bool isTableNested(const DocNodeVariant *n) const
void startPlantUmlFile(const QCString &fileName, const QCString &width, const QCString &height, bool hasCaption, const QCString &srcFile, int srcLine)
void startDotFile(const QCString &fileName, const QCString &width, const QCString &height, bool hasCaption, const QCString &srcFile, int srcLine, bool newFile=true)
LatexListItemInfo m_listItemInfo[maxIndentLevels]
void endDiaFile(bool hasCaption)
void endMermaidFile(bool hasCaption)
const char * getSectionName(int level) const
void endPlantUmlFile(bool hasCaption)
void writeMscFile(const QCString &fileName, const DocVerbatim &s, bool newFile=true)
void visitChildren(const T &t)
LatexCodeGenerator & m_lcg
void generateMermaidOutput(const QCString &baseName, const QCString &outDir, ImageFormat format, bool toIndex)
Register a generated Mermaid image with the index.
static QCString imageExtension(ImageFormat imageFormat)
static MermaidManager & instance()
static ImageFormat convertToImageFormat(OutputFormat outputFormat)
QCString writeMermaidSource(const QCString &outDirArg, const QCString &fileName, const QCString &content, ImageFormat format, const QCString &srcFile, int srcLine)
Write a Mermaid source file and register it for CLI rendering.
Class representing a list of different code generators.
void generatePlantUMLOutput(const QCString &baseName, const QCString &outDir, OutputFormat format, bool toIndex)
Convert a PlantUML file to an image.
StringVector writePlantUMLSource(const QCString &outDirArg, const QCString &fileName, const QCString &content, OutputFormat format, const QCString &engine, const QCString &srcFile, int srcLine, bool inlineCode)
Write a PlantUML compatible file.
static PlantumlManager & instance()
This is an alternative implementation of QCString.
int find(char c, int index=0, bool cs=TRUE) const
QCString & prepend(const char *s)
int toInt(bool *ok=nullptr, int base=10) const
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 endsWith(const char *s) const
bool isEmpty() const
Returns TRUE iff the string is empty.
const std::string & str() const
const char * data() const
Returns a pointer to the contents of the string in the form of a 0-terminated C string.
QCString left(size_t len) const
constexpr int level() const
Text streaming class that buffers data.
Class representing a regular expression.
Object representing the matching results.
#define Config_getBool(name)
#define Config_getString(name)
void writeDiaGraphFromFile(const QCString &inFile, const QCString &outDir, const QCString &outFile, DiaOutputFormat format, const QCString &srcFile, int srcLine, bool toIndex)
constexpr bool holds_one_of_alternatives(const DocNodeVariant &v)
returns true iff v holds one of types passed as template parameters
std::variant< DocWord, DocLinkedWord, DocURL, DocLineBreak, DocHorRuler, DocAnchor, DocCite, DocStyleChange, DocSymbol, DocEmoji, DocWhiteSpace, DocSeparator, DocVerbatim, DocInclude, DocIncOperator, DocFormula, DocIndexEntry, DocAutoList, DocAutoListItem, DocTitle, DocXRefItem, DocImage, DocDotFile, DocMscFile, DocDiaFile, DocVhdlFlow, DocLink, DocRef, DocInternalRef, DocHRef, DocHtmlHeader, DocHtmlDescTitle, DocHtmlDescList, DocSection, DocSecRefItem, DocSecRefList, DocInternal, DocParBlock, DocSimpleList, DocHtmlList, DocSimpleSect, DocSimpleSectSep, DocParamSect, DocPara, DocParamList, DocSimpleListItem, DocHtmlListItem, DocHtmlDescData, DocHtmlCell, DocHtmlCaption, DocHtmlRow, DocHtmlTable, DocHtmlBlockQuote, DocText, DocRoot, DocHtmlDetails, DocHtmlSummary, DocPlantUmlFile, DocMermaidFile > DocNodeVariant
constexpr DocNodeVariant * parent(DocNodeVariant *n)
returns the parent node of a given node n or nullptr if the node has no parent.
void writeDotGraphFromFile(const QCString &inFile, const QCString &outDir, const QCString &outFile, GraphOutputFormat format, const QCString &srcFile, int srcLine, bool toIndex)
std::unique_ptr< FileDef > createFileDef(const QCString &p, const QCString &n, const QCString &ref, const QCString &dn)
Translator * theTranslator
static const char * g_subparagraphLabel
static const int g_maxLevels
static const std::array< const char *, g_maxLevels > g_secLabels
static bool listIsNested(const DocHtmlDescList &dl)
static void insertDimension(TextStream &t, QCString dimension, const char *orientationString)
static void visitPreStart(TextStream &t, bool hasCaption, QCString name, QCString width, QCString height, bool inlineImage=FALSE)
static const char * g_paragraphLabel
static bool classEqualsReflist(const DocHtmlDescList &dl)
static void visitPostEnd(TextStream &t, bool hasCaption, bool inlineImage=FALSE)
@ TEX
called through texorpdf as TeX (first) part
@ PDF
called through texorpdf as PDF (second) part
@ NO
not called through texorpdf
QCString latexFilterURL(const QCString &s)
void filterLatexString(TextStream &t, const QCString &str, bool insideTabbing, bool insidePre, bool insideItem, bool insideTable, bool keepSpaces, const bool retainNewline)
void latexWriteIndexItem(TextStream &m_t, const QCString &s1, const QCString &s2)
void writeMscGraphFromFile(const QCString &inFile, const QCString &outDir, const QCString &outFile, MscOutputFormat format, const QCString &srcFile, int srcLine, bool toIndex)
bool search(std::string_view str, Match &match, const Ex &re, size_t pos)
Search in a given string str starting at position pos for a match against regular expression re.
Portable versions of functions that are platform dependent.
Options to configure the code parser.
CodeParserOptions & setStartLine(int lineNr)
CodeParserOptions & setInlineFragment(bool enable)
CodeParserOptions & setShowLineNumbers(bool enable)
CodeParserOptions & setFileDef(const FileDef *fd)
QCString writeFileContents(const QCString &baseName, const QCString &extension, const QCString &content, bool &exists)
Thread-safe function to write a string to a file.
SrcLangExt getLanguageFromFileName(const QCString &fileName, SrcLangExt defLang)
QCString integerToRoman(int n, bool upper)
QCString stripPath(const QCString &s)
bool readInputFile(const QCString &fileName, std::string &contents, bool filter, bool isSourceCode)
read a file name fileName and optionally filter and transcode it
SrcLangExt getLanguageFromCodeLang(QCString &fileName)
Routine to handle the language attribute of the \code command.
QCString makeBaseName(const QCString &name, const QCString &ext)
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)
A bunch of utility functions.