46static const std::array<const char *,g_maxLevels>
g_secLabels =
50 "doxysubsubsubsection",
51 "doxysubsubsubsubsection",
52 "doxysubsubsubsubsubsection",
53 "doxysubsubsubsubsubsubsection"
63 if (compactLatex) l++;
94 static const reg::Ex re(R
"((\d+)%)");
95 std::string s = dimension.str();
103 t << percent/100.0 <<
"\\text" << orientationString;
114 t <<
"\n\\begin{DoxyInlineImage}\n";
120 t <<
"\n\\begin{DoxyImage}\n";
124 t <<
"\n\\begin{DoxyImageNoCaption}\n"
129 t <<
"\\includegraphics";
153 t <<
"[height=\\baselineskip,keepaspectratio=true]";
157 t <<
"[width=\\textwidth,height=\\textheight/2,keepaspectratio=true]";
165 t <<
"{" << name <<
"}";
173 t <<
"\n\\doxyfigcaption{";
177 t <<
"\n\\doxyfigcaptionnolink{";
193 t <<
"\n\\end{DoxyInlineImage}\n";
200 t <<
"\\end{DoxyImage}\n";
204 t <<
"\\end{DoxyImageNoCaption}\n";
212 int i = shortName.
findRev(
'/');
215 shortName=shortName.
mid(i+1);
223 int i=baseName.
find(
'.');
226 baseName=baseName.
left(i);
234 for (
const auto &n : children)
244 char str[2]; str[1]=0;
252 case '!':
m_t <<
"\"!";
break;
253 case '"':
m_t <<
"\"\"";
break;
254 case '@':
m_t <<
"\"@";
break;
255 case '|':
m_t <<
"\\texttt{\"|}";
break;
256 case '[':
m_t <<
"[";
break;
257 case ']':
m_t <<
"]";
break;
258 case '{':
m_t <<
"\\lcurly{}";
break;
259 case '}':
m_t <<
"\\rcurly{}";
break;
260 default: str[0]=c;
filter(str);
break;
269 const QCString &langExt,
int hierarchyLevel)
318 m_t <<
"\\texorpdfstring{$<$}{<}";
329 m_t <<
"\\texorpdfstring{$>$}{>}";
381 m_t <<
"~\\newline\n";
388 m_t <<
"\\DoxyHorRuler{1}\n";
390 m_t <<
"\\DoxyHorRuler{0}\n";
399 if (s.
enable())
m_t <<
"{\\bfseries{";
else m_t <<
"}}";
419 if (s.
enable())
m_t <<
"\\textsubscript{";
else m_t <<
"}";
422 if (s.
enable())
m_t <<
"\\textsuperscript{";
else m_t <<
"}";
425 if (s.
enable())
m_t <<
"\\begin{center}";
else m_t <<
"\\end{center} ";
428 if (s.
enable())
m_t <<
"\n\\footnotesize ";
else m_t <<
"\n\\normalsize ";
436 m_t <<
"\n\\begin{DoxyPre}";
442 m_t <<
"\\end{DoxyPre}\n";
463 m_ci.startCodeFragment(
"DoxyCode");
467 m_ci.endCodeFragment(
"DoxyCode");
474 m_t <<
"{\\ttfamily ";
479 m_t <<
"\\begin{DoxyVerb}";
481 m_t <<
"\\end{DoxyVerb}\n";
495 static int dotindex = 1;
506 err(
"Could not open file {} for writing\n",fileName);
523 static int mscindex = 1;
530 QCString fileName = baseName+
".msc";
534 err(
"Could not open file {} for writing\n",fileName);
558 for (
const auto &baseName: baseNameVector)
586 m_ci.startCodeFragment(
"DoxyCodeInclude");
602 m_ci.endCodeFragment(
"DoxyCodeInclude");
607 m_ci.startCodeFragment(
"DoxyCodeInclude");
620 m_ci.endCodeFragment(
"DoxyCodeInclude");
635 m_t <<
"\n\\begin{DoxyVerbInclude}\n";
637 m_t <<
"\\end{DoxyVerbInclude}\n";
642 m_ci.startCodeFragment(
"DoxyCodeInclude");
651 m_ci.endCodeFragment(
"DoxyCodeInclude");
663 if (!
m_hide)
m_ci.startCodeFragment(
"DoxyCodeInclude");
675 std::unique_ptr<FileDef> fd;
699 if (!
m_hide)
m_ci.endCodeFragment(
"DoxyCodeInclude");
711 const char *p = s.
data();
719 case '\'':
m_t <<
"\\textnormal{\\textquotesingle}";
break;
720 default:
m_t << c;
break;
753 if (!opt.noPar()) txt +=
"[";
755 if (!opt.noPar()) txt +=
"]";
757 m_t <<
"{\\bfseries ";
767 anchor = anchor.
mid(anchorPrefix.
length());
769 txt =
"\\DoxyCite{" + anchor +
"}";
774 else if (opt.isShortAuthor())
776 txt +=
"{shortauthor}";
778 else if (opt.isYear())
782 if (!opt.noPar()) txt +=
"{1}";
789 if (!opt.noPar()) txt +=
"[";
791 if (!opt.noPar()) txt +=
"]";
792 m_t <<
"{\\bfseries ";
809 m_t <<
"\n\\begin{DoxyEnumerate}";
815 m_t <<
"\n\\begin{DoxyItemize}";
820 m_t <<
"\n\\end{DoxyEnumerate}";
824 m_t <<
"\n\\end{DoxyItemize}";
834 m_t <<
"\n\\item[\\DoxyUnchecked] ";
838 m_t <<
"\n\\item[\\DoxyChecked] ";
855 std::get_if<DocParamSect>(p.
parent())
861 m_t <<
"~\\newline\n";
881 m_t <<
"\\begin{DoxySeeAlso}{";
885 m_t <<
"\\begin{DoxyReturn}{";
889 m_t <<
"\\begin{DoxyAuthor}{";
893 m_t <<
"\\begin{DoxyAuthor}{";
897 m_t <<
"\\begin{DoxyVersion}{";
901 m_t <<
"\\begin{DoxySince}{";
905 m_t <<
"\\begin{DoxyDate}{";
909 m_t <<
"\\begin{DoxyNote}{";
913 m_t <<
"\\begin{DoxyWarning}{";
917 m_t <<
"\\begin{DoxyPrecond}{";
921 m_t <<
"\\begin{DoxyPostcond}{";
925 m_t <<
"\\begin{DoxyCopyright}{";
929 m_t <<
"\\begin{DoxyInvariant}{";
933 m_t <<
"\\begin{DoxyRemark}{";
937 m_t <<
"\\begin{DoxyAttention}{";
941 m_t <<
"\\begin{DoxyImportant}{";
945 m_t <<
"\\begin{DoxyParagraph}{";
948 m_t <<
"\\begin{DoxyParagraph}{";
956 std::visit(*
this,*s.
title());
965 m_t <<
"\n\\end{DoxySeeAlso}\n";
968 m_t <<
"\n\\end{DoxyReturn}\n";
971 m_t <<
"\n\\end{DoxyAuthor}\n";
974 m_t <<
"\n\\end{DoxyAuthor}\n";
977 m_t <<
"\n\\end{DoxyVersion}\n";
980 m_t <<
"\n\\end{DoxySince}\n";
983 m_t <<
"\n\\end{DoxyDate}\n";
986 m_t <<
"\n\\end{DoxyNote}\n";
989 m_t <<
"\n\\end{DoxyWarning}\n";
992 m_t <<
"\n\\end{DoxyPrecond}\n";
995 m_t <<
"\n\\end{DoxyPostcond}\n";
998 m_t <<
"\n\\end{DoxyCopyright}\n";
1001 m_t <<
"\n\\end{DoxyInvariant}\n";
1004 m_t <<
"\n\\end{DoxyRemark}\n";
1007 m_t <<
"\n\\end{DoxyAttention}\n";
1010 m_t <<
"\n\\end{DoxyImportant}\n";
1013 m_t <<
"\n\\end{DoxyParagraph}\n";
1016 m_t <<
"\n\\end{DoxyParagraph}\n";
1033 m_t <<
"\\begin{DoxyItemize}\n";
1036 m_t <<
"\\end{DoxyItemize}\n";
1062 m_t <<
"\\texorpdfstring{";
1067 std::visit(*
this,*s.
title());
1076 std::visit(*
this,*s.
title());
1093 m_t <<
"\n\\begin{DoxyEnumerate}";
1094 for (
const auto &opt : s.
attribs())
1096 if (opt.name==
"type")
1100 m_t << (first ?
"[":
",");
1101 m_t <<
"label=\\arabic*";
1104 else if (opt.value==
"a")
1106 m_t << (first ?
"[":
",");
1107 m_t <<
"label=\\enumalphalphcnt*";
1110 else if (opt.value==
"A")
1112 m_t << (first ?
"[":
",");
1113 m_t <<
"label=\\enumAlphAlphcnt*";
1116 else if (opt.value==
"i")
1118 m_t << (first ?
"[":
",");
1119 m_t <<
"label=\\roman*";
1122 else if (opt.value==
"I")
1124 m_t << (first ?
"[":
",");
1125 m_t <<
"label=\\Roman*";
1129 else if (opt.name==
"start")
1131 m_t << (first ?
"[":
",");
1133 int val = opt.value.toInt(&ok);
1134 if (ok)
m_t <<
"start=" << val;
1138 if (!first)
m_t <<
"]\n";
1142 m_t <<
"\n\\begin{DoxyItemize}";
1147 m_t <<
"\n\\end{DoxyEnumerate}";
1149 m_t <<
"\n\\end{DoxyItemize}";
1157 for (
const auto &opt : l.
attribs())
1159 if (opt.name==
"value")
1162 int val = opt.value.toInt(&ok);
1180 auto it = std::find_if(attrs.begin(),attrs.end(),
1181 [](
const auto &att) { return att.name==
"class"; });
1182 if (it!=attrs.end() && it->value ==
"reflist")
return true;
1188 bool isNested=
false;
1190 while (n && !isNested)
1192 if (std::get_if<DocHtmlDescList>(n))
1207 m_t <<
"\n\\begin{DoxyRefList}";
1212 m_t <<
"\n\\begin{DoxyDescription}";
1217 m_t <<
"\n\\end{DoxyRefList}";
1221 m_t <<
"\n\\end{DoxyDescription}";
1246 bool isNested=
m_lcg.usedTableLevel()>0;
1247 while (n && !isNested)
1259 m_t <<
"{\\begin{tabularx}{\\linewidth}{|*{" << cols <<
"}{>{\\raggedright\\arraybackslash}X|}}";
1263 m_t <<
"\\tabulinesep=1mm\n\\begin{longtabu}spread 0pt [c]{*{" << cols <<
"}{|X[-1]}|}\n";
1272 m_t <<
"\\end{tabularx}}\n";
1276 m_t <<
"\\end{longtabu}\n";
1301 m_t <<
"\\caption{";
1302 std::visit(*
this, *t.
caption());
1345 for (
const auto &span :
rowSpans())
1349 if (span.rowSpan>0 && span.column==c &&
1350 row.
rowIndex()>span.cell.rowIndex()
1356 m_t <<
"\\multicolumn{" << span.colSpan <<
"}{";
1361 m_t <<
"\\multicolumn{1}{c|}{}";
1373 if (span.rowSpan>0) span.rowSpan--;
1374 if (span.rowSpan<=0)
1378 else if (span.column>col)
1380 m_t <<
"\\cline{" << col <<
"-" << (span.column-1) <<
"}";
1381 col = span.column+span.colSpan;
1385 col = span.column+span.colSpan;
1391 m_t <<
"\\cline{" << col <<
"-" <<
numCols() <<
"}";
1401 m_t <<
"\\endfirsthead\n";
1403 m_t <<
"\\endfoot\n";
1408 m_t <<
"\\endhead\n";
1422 for (
const auto &span :
rowSpans())
1426 if (row && span.colSpan>1)
1428 m_t <<
"\\multicolumn{" << span.colSpan <<
"}{";
1433 m_t <<
"l|}{" << (c.
isHeading()?
"\\columncolor{\\tableheadbgcolor}" :
"") <<
"}";
1449 m_t <<
"\\multicolumn{" << cs <<
"}{";
1472 m_t <<
"\\multirow";
1490 m_t <<
"{" << rs <<
"}{*}{";
1494 m_t <<
"\\PBS\\centering ";
1498 m_t <<
"\\PBS\\raggedleft ";
1502 m_t <<
"\\cellcolor{\\tableheadbgcolor}\\textbf{ ";
1543 m_t <<
"{\\texttt{";
1551 m_t <<
"{\\bfseries{";
1563 std::visit(*
this,*summary);
1564 m_t <<
"\\begin{adjustwidth}{1em}{0em}\n";
1569 m_t <<
"\\end{adjustwidth}\n";
1680 m_t <<
"\\item \\contentsline{section}{";
1711 m_t <<
"\\footnotesize\n";
1712 m_t <<
"\\begin{multicols}{2}\n";
1713 m_t <<
"\\begin{DoxyCompactList}\n";
1717 m_t <<
"\\end{DoxyCompactList}\n";
1718 m_t <<
"\\end{multicols}\n";
1719 m_t <<
"\\normalsize\n";
1727 m_lcg.incUsedTableLevel();
1731 m_t <<
"\n\\begin{DoxyParams}";
1732 if (hasInOutSpecs && hasTypeSpecs)
m_t <<
"[2]";
1733 else if (hasInOutSpecs || hasTypeSpecs)
m_t <<
"[1]";
1738 m_t <<
"\n\\begin{DoxyRetVals}{";
1742 m_t <<
"\n\\begin{DoxyExceptions}{";
1746 m_t <<
"\n\\begin{DoxyTemplParams}{";
1755 m_lcg.decUsedTableLevel();
1759 m_t <<
"\\end{DoxyParams}\n";
1762 m_t <<
"\\end{DoxyRetVals}\n";
1765 m_t <<
"\\end{DoxyExceptions}\n";
1768 m_t <<
"\\end{DoxyTemplParams}\n";
1788 parentType = sect->
type();
1802 m_t <<
"\\mbox{\\texttt{";
1817 if (useTable)
m_t <<
" & ";
1823 std::visit(*
this,type);
1825 if (useTable)
m_t <<
" & ";
1831 if (!first)
m_t <<
",";
else first=
FALSE;
1833 std::visit(*
this,param);
1847 std::visit(*
this,par);
1862 m_t <<
"\\begin{DoxyRefDesc}{";
1865 bool anonymousEnum = x.
file()==
"@";
1867 if (pdfHyperlinks && !anonymousEnum)
1873 m_t <<
"\\textbf{ ";
1878 if (pdfHyperlinks && !anonymousEnum)
1886 m_t <<
"\\end{DoxyRefDesc}\n";
1906 m_t <<
"\\begin{quote}\n";
1909 m_t <<
"\\end{quote}\n";
1927 m_lcg.insideTabbing(),
1930 m_lcg.usedTableLevel()>0,
1937 bool refToTable,
bool refToSection)
1940 if (ref.
isEmpty() && pdfHyperLinks)
1944 m_t <<
"\\doxytablelink{";
1946 else if (refToSection)
1965 else if (ref.
isEmpty() && refToSection)
1967 m_t <<
"\\doxysectref{";
1969 else if (ref.
isEmpty() && refToTable)
1971 m_t <<
"\\doxytableref{";
1975 m_t <<
"\\doxyref{";
1979 m_t <<
"\\textbf{ ";
1987 if (ref.
isEmpty() && !pdfHyperLinks)
1991 m_t <<
"}{" << file;
1992 if (!file.isEmpty() && !anchor.
isEmpty())
m_t <<
"_";
1993 m_t << anchor <<
"}";
1996 m_t <<
"{" << sectionType.
level() <<
"}";
1999 if (ref.
isEmpty() && pdfHyperLinks)
2102 if (shortName.
find(
'.')==-1) shortName +=
".png";
2124 bool useBitmap = inBuf.find(
"@startditaa") != std::string::npos;
2130 for (
const auto &bName: baseNameVector)
2136 if (shortName.
find(
'.')==-1) shortName +=
".png";
2162 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, 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.
Class representing a directory in the file system.
bool remove(const std::string &path, bool acceptsAbsPath=true) const
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
uint32_t columnIndex() 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.
uint32_t rowIndex() const
Node representing a HTML table.
size_t numColumns() const
const DocNodeVariant * caption() const
const DocNodeVariant * firstRow() 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 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.
QCString escapeMakeIndexChars(const char *s)
void writeDiaFile(const QCString &fileName, const DocVerbatim &s)
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 endDotFile(bool hasCaption)
void operator()(const DocWord &)
void setInColSpan(bool b)
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)
void startDotFile(const QCString &fileName, const QCString &width, const QCString &height, bool hasCaption, const QCString &srcFile, int srcLine)
bool isTableNested(const DocNodeVariant *n) const
void startPlantUmlFile(const QCString &fileName, const QCString &width, const QCString &height, bool hasCaption, const QCString &srcFile, int srcLine)
LatexListItemInfo m_listItemInfo[maxIndentLevels]
void endDiaFile(bool hasCaption)
const char * getSectionName(int level) const
void writeMscFile(const QCString &fileName, const DocVerbatim &s)
void endPlantUmlFile(bool hasCaption)
void startMscFile(const QCString &fileName, const QCString &width, const QCString &height, bool hasCaption, const QCString &srcFile, int srcLine)
void setInRowSpan(bool b)
void visitChildren(const T &t)
LatexCodeGenerator & m_lcg
void startDiaFile(const QCString &fileName, const QCString &width, const QCString &height, bool hasCaption, const QCString &srcFile, int srcLine)
Class representing a list of different code generators.
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()
void generatePlantUMLOutput(const QCString &baseName, const QCString &outDir, OutputFormat format)
Convert a PlantUML file to an image.
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
QCString & sprintf(const char *format,...)
int findRev(char c, int index=-1, bool cs=TRUE) 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)
static QCString makeBaseName(const QCString &name)
static QCString makeShortName(const QCString &baseName)
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 > DocNodeVariant
constexpr bool holds_one_of_alternatives(const DocNodeVariant &v)
returns true iff v holds one of types passed as template parameters
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)
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 QCString makeBaseName(const QCString &name)
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 QCString makeShortName(const QCString &name)
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)
QCString latexEscapeIndexChars(const QCString &s)
QCString latexEscapeLabelName(const QCString &s)
void writeMscGraphFromFile(const QCString &inFile, const QCString &outDir, const QCString &outFile, MscOutputFormat format, const QCString &srcFile, int srcLine)
std::ofstream openOutputStream(const QCString &name, bool append=false)
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.
const char * qPrint(const char *s)
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.
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.