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)
533 m_ci.startCodeFragment(
"DoxyCodeInclude");
545 m_ci.endCodeFragment(
"DoxyCodeInclude");
550 m_ci.startCodeFragment(
"DoxyCodeInclude");
559 m_ci.endCodeFragment(
"DoxyCodeInclude");
576 m_t <<
"\\begin{DoxyCode}{0}";
578 m_t <<
"\\end{DoxyCode}\n";
582 m_t <<
"\n\\begin{DoxyVerbInclude}\n";
584 m_t <<
"\\end{DoxyVerbInclude}\n";
590 m_ci.startCodeFragment(
"DoxyCodeInclude");
599 m_ci.endCodeFragment(
"DoxyCodeInclude");
611 if (!
m_hide)
m_ci.startCodeFragment(
"DoxyCodeInclude");
623 std::unique_ptr<FileDef> fd;
645 if (!
m_hide)
m_ci.endCodeFragment(
"DoxyCodeInclude");
657 const char *p = s.
data();
665 case '\'':
m_t <<
"\\textnormal{\\textquotesingle}";
break;
666 default:
m_t << c;
break;
695 if (!opt.noPar()) txt +=
"[";
697 if (!opt.noPar()) txt +=
"]";
699 m_t <<
"{\\bfseries ";
709 anchor = anchor.
mid(anchorPrefix.
length());
711 txt =
"\\DoxyCite{" + anchor +
"}";
716 else if (opt.isShortAuthor())
718 txt +=
"{shortauthor}";
720 else if (opt.isYear())
724 if (!opt.noPar()) txt +=
"{1}";
731 if (!opt.noPar()) txt +=
"[";
733 if (!opt.noPar()) txt +=
"]";
734 m_t <<
"{\\bfseries ";
751 m_t <<
"\n\\begin{DoxyEnumerate}";
757 m_t <<
"\n\\begin{DoxyItemize}";
762 m_t <<
"\n\\end{DoxyEnumerate}";
766 m_t <<
"\n\\end{DoxyItemize}";
776 m_t <<
"\n\\item[\\DoxyUnchecked] ";
780 m_t <<
"\n\\item[\\DoxyChecked] ";
797 std::get_if<DocParamSect>(p.
parent())
803 m_t <<
"~\\newline\n";
823 m_t <<
"\\begin{DoxySeeAlso}{";
827 m_t <<
"\\begin{DoxyReturn}{";
831 m_t <<
"\\begin{DoxyAuthor}{";
835 m_t <<
"\\begin{DoxyAuthor}{";
839 m_t <<
"\\begin{DoxyVersion}{";
843 m_t <<
"\\begin{DoxySince}{";
847 m_t <<
"\\begin{DoxyDate}{";
851 m_t <<
"\\begin{DoxyNote}{";
855 m_t <<
"\\begin{DoxyWarning}{";
859 m_t <<
"\\begin{DoxyPrecond}{";
863 m_t <<
"\\begin{DoxyPostcond}{";
867 m_t <<
"\\begin{DoxyCopyright}{";
871 m_t <<
"\\begin{DoxyInvariant}{";
875 m_t <<
"\\begin{DoxyRemark}{";
879 m_t <<
"\\begin{DoxyAttention}{";
883 m_t <<
"\\begin{DoxyImportant}{";
887 m_t <<
"\\begin{DoxyParagraph}{";
890 m_t <<
"\\begin{DoxyParagraph}{";
898 std::visit(*
this,*s.
title());
907 m_t <<
"\n\\end{DoxySeeAlso}\n";
910 m_t <<
"\n\\end{DoxyReturn}\n";
913 m_t <<
"\n\\end{DoxyAuthor}\n";
916 m_t <<
"\n\\end{DoxyAuthor}\n";
919 m_t <<
"\n\\end{DoxyVersion}\n";
922 m_t <<
"\n\\end{DoxySince}\n";
925 m_t <<
"\n\\end{DoxyDate}\n";
928 m_t <<
"\n\\end{DoxyNote}\n";
931 m_t <<
"\n\\end{DoxyWarning}\n";
934 m_t <<
"\n\\end{DoxyPrecond}\n";
937 m_t <<
"\n\\end{DoxyPostcond}\n";
940 m_t <<
"\n\\end{DoxyCopyright}\n";
943 m_t <<
"\n\\end{DoxyInvariant}\n";
946 m_t <<
"\n\\end{DoxyRemark}\n";
949 m_t <<
"\n\\end{DoxyAttention}\n";
952 m_t <<
"\n\\end{DoxyImportant}\n";
955 m_t <<
"\n\\end{DoxyParagraph}\n";
958 m_t <<
"\n\\end{DoxyParagraph}\n";
975 m_t <<
"\\begin{DoxyItemize}\n";
978 m_t <<
"\\end{DoxyItemize}\n";
1004 m_t <<
"\\texorpdfstring{";
1009 std::visit(*
this,*s.
title());
1018 std::visit(*
this,*s.
title());
1035 m_t <<
"\n\\begin{DoxyEnumerate}";
1036 for (
const auto &opt : s.
attribs())
1038 if (opt.name==
"type")
1042 m_t << (first ?
"[":
",");
1043 m_t <<
"label=\\arabic*";
1046 else if (opt.value==
"a")
1048 m_t << (first ?
"[":
",");
1049 m_t <<
"label=\\enumalphalphcnt*";
1052 else if (opt.value==
"A")
1054 m_t << (first ?
"[":
",");
1055 m_t <<
"label=\\enumAlphAlphcnt*";
1058 else if (opt.value==
"i")
1060 m_t << (first ?
"[":
",");
1061 m_t <<
"label=\\roman*";
1064 else if (opt.value==
"I")
1066 m_t << (first ?
"[":
",");
1067 m_t <<
"label=\\Roman*";
1071 else if (opt.name==
"start")
1073 m_t << (first ?
"[":
",");
1075 int val = opt.value.toInt(&ok);
1076 if (ok)
m_t <<
"start=" << val;
1080 if (!first)
m_t <<
"]\n";
1084 m_t <<
"\n\\begin{DoxyItemize}";
1089 m_t <<
"\n\\end{DoxyEnumerate}";
1091 m_t <<
"\n\\end{DoxyItemize}";
1099 for (
const auto &opt : l.
attribs())
1101 if (opt.name==
"value")
1104 int val = opt.value.toInt(&ok);
1122 auto it = std::find_if(attrs.begin(),attrs.end(),
1123 [](
const auto &att) { return att.name==
"class"; });
1124 if (it!=attrs.end() && it->value ==
"reflist")
return true;
1130 bool isNested=
false;
1132 while (n && !isNested)
1134 if (std::get_if<DocHtmlDescList>(n))
1149 m_t <<
"\n\\begin{DoxyRefList}";
1154 m_t <<
"\n\\begin{DoxyDescription}";
1159 m_t <<
"\n\\end{DoxyRefList}";
1163 m_t <<
"\n\\end{DoxyDescription}";
1170 m_t <<
"\n\\item[{\\parbox[t]{\\linewidth}{";
1188 bool isNested=
m_lcg.usedTableLevel()>0;
1189 while (n && !isNested)
1201 m_t <<
"\\begin{DoxyTableNested}{" << cols <<
"}";
1205 m_t <<
"\n\\begin{DoxyTable}{" << cols <<
"}";
1213 m_t <<
"\\end{DoxyTableNested}\n";
1217 m_t <<
"\\end{DoxyTable}\n";
1244 std::visit(*
this, *t.
caption());
1284 if (span.rowSpan>0) span.rowSpan--;
1285 if (span.rowSpan<=0)
1289 else if (span.column>col)
1291 col = span.column+span.colSpan;
1295 col = span.column+span.colSpan;
1311 auto appendOpt = [&cellOpts](
const QCString &s)
1313 if (!cellOpts.
isEmpty()) cellOpts+=
",";
1316 auto appendSpec = [&cellSpec](
const QCString &s)
1318 if (!cellSpec.
isEmpty()) cellSpec+=
",";
1321 auto writeCell = [
this,&cellOpts,&cellSpec]()
1328 m_t <<
"[" << cellOpts <<
"]";
1330 m_t <<
"{" << cellSpec <<
"}";
1335 for (
const auto &span :
rowSpans())
1344 for (
size_t i=0;i<span.colSpan;i++)
1370 appendOpt(
"r="+
QCString().setNum(rs));
1380 appendOpt(
"c="+
QCString().setNum(cs));
1384 appendSpec(
"bg=\\tableheadbgcolor");
1385 appendSpec(
"font=\\bfseries");
1403 for (
int i=0;i<cs-1;i++)
1426 m_t <<
"{\\texttt{";
1434 m_t <<
"{\\bfseries{";
1446 std::visit(*
this,*summary);
1447 m_t <<
"\\begin{adjustwidth}{1em}{0em}\n";
1452 m_t <<
"\\end{adjustwidth}\n";
1491 bool exists =
false;
1499 if (!fileName.isEmpty())
1511 bool exists =
false;
1519 if (!fileName.isEmpty())
1531 bool exists =
false;
1539 if (!fileName.isEmpty())
1605 m_t <<
"\\item \\contentsline{section}{";
1636 m_t <<
"\\footnotesize\n";
1637 m_t <<
"\\begin{multicols}{2}\n";
1638 m_t <<
"\\begin{DoxyCompactList}\n";
1642 m_t <<
"\\end{DoxyCompactList}\n";
1643 m_t <<
"\\end{multicols}\n";
1644 m_t <<
"\\normalsize\n";
1652 m_lcg.incUsedTableLevel();
1656 m_t <<
"\n\\begin{DoxyParams}";
1657 if (hasInOutSpecs && hasTypeSpecs)
m_t <<
"[2]";
1658 else if (hasInOutSpecs || hasTypeSpecs)
m_t <<
"[1]";
1663 m_t <<
"\n\\begin{DoxyRetVals}{";
1667 m_t <<
"\n\\begin{DoxyExceptions}{";
1671 m_t <<
"\n\\begin{DoxyTemplParams}{";
1680 m_lcg.decUsedTableLevel();
1684 m_t <<
"\\end{DoxyParams}\n";
1687 m_t <<
"\\end{DoxyRetVals}\n";
1690 m_t <<
"\\end{DoxyExceptions}\n";
1693 m_t <<
"\\end{DoxyTemplParams}\n";
1713 parentType = sect->
type();
1727 m_t <<
"\\doxymbox{\\texttt{";
1742 if (useTable)
m_t <<
" & ";
1748 std::visit(*
this,type);
1750 if (useTable)
m_t <<
" & ";
1756 if (!first)
m_t <<
",";
else first=
FALSE;
1758 std::visit(*
this,param);
1772 std::visit(*
this,par);
1787 m_t <<
"\\begin{DoxyRefDesc}{";
1790 bool anonymousEnum = x.
file()==
"@";
1792 if (pdfHyperlinks && !anonymousEnum)
1798 m_t <<
"\\textbf{ ";
1803 if (pdfHyperlinks && !anonymousEnum)
1811 m_t <<
"\\end{DoxyRefDesc}\n";
1831 m_t <<
"\\begin{quote}\n";
1834 m_t <<
"\\end{quote}\n";
1852 m_lcg.insideTabbing(),
1855 m_lcg.usedTableLevel()>0,
1862 bool refToTable,
bool refToSection)
1865 if (ref.
isEmpty() && pdfHyperLinks)
1869 m_t <<
"\\doxytablelink{";
1871 else if (refToSection)
1890 else if (ref.
isEmpty() && refToSection)
1892 m_t <<
"\\doxysectref{";
1894 else if (ref.
isEmpty() && refToTable)
1896 m_t <<
"\\doxytableref{";
1900 m_t <<
"\\doxyref{";
1904 m_t <<
"\\textbf{ ";
1912 if (ref.
isEmpty() && !pdfHyperLinks)
1916 m_t <<
"}{" << file;
1917 if (!file.isEmpty() && !anchor.
isEmpty())
m_t <<
"_";
1918 m_t << anchor <<
"}";
1921 m_t <<
"{" << sectionType.
level() <<
"}";
1924 if (ref.
isEmpty() && pdfHyperLinks)
1938 int srcLine,
bool newFile
1959 int srcLine,
bool newFile
1992 int srcLine,
bool newFile
2014 if (shortName.
find(
'.')==-1) shortName +=
".png";
2036 bool useBitmap = inBuf.find(
"@startditaa") != std::string::npos;
2042 for (
const auto &bName: baseNameVector)
2048 if (shortName.
find(
'.')==-1) shortName +=
".png";
2067 if (shortName.
find(
'.')==-1) shortName +=
".png";
2092 if (shortName.
find(
'.')==-1) shortName +=
".png";
2113 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
QCString writeMermaidSource(const QCString &outDirArg, const QCString &fileName, const QCString &content, OutputFormat format, const QCString &srcFile, int srcLine)
Write a Mermaid source file and register it for CLI rendering.
void generateMermaidOutput(const QCString &baseName, const QCString &outDir, OutputFormat format)
Register a generated Mermaid image with the index.
static MermaidManager & instance()
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
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)
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)
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 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.