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)
241 const QCString &langExt,
int hierarchyLevel)
290 m_t <<
"\\texorpdfstring{$<$}{<}";
301 m_t <<
"\\texorpdfstring{$>$}{>}";
359 m_t <<
"~\\newline\n";
367 m_t <<
"\\DoxyHorRuler{1}\n";
369 m_t <<
"\\DoxyHorRuler{0}\n";
378 if (s.
enable())
m_t <<
"{\\bfseries{";
else m_t <<
"}}";
398 if (s.
enable())
m_t <<
"\\textsubscript{";
else m_t <<
"}";
401 if (s.
enable())
m_t <<
"\\textsuperscript{";
else m_t <<
"}";
404 if (s.
enable())
m_t <<
"\\begin{center}";
else m_t <<
"\\end{center} ";
407 if (s.
enable())
m_t <<
"\n\\footnotesize ";
else m_t <<
"\n\\normalsize ";
415 m_t <<
"\n\\begin{DoxyPre}";
421 m_t <<
"\\end{DoxyPre}\n";
442 m_ci.startCodeFragment(
"DoxyCode");
446 m_ci.endCodeFragment(
"DoxyCode");
453 m_t <<
"{\\ttfamily ";
460 m_t <<
"\\begin{DoxyCode}{0}";
462 m_t <<
"\\end{DoxyCode}\n";
466 m_t <<
"\\begin{DoxyVerb}";
468 m_t <<
"\\end{DoxyVerb}\n";
483 static int dotindex = 1;
494 err(
"Could not open file {} for writing\n",fileName);
511 static int mscindex = 1;
518 QCString fileName = baseName+
".msc";
522 err(
"Could not open file {} for writing\n",fileName);
546 for (
const auto &baseName: baseNameVector)
574 m_ci.startCodeFragment(
"DoxyCodeInclude");
590 m_ci.endCodeFragment(
"DoxyCodeInclude");
595 m_ci.startCodeFragment(
"DoxyCodeInclude");
608 m_ci.endCodeFragment(
"DoxyCodeInclude");
625 m_t <<
"\\begin{DoxyCode}{0}";
627 m_t <<
"\\end{DoxyCode}\n";
631 m_t <<
"\n\\begin{DoxyVerbInclude}\n";
633 m_t <<
"\\end{DoxyVerbInclude}\n";
639 m_ci.startCodeFragment(
"DoxyCodeInclude");
648 m_ci.endCodeFragment(
"DoxyCodeInclude");
660 if (!
m_hide)
m_ci.startCodeFragment(
"DoxyCodeInclude");
672 std::unique_ptr<FileDef> fd;
696 if (!
m_hide)
m_ci.endCodeFragment(
"DoxyCodeInclude");
708 const char *p = s.
data();
716 case '\'':
m_t <<
"\\textnormal{\\textquotesingle}";
break;
717 default:
m_t << c;
break;
750 if (!opt.noPar()) txt +=
"[";
752 if (!opt.noPar()) txt +=
"]";
754 m_t <<
"{\\bfseries ";
764 anchor = anchor.
mid(anchorPrefix.
length());
766 txt =
"\\DoxyCite{" + anchor +
"}";
771 else if (opt.isShortAuthor())
773 txt +=
"{shortauthor}";
775 else if (opt.isYear())
779 if (!opt.noPar()) txt +=
"{1}";
786 if (!opt.noPar()) txt +=
"[";
788 if (!opt.noPar()) txt +=
"]";
789 m_t <<
"{\\bfseries ";
806 m_t <<
"\n\\begin{DoxyEnumerate}";
812 m_t <<
"\n\\begin{DoxyItemize}";
817 m_t <<
"\n\\end{DoxyEnumerate}";
821 m_t <<
"\n\\end{DoxyItemize}";
831 m_t <<
"\n\\item[\\DoxyUnchecked] ";
835 m_t <<
"\n\\item[\\DoxyChecked] ";
852 std::get_if<DocParamSect>(p.
parent())
858 m_t <<
"~\\newline\n";
878 m_t <<
"\\begin{DoxySeeAlso}{";
882 m_t <<
"\\begin{DoxyReturn}{";
886 m_t <<
"\\begin{DoxyAuthor}{";
890 m_t <<
"\\begin{DoxyAuthor}{";
894 m_t <<
"\\begin{DoxyVersion}{";
898 m_t <<
"\\begin{DoxySince}{";
902 m_t <<
"\\begin{DoxyDate}{";
906 m_t <<
"\\begin{DoxyNote}{";
910 m_t <<
"\\begin{DoxyWarning}{";
914 m_t <<
"\\begin{DoxyPrecond}{";
918 m_t <<
"\\begin{DoxyPostcond}{";
922 m_t <<
"\\begin{DoxyCopyright}{";
926 m_t <<
"\\begin{DoxyInvariant}{";
930 m_t <<
"\\begin{DoxyRemark}{";
934 m_t <<
"\\begin{DoxyAttention}{";
938 m_t <<
"\\begin{DoxyImportant}{";
942 m_t <<
"\\begin{DoxyParagraph}{";
945 m_t <<
"\\begin{DoxyParagraph}{";
953 std::visit(*
this,*s.
title());
962 m_t <<
"\n\\end{DoxySeeAlso}\n";
965 m_t <<
"\n\\end{DoxyReturn}\n";
968 m_t <<
"\n\\end{DoxyAuthor}\n";
971 m_t <<
"\n\\end{DoxyAuthor}\n";
974 m_t <<
"\n\\end{DoxyVersion}\n";
977 m_t <<
"\n\\end{DoxySince}\n";
980 m_t <<
"\n\\end{DoxyDate}\n";
983 m_t <<
"\n\\end{DoxyNote}\n";
986 m_t <<
"\n\\end{DoxyWarning}\n";
989 m_t <<
"\n\\end{DoxyPrecond}\n";
992 m_t <<
"\n\\end{DoxyPostcond}\n";
995 m_t <<
"\n\\end{DoxyCopyright}\n";
998 m_t <<
"\n\\end{DoxyInvariant}\n";
1001 m_t <<
"\n\\end{DoxyRemark}\n";
1004 m_t <<
"\n\\end{DoxyAttention}\n";
1007 m_t <<
"\n\\end{DoxyImportant}\n";
1010 m_t <<
"\n\\end{DoxyParagraph}\n";
1013 m_t <<
"\n\\end{DoxyParagraph}\n";
1030 m_t <<
"\\begin{DoxyItemize}\n";
1033 m_t <<
"\\end{DoxyItemize}\n";
1059 m_t <<
"\\texorpdfstring{";
1064 std::visit(*
this,*s.
title());
1073 std::visit(*
this,*s.
title());
1090 m_t <<
"\n\\begin{DoxyEnumerate}";
1091 for (
const auto &opt : s.
attribs())
1093 if (opt.name==
"type")
1097 m_t << (first ?
"[":
",");
1098 m_t <<
"label=\\arabic*";
1101 else if (opt.value==
"a")
1103 m_t << (first ?
"[":
",");
1104 m_t <<
"label=\\enumalphalphcnt*";
1107 else if (opt.value==
"A")
1109 m_t << (first ?
"[":
",");
1110 m_t <<
"label=\\enumAlphAlphcnt*";
1113 else if (opt.value==
"i")
1115 m_t << (first ?
"[":
",");
1116 m_t <<
"label=\\roman*";
1119 else if (opt.value==
"I")
1121 m_t << (first ?
"[":
",");
1122 m_t <<
"label=\\Roman*";
1126 else if (opt.name==
"start")
1128 m_t << (first ?
"[":
",");
1130 int val = opt.value.toInt(&ok);
1131 if (ok)
m_t <<
"start=" << val;
1135 if (!first)
m_t <<
"]\n";
1139 m_t <<
"\n\\begin{DoxyItemize}";
1144 m_t <<
"\n\\end{DoxyEnumerate}";
1146 m_t <<
"\n\\end{DoxyItemize}";
1154 for (
const auto &opt : l.
attribs())
1156 if (opt.name==
"value")
1159 int val = opt.value.toInt(&ok);
1177 auto it = std::find_if(attrs.begin(),attrs.end(),
1178 [](
const auto &att) { return att.name==
"class"; });
1179 if (it!=attrs.end() && it->value ==
"reflist")
return true;
1185 bool isNested=
false;
1187 while (n && !isNested)
1189 if (std::get_if<DocHtmlDescList>(n))
1204 m_t <<
"\n\\begin{DoxyRefList}";
1209 m_t <<
"\n\\begin{DoxyDescription}";
1214 m_t <<
"\n\\end{DoxyRefList}";
1218 m_t <<
"\n\\end{DoxyDescription}";
1225 m_t <<
"\n\\item[{\\parbox[t]{\\linewidth}{";
1243 bool isNested=
m_lcg.usedTableLevel()>0;
1244 while (n && !isNested)
1256 m_t <<
"\\begin{DoxyTableNested}{" << cols <<
"}";
1260 m_t <<
"\n\\begin{DoxyTable}{" << cols <<
"}";
1268 m_t <<
"\\end{DoxyTableNested}\n";
1272 m_t <<
"\\end{DoxyTable}\n";
1299 std::visit(*
this, *t.
caption());
1339 if (span.rowSpan>0) span.rowSpan--;
1340 if (span.rowSpan<=0)
1344 else if (span.column>col)
1346 col = span.column+span.colSpan;
1350 col = span.column+span.colSpan;
1366 auto appendOpt = [&cellOpts](
const QCString &s)
1368 if (!cellOpts.
isEmpty()) cellOpts+=
",";
1371 auto appendSpec = [&cellSpec](
const QCString &s)
1373 if (!cellSpec.
isEmpty()) cellSpec+=
",";
1376 auto writeCell = [
this,&cellOpts,&cellSpec]()
1383 m_t <<
"[" << cellOpts <<
"]";
1385 m_t <<
"{" << cellSpec <<
"}";
1390 for (
const auto &span :
rowSpans())
1399 for (
size_t i=0;i<span.colSpan;i++)
1425 appendOpt(
"r="+
QCString().setNum(rs));
1435 appendOpt(
"c="+
QCString().setNum(cs));
1439 appendSpec(
"bg=\\tableheadbgcolor");
1440 appendSpec(
"font=\\bfseries");
1458 for (
int i=0;i<cs-1;i++)
1481 m_t <<
"{\\texttt{";
1489 m_t <<
"{\\bfseries{";
1501 std::visit(*
this,*summary);
1502 m_t <<
"\\begin{adjustwidth}{1em}{0em}\n";
1507 m_t <<
"\\end{adjustwidth}\n";
1618 m_t <<
"\\item \\contentsline{section}{";
1649 m_t <<
"\\footnotesize\n";
1650 m_t <<
"\\begin{multicols}{2}\n";
1651 m_t <<
"\\begin{DoxyCompactList}\n";
1655 m_t <<
"\\end{DoxyCompactList}\n";
1656 m_t <<
"\\end{multicols}\n";
1657 m_t <<
"\\normalsize\n";
1665 m_lcg.incUsedTableLevel();
1669 m_t <<
"\n\\begin{DoxyParams}";
1670 if (hasInOutSpecs && hasTypeSpecs)
m_t <<
"[2]";
1671 else if (hasInOutSpecs || hasTypeSpecs)
m_t <<
"[1]";
1676 m_t <<
"\n\\begin{DoxyRetVals}{";
1680 m_t <<
"\n\\begin{DoxyExceptions}{";
1684 m_t <<
"\n\\begin{DoxyTemplParams}{";
1693 m_lcg.decUsedTableLevel();
1697 m_t <<
"\\end{DoxyParams}\n";
1700 m_t <<
"\\end{DoxyRetVals}\n";
1703 m_t <<
"\\end{DoxyExceptions}\n";
1706 m_t <<
"\\end{DoxyTemplParams}\n";
1726 parentType = sect->
type();
1740 m_t <<
"\\mbox{\\texttt{";
1755 if (useTable)
m_t <<
" & ";
1761 std::visit(*
this,type);
1763 if (useTable)
m_t <<
" & ";
1769 if (!first)
m_t <<
",";
else first=
FALSE;
1771 std::visit(*
this,param);
1785 std::visit(*
this,par);
1800 m_t <<
"\\begin{DoxyRefDesc}{";
1803 bool anonymousEnum = x.
file()==
"@";
1805 if (pdfHyperlinks && !anonymousEnum)
1811 m_t <<
"\\textbf{ ";
1816 if (pdfHyperlinks && !anonymousEnum)
1824 m_t <<
"\\end{DoxyRefDesc}\n";
1844 m_t <<
"\\begin{quote}\n";
1847 m_t <<
"\\end{quote}\n";
1865 m_lcg.insideTabbing(),
1868 m_lcg.usedTableLevel()>0,
1875 bool refToTable,
bool refToSection)
1878 if (ref.
isEmpty() && pdfHyperLinks)
1882 m_t <<
"\\doxytablelink{";
1884 else if (refToSection)
1903 else if (ref.
isEmpty() && refToSection)
1905 m_t <<
"\\doxysectref{";
1907 else if (ref.
isEmpty() && refToTable)
1909 m_t <<
"\\doxytableref{";
1913 m_t <<
"\\doxyref{";
1917 m_t <<
"\\textbf{ ";
1925 if (ref.
isEmpty() && !pdfHyperLinks)
1929 m_t <<
"}{" << file;
1930 if (!file.isEmpty() && !anchor.
isEmpty())
m_t <<
"_";
1931 m_t << anchor <<
"}";
1934 m_t <<
"{" << sectionType.
level() <<
"}";
1937 if (ref.
isEmpty() && pdfHyperLinks)
2029 if (shortName.
find(
'.')==-1) shortName +=
".png";
2051 bool useBitmap = inBuf.find(
"@startditaa") != std::string::npos;
2057 for (
const auto &bName: baseNameVector)
2063 if (shortName.
find(
'.')==-1) shortName +=
".png";
2089 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
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 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 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 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 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.