45static const std::array<const char *,g_maxLevels>
g_secLabels =
49 "doxysubsubsubsection",
50 "doxysubsubsubsubsection",
51 "doxysubsubsubsubsubsection",
52 "doxysubsubsubsubsubsubsection"
62 if (compactLatex) l++;
93 static const reg::Ex re(R
"((\d+)%)");
94 std::string s = dimension.str();
102 t << percent/100.0 <<
"\\text" << orientationString;
113 t <<
"\n\\begin{DoxyInlineImage}\n";
119 t <<
"\n\\begin{DoxyImage}\n";
123 t <<
"\n\\begin{DoxyImageNoCaption}\n"
128 t <<
"\\includegraphics";
152 t <<
"[height=\\baselineskip,keepaspectratio=true]";
156 t <<
"[width=\\textwidth,height=\\textheight/2,keepaspectratio=true]";
164 t <<
"{" << name <<
"}";
172 t <<
"\n\\doxyfigcaption{";
176 t <<
"\n\\doxyfigcaptionnolink{";
192 t <<
"\n\\end{DoxyInlineImage}\n";
199 t <<
"\\end{DoxyImage}\n";
203 t <<
"\\end{DoxyImageNoCaption}\n";
211 int i = shortName.
findRev(
'/');
214 shortName=shortName.
mid(i+1);
222 int i=baseName.
find(
'.');
225 baseName=baseName.
left(i);
233 for (
const auto &n : children)
243 char str[2]; str[1]=0;
251 case '!':
m_t <<
"\"!";
break;
252 case '"':
m_t <<
"\"\"";
break;
253 case '@':
m_t <<
"\"@";
break;
254 case '|':
m_t <<
"\\texttt{\"|}";
break;
255 case '[':
m_t <<
"[";
break;
256 case ']':
m_t <<
"]";
break;
257 case '{':
m_t <<
"\\lcurly{}";
break;
258 case '}':
m_t <<
"\\rcurly{}";
break;
259 default: str[0]=c;
filter(str);
break;
268 const QCString &langExt,
int hierarchyLevel)
317 m_t <<
"\\texorpdfstring{$<$}{<}";
328 m_t <<
"\\texorpdfstring{$>$}{>}";
352 QCString imageName=emojiName.
mid(1,emojiName.
length()-2);
372 m_t <<
"{\\texttt{ ";
380 m_t <<
"~\\newline\n";
387 m_t <<
"\\DoxyHorRuler{1}\n";
389 m_t <<
"\\DoxyHorRuler{0}\n";
398 if (s.
enable())
m_t <<
"{\\bfseries{";
else m_t <<
"}}";
417 if (s.
enable())
m_t <<
"\\textsubscript{";
else m_t <<
"}";
420 if (s.
enable())
m_t <<
"\\textsuperscript{";
else m_t <<
"}";
423 if (s.
enable())
m_t <<
"\\begin{center}";
else m_t <<
"\\end{center} ";
426 if (s.
enable())
m_t <<
"\n\\footnotesize ";
else m_t <<
"\n\\normalsize ";
434 m_t <<
"\n\\begin{DoxyPre}";
440 m_t <<
"\\end{DoxyPre}\n";
461 m_ci.startCodeFragment(
"DoxyCode");
465 m_ci.endCodeFragment(
"DoxyCode");
472 m_t <<
"{\\ttfamily ";
477 m_t <<
"\\begin{DoxyVerb}";
479 m_t <<
"\\end{DoxyVerb}\n";
493 static int dotindex = 1;
504 err(
"Could not open file %s for writing\n",
qPrint(fileName));
521 static int mscindex = 1;
528 QCString fileName = baseName+
".msc";
532 err(
"Could not open file %s for writing\n",
qPrint(fileName));
536 QCString text =
"msc {";
581 m_ci.startCodeFragment(
"DoxyCodeInclude");
582 FileInfo cfi( inc.
file().
str() );
597 m_ci.endCodeFragment(
"DoxyCodeInclude");
602 m_ci.startCodeFragment(
"DoxyCodeInclude");
615 m_ci.endCodeFragment(
"DoxyCodeInclude");
630 m_t <<
"\n\\begin{DoxyVerbInclude}\n";
632 m_t <<
"\\end{DoxyVerbInclude}\n";
637 m_ci.startCodeFragment(
"DoxyCodeInclude");
646 m_ci.endCodeFragment(
"DoxyCodeInclude");
658 if (!
m_hide)
m_ci.startCodeFragment(
"DoxyCodeInclude");
670 std::unique_ptr<FileDef> fd;
694 if (!
m_hide)
m_ci.endCodeFragment(
"DoxyCodeInclude");
705 QCString s = f.
text();
706 const char *p = s.
data();
714 case '\'':
m_t <<
"\\textnormal{\\textquotesingle}";
break;
715 default:
m_t << c;
break;
741 QCString anchor = cite.
anchor();
743 anchor = anchor.
mid(anchorPrefix.
length());
744 m_t <<
"\\cite{" << anchor <<
"}";
748 m_t <<
"{\\bfseries [";
764 m_t <<
"\n\\begin{DoxyEnumerate}";
770 m_t <<
"\n\\begin{DoxyItemize}";
775 m_t <<
"\n\\end{DoxyEnumerate}";
779 m_t <<
"\n\\end{DoxyItemize}";
789 m_t <<
"\n\\item[\\DoxyUnchecked] ";
793 m_t <<
"\n\\item[\\DoxyChecked] ";
810 std::get_if<DocParamSect>(p.
parent())
826 m_t <<
"\\begin{DoxySeeAlso}{";
830 m_t <<
"\\begin{DoxyReturn}{";
834 m_t <<
"\\begin{DoxyAuthor}{";
838 m_t <<
"\\begin{DoxyAuthor}{";
842 m_t <<
"\\begin{DoxyVersion}{";
846 m_t <<
"\\begin{DoxySince}{";
850 m_t <<
"\\begin{DoxyDate}{";
854 m_t <<
"\\begin{DoxyNote}{";
858 m_t <<
"\\begin{DoxyWarning}{";
862 m_t <<
"\\begin{DoxyPrecond}{";
866 m_t <<
"\\begin{DoxyPostcond}{";
870 m_t <<
"\\begin{DoxyCopyright}{";
874 m_t <<
"\\begin{DoxyInvariant}{";
878 m_t <<
"\\begin{DoxyRemark}{";
882 m_t <<
"\\begin{DoxyAttention}{";
886 m_t <<
"\\begin{DoxyImportant}{";
890 m_t <<
"\\begin{DoxyParagraph}{";
893 m_t <<
"\\begin{DoxyParagraph}{";
901 std::visit(*
this,*s.
title());
910 m_t <<
"\n\\end{DoxySeeAlso}\n";
913 m_t <<
"\n\\end{DoxyReturn}\n";
916 m_t <<
"\n\\end{DoxyAuthor}\n";
919 m_t <<
"\n\\end{DoxyAuthor}\n";
922 m_t <<
"\n\\end{DoxyVersion}\n";
925 m_t <<
"\n\\end{DoxySince}\n";
928 m_t <<
"\n\\end{DoxyDate}\n";
931 m_t <<
"\n\\end{DoxyNote}\n";
934 m_t <<
"\n\\end{DoxyWarning}\n";
937 m_t <<
"\n\\end{DoxyPrecond}\n";
940 m_t <<
"\n\\end{DoxyPostcond}\n";
943 m_t <<
"\n\\end{DoxyCopyright}\n";
946 m_t <<
"\n\\end{DoxyInvariant}\n";
949 m_t <<
"\n\\end{DoxyRemark}\n";
952 m_t <<
"\n\\end{DoxyAttention}\n";
955 m_t <<
"\n\\end{DoxyImportant}\n";
958 m_t <<
"\n\\end{DoxyParagraph}\n";
961 m_t <<
"\n\\end{DoxyParagraph}\n";
978 m_t <<
"\\begin{DoxyItemize}\n";
981 m_t <<
"\\end{DoxyItemize}\n";
1007 m_t <<
"\\texorpdfstring{";
1012 std::visit(*
this,*s.
title());
1021 std::visit(*
this,*s.
title());
1038 m_t <<
"\n\\begin{DoxyEnumerate}";
1039 for (
const auto &opt : s.
attribs())
1041 if (opt.name==
"type")
1045 m_t << (first ?
"[":
",");
1046 m_t <<
"label=\\arabic*";
1049 else if (opt.value==
"a")
1051 m_t << (first ?
"[":
",");
1052 m_t <<
"label=\\enumalphalphcnt*";
1055 else if (opt.value==
"A")
1057 m_t << (first ?
"[":
",");
1058 m_t <<
"label=\\enumAlphAlphcnt*";
1061 else if (opt.value==
"i")
1063 m_t << (first ?
"[":
",");
1064 m_t <<
"label=\\roman*";
1067 else if (opt.value==
"I")
1069 m_t << (first ?
"[":
",");
1070 m_t <<
"label=\\Roman*";
1074 else if (opt.name==
"start")
1076 m_t << (first ?
"[":
",");
1078 int val = opt.value.toInt(&ok);
1079 if (ok)
m_t <<
"start=" << val;
1083 if (!first)
m_t <<
"]\n";
1087 m_t <<
"\n\\begin{DoxyItemize}";
1092 m_t <<
"\n\\end{DoxyEnumerate}";
1094 m_t <<
"\n\\end{DoxyItemize}";
1102 for (
const auto &opt : l.
attribs())
1104 if (opt.name==
"value")
1107 int val = opt.value.toInt(&ok);
1125 auto it = std::find_if(attrs.begin(),attrs.end(),
1126 [](
const auto &att) { return att.name==
"class"; });
1127 if (it!=attrs.end() && it->value ==
"reflist")
return true;
1133 bool isNested=
false;
1135 while (n && !isNested)
1137 if (std::get_if<DocHtmlDescList>(n))
1152 m_t <<
"\n\\begin{DoxyRefList}";
1157 m_t <<
"\n\\begin{DoxyDescription}";
1162 m_t <<
"\n\\end{DoxyRefList}";
1166 m_t <<
"\n\\end{DoxyDescription}";
1191 bool isNested=
FALSE;
1192 while (n && !isNested)
1204 t <<
"{\\begin{tabularx}{\\linewidth}{|*{" << cols <<
"}{>{\\raggedright\\arraybackslash}X|}}";
1208 t <<
"\\tabulinesep=1mm\n\\begin{longtabu}spread 0pt [c]{*{" << cols <<
"}{|X[-1]}|}\n";
1217 t <<
"\\end{tabularx}}\n";
1221 t <<
"\\end{longtabu}\n";
1230 const DocHtmlCaption *c = t.
caption() ? &std::get<DocHtmlCaption>(*t.
caption()) :
nullptr;
1246 m_t <<
"\\caption{";
1247 std::visit(*
this, *t.
caption());
1290 for (
const auto &span :
rowSpans())
1294 if (span.rowSpan>0 && span.column==c &&
1295 row.
rowIndex()>span.cell.rowIndex()
1301 m_t <<
"\\multicolumn{" << span.colSpan <<
"}{";
1306 m_t <<
"\\multicolumn{1}{c|}{}";
1318 if (span.rowSpan>0) span.rowSpan--;
1319 if (span.rowSpan<=0)
1323 else if (span.column>col)
1325 m_t <<
"\\cline{" << col <<
"-" << (span.column-1) <<
"}";
1326 col = span.column+span.colSpan;
1330 col = span.column+span.colSpan;
1336 m_t <<
"\\cline{" << col <<
"-" <<
numCols() <<
"}";
1346 m_t <<
"\\endfirsthead\n";
1348 m_t <<
"\\endfoot\n";
1353 m_t <<
"\\endhead\n";
1362 const DocHtmlRow *row = std::get_if<DocHtmlRow>(c.
parent());
1367 for (
const auto &span :
rowSpans())
1371 if (row && span.colSpan>1)
1373 m_t <<
"\\multicolumn{" << span.colSpan <<
"}{";
1378 m_t <<
"l|}{" << (c.
isHeading()?
"\\columncolor{\\tableheadbgcolor}" :
"") <<
"}";
1394 m_t <<
"\\multicolumn{" << cs <<
"}{";
1417 m_t <<
"\\multirow";
1435 m_t <<
"{" << rs <<
"}{*}{";
1439 m_t <<
"\\PBS\\centering ";
1443 m_t <<
"\\PBS\\raggedleft ";
1447 m_t <<
"\\cellcolor{\\tableheadbgcolor}\\textbf{ ";
1488 m_t <<
"{\\texttt{ ";
1496 m_t <<
"{\\bfseries{";
1508 std::visit(*
this,*summary);
1509 m_t <<
"\\begin{adjustwidth}{1em}{0em}\n";
1514 m_t <<
"\\end{adjustwidth}\n";
1535 QCString gfxName = img.
name();
1625 m_t <<
"\\item \\contentsline{section}{";
1656 m_t <<
"\\footnotesize\n";
1657 m_t <<
"\\begin{multicols}{2}\n";
1658 m_t <<
"\\begin{DoxyCompactList}\n";
1662 m_t <<
"\\end{DoxyCompactList}\n";
1663 m_t <<
"\\end{multicols}\n";
1664 m_t <<
"\\normalsize\n";
1672 m_lcg.incUsedTableLevel();
1676 m_t <<
"\n\\begin{DoxyParams}";
1677 if (hasInOutSpecs && hasTypeSpecs)
m_t <<
"[2]";
1678 else if (hasInOutSpecs || hasTypeSpecs)
m_t <<
"[1]";
1683 m_t <<
"\n\\begin{DoxyRetVals}{";
1687 m_t <<
"\n\\begin{DoxyExceptions}{";
1691 m_t <<
"\n\\begin{DoxyTemplParams}{";
1700 m_lcg.decUsedTableLevel();
1704 m_t <<
"\\end{DoxyParams}\n";
1707 m_t <<
"\\end{DoxyRetVals}\n";
1710 m_t <<
"\\end{DoxyExceptions}\n";
1713 m_t <<
"\\end{DoxyTemplParams}\n";
1730 const DocParamSect *sect = std::get_if<DocParamSect>(pl.
parent());
1733 parentType = sect->
type();
1747 m_t <<
"\\mbox{\\texttt{ ";
1762 if (useTable)
m_t <<
" & ";
1768 std::visit(*
this,type);
1770 if (useTable)
m_t <<
" & ";
1776 if (!first)
m_t <<
",";
else first=
FALSE;
1778 std::visit(*
this,param);
1792 std::visit(*
this,par);
1807 m_t <<
"\\begin{DoxyRefDesc}{";
1810 bool anonymousEnum = x.
file()==
"@";
1812 if (pdfHyperlinks && !anonymousEnum)
1818 m_t <<
"\\textbf{ ";
1823 if (pdfHyperlinks && !anonymousEnum)
1831 m_t <<
"\\end{DoxyRefDesc}\n";
1851 m_t <<
"\\begin{quote}\n";
1854 m_t <<
"\\end{quote}\n";
1872 m_lcg.insideTabbing(),
1875 m_lcg.usedTableLevel()>0,
1882 bool refToTable,
bool refToSection)
1885 if (ref.
isEmpty() && pdfHyperLinks)
1889 m_t <<
"\\doxytablelink{";
1891 else if (refToSection)
1910 else if (ref.
isEmpty() && refToSection)
1912 m_t <<
"\\doxysectref{";
1914 else if (ref.
isEmpty() && refToTable)
1916 m_t <<
"\\doxytableref{";
1920 m_t <<
"\\doxyref{";
1924 m_t <<
"\\textbf{ ";
1932 if (ref.
isEmpty() && !pdfHyperLinks)
1936 m_t <<
"}{" << file;
1937 if (!file.isEmpty() && !anchor.
isEmpty())
m_t <<
"_";
1938 m_t << anchor <<
"}";
1941 m_t <<
"{" << sectionType.
level() <<
"}";
1944 if (ref.
isEmpty() && pdfHyperLinks)
1964 QCString name = fileName;
2047 if (shortName.
find(
'.')==-1) shortName +=
".png";
2069 bool useBitmap = inBuf.find(
"@startditaa") != std::string::npos;
2071 outDir,QCString(),inBuf.c_str(),
2073 QCString(),srcFile,srcLine,
false);
2078 if (shortName.
find(
'.')==-1) shortName +=
".png";
2101 err(
"Maximum indent level (%d) 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.
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.
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.
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 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)
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.
QCString 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.
virtual QCString trPrecondition()=0
virtual QCString trSince()=0
virtual QCString trVersion()=0
virtual QCString trReturns()=0
virtual QCString trExceptions()=0
virtual QCString trRemarks()=0
virtual QCString trPageAbbreviation()=0
virtual QCString trNote()=0
virtual QCString trPostcondition()=0
virtual QCString trAttention()=0
virtual QCString trCopyright()=0
virtual QCString trDate()=0
virtual QCString trParameters()=0
virtual QCString trTemplateParameters()=0
virtual QCString trAuthor(bool first_capital, bool singular)=0
virtual QCString trWarning()=0
virtual QCString trSeeAlso()=0
virtual QCString trImportant()=0
virtual QCString trReturnValues()=0
virtual QCString trInvariant()=0
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 void writeStartTableCommand(TextStream &t, const DocNodeVariant *n, size_t cols)
static const char * g_subparagraphLabel
static const int g_maxLevels
static bool tableIsNested(const DocNodeVariant *n)
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 writeEndTableCommand(TextStream &t, const DocNodeVariant *n)
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
Language as given by extension.
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.