74 default:
return nullptr;
77static const char *
hex=
"0123456789ABCDEF";
84 result += cntStr.
setNum(cnt);
87 const char *str = word.
data();
93 if ((c >=
'a' && c <=
'z') ||
94 (c >=
'A' && c <=
'Z') ||
95 (c >=
'0' && c <=
'9') ||
106 enc[1] =
hex[(c & 0xf0) >> 4];
107 enc[2] =
hex[c & 0xf];
140 const DocVerbatim *dv = std::get_if<DocVerbatim>(&n);
154 const DocFormula *df = std::get_if<DocFormula>(&n);
159 const DocImage *di = std::get_if<DocImage>(&n);
216 const DocImage *di = std::get_if<DocImage>(&node);
219 const DocVerbatim *dv = std::get_if<DocVerbatim>(&node);
222 const DocInclude *dinc = std::get_if<DocInclude>(&node);
233 int i = shortName.
findRev(
'/');
236 shortName=shortName.
mid(i+1);
244 int i=baseName.
find(
'.');
247 baseName=baseName.
left(i);
267 t <<
"<div class=\"caption\">\n";
268 for (
const auto &child : n.children())
270 std::visit(*
this, child);
325 err(
"HTML: non supported HTML-entity found: {}\n",
337 m_t <<
"<span class=\"emoji\">" << res <<
"</span>";
349 m_t <<
"<a href=\"mailto:" << url <<
"\">";
353 m_t <<
"<a href=\"#\" onclick=\"location.href='mai'+'lto:'";
356 const char *p = url.
data();
361 for (uint32_t j=0;j<size && *p;j++)
366 if (size==3) size=2;
else size=3;
369 m_t <<
"; return false;\">";
387 const char *p = url.
data();
392 for (uint32_t j=0;j<size && *p;j++)
396 if (*p)
m_t <<
"<span class=\"obfuscator\">.nosp@m.</span>";
397 if (size==5) size=4;
else size=5;
455 attribs.mergeAttribute(
"class",
"arg");
457 m_t <<
"<em" << attribs.toString() <<
">";
485 attribs.mergeAttribute(
"class",
"param");
487 m_t <<
"<code" << attribs.toString() <<
">";
567 m_ci.startCodeFragment(
"DoxyCode");
583 m_ci.endCodeFragment(
"DoxyCode");
588 m_t <<
"<pre class=\"fragment\">";
597 m_t <<
"<code class=\"JavaDocCode\">";
618 static int dotindex = 1;
630 err(
"Could not open file {} for writing\n",fileName);
638 m_t <<
"<div class=\"dotgraph\">\n";
652 static int mscindex = 1;
662 err(
"Could not open file {}.msc for writing\n",baseName);
673 m_t <<
"<div class=\"mscgraph\">\n";
696 for (
const auto &baseName: baseNameVector)
698 m_t <<
"<div class=\"plantumlgraph\">\n";
723 m_ci.startCodeFragment(
"DoxyCode");
739 m_ci.endCodeFragment(
"DoxyCode");
745 m_ci.startCodeFragment(
"DoxyCode");
763 m_ci.endCodeFragment(
"DoxyCode");
784 m_t <<
"<pre class=\"fragment\">";
792 m_ci.startCodeFragment(
"DoxyCode");
801 m_ci.endCodeFragment(
"DoxyCode");
814 if (!
m_hide)
m_ci.startCodeFragment(
"DoxyCode");
826 std::unique_ptr<FileDef> fd;
855 if (!
m_hide)
m_ci.endCodeFragment(
"DoxyCode");
871 m_t <<
"<p class=\"formulaDsp\">\n";
877 bool closeInline =
FALSE;
878 if (!bDisplay && !text.
isEmpty() && text.
at(0)==
'$' &&
885 else if (!bDisplay && !text.
isEmpty())
900 enum class ImageType { Light, Dark };
901 enum class Visibility { Always, Dark, Light, AutoDark, AutoLight };
902 auto writeFormula = [&](ImageType imgType,Visibility visibility) ->
QCString {
906 if (visibility==Visibility::AutoDark || visibility==Visibility::AutoLight)
909 t <<
"<source srcset=\"" << f.
relPath() << f.
name();
910 if (visibility==Visibility::AutoDark)
913 t <<
"\" media=\"(prefers-color-scheme: light)\"";
919 t <<
"\" media=\"(prefers-color-scheme: dark)\"";
923 t <<
"<img class=\"formula";
924 t << (bDisplay ?
"Dsp" :
"Inl");
925 if (visibility==Visibility::Light) t <<
" light-mode-visible";
926 else if (visibility==Visibility::Dark) t <<
" dark-mode-visible";
928 if (imgType==ImageType::Dark) t <<
"_dark";
930 if (formula && formula->
width()!=-1)
933 t << formula->
width();
935 if (formula && formula->
height()!=-1)
941 if (visibility==Visibility::AutoDark || visibility==Visibility::AutoLight)
951 case HTML_COLORSTYLE_t::LIGHT:
952 m_t << writeFormula(ImageType::Light,Visibility::Always);
954 case HTML_COLORSTYLE_t::DARK:
955 m_t << writeFormula(ImageType::Dark, Visibility::Always);
957 case HTML_COLORSTYLE_t::AUTO_LIGHT:
958 m_t << writeFormula(ImageType::Light, Visibility::AutoLight);
960 case HTML_COLORSTYLE_t::AUTO_DARK:
961 m_t << writeFormula(ImageType::Dark, Visibility::AutoDark);
963 case HTML_COLORSTYLE_t::TOGGLE:
965 m_t << writeFormula(ImageType::Light,Visibility::Light);
966 m_t << writeFormula(ImageType::Dark, Visibility::Dark);
984 m_t <<
"<a id=\"" << anchor <<
"\" name=\"" << anchor <<
"\"></a>";
1002 auto opt = cite.
option();
1012 if (!opt.noPar())
filter(
"[");
1014 if (!opt.noPar())
filter(
"]");
1046 m_t <<
"<ul class=\"check\">";
1073 m_t <<
"<li class=\"unchecked\">";
1077 m_t <<
"<li class=\"checked\">";
1091 bool b = std::visit([&](
auto &&x) {
1094 return val==
static_cast<const DocNode*
>(&x);
1114 auto it = std::find_if(std::begin(nodes),std::end(nodes),[&par](
const auto &n) {
return holds_value(&par,n); });
1115 if (it==std::end(nodes))
return FALSE;
1116 size_t count =
parent.children().size();
1117 auto isSeparator = [](
auto &&it_) {
return std::get_if<DocSimpleSectSep>(&(*it_))!=
nullptr; };
1118 if (count>1 && it==std::begin(nodes))
1120 return isSeparator(std::next(it));
1122 else if (count>1 && it==std::prev(std::end(nodes)))
1124 return isSeparator(std::prev(it));
1126 else if (count>2 && it!=std::begin(nodes) && it!=std::prev(std::end(nodes)))
1128 return isSeparator(std::prev(it)) && isSeparator(std::next(it));
1140 const auto parBlock = std::get_if<DocParBlock>(p.
parent());
1164 if (!isFirst && !isLast)
1170 const auto docAutoListItem = std::get_if<DocAutoListItem>(p.
parent());
1171 if (docAutoListItem)
1178 const auto docSimpleListItem = std::get_if<DocSimpleListItem>(p.
parent());
1179 if (docSimpleListItem)
1186 const auto docParamList = std::get_if<DocParamList>(p.
parent());
1194 const auto docHtmlListItem = std::get_if<DocHtmlListItem>(p.
parent());
1195 if (docHtmlListItem)
1204 const auto docSecRefItem = std::get_if<DocSecRefItem>(p.
parent());
1214 const auto docHtmlDescData = std::get_if<DocHtmlDescData>(p.
parent());
1215 if (docHtmlDescData)
1224 const auto docXRefItem = std::get_if<DocXRefItem>(p.
parent());
1234 const auto docSimpleSect = std::get_if<DocSimpleSect>(p.
parent());
1246 isFirst=isLast=
TRUE;
1251 const auto docHtmlCell = std::get_if<DocHtmlCell>(p.
parent());
1267 bool needsTag =
FALSE;
1287 else if (std::get_if<DocRoot>(p.
parent()))
1289 needsTag = !std::get<DocRoot>(*p.
parent()).singleLine();
1304 bool needsTagBefore = needsTag;
1305 bool needsTagAfter = needsTag;
1313 [](
const auto &node) { return !isInvisibleNode(node); });
1319 needsTagBefore =
FALSE;
1327 bool isFirst =
false;
1328 bool isLast =
false;
1331 if (isFirst && isLast) needsTagBefore=
FALSE;
1350 auto it = std::prev(std::end(p.
children()));
1358 needsTagAfter =
FALSE;
1376 if (isFirst && isLast) needsTagAfter=
FALSE;
1379 if (needsTagAfter)
m_t <<
"</p>\n";
1395 m_t <<
"<dl class=\"section " << s.
typeString() <<
"\"><dt>";
1437 std::visit(*
this,*s.
title());
1441 m_t <<
"</dd></dl>\n";
1479 m_t <<
"<h" << s.
level() <<
" class=\"doxsection\">";
1480 m_t <<
"<a class=\"anchor\" id=\"" << s.
anchor();
1484 std::visit(*
this,*s.
title());
1486 m_t <<
"</h" << s.
level() <<
">\n";
1563 m_t <<
"<a class=\"anchor\" id=\"" << anc <<
"\"></a>\n";
1570 m_t <<
"<table class=\"doxtable\">\n";
1578 std::visit(*
this,*t.
caption());
1581 m_t <<
"</table>\n";
1613 m_t <<
"</caption>\n";
1644 m_t <<
"</summary>\n";
1655 std::visit(*
this,*summary);
1658 m_t <<
"</details>\n";
1668 m_t <<
"</h" << header.
level() <<
">\n";
1677 bool typeSVG = img.
isSVG();
1686 if (!inlineImage)
m_t <<
"<div class=\"image\">\n";
1690 sizeAttribs+=
" width=\""+img.
width()+
"\"";
1694 sizeAttribs+=
" height=\""+img.
height()+
"\"";
1717 <<
"\"" << sizeAttribs << attrs;
1724 m_t <<
">" << alt <<
"</object>\n";
1729 m_t <<
"<img src=\"" <<
convertToHtml(src) <<
"\" alt=\"" << alt <<
"\"" << sizeAttribs << attrs;
1732 m_t <<
" class=\"inline\"";
1748 m_t <<
"<div class=\"caption\">\n";
1751 else if (inlineImage)
1786 m_t <<
"<div class=\"dotgraph\">\n";
1790 m_t <<
"<div class=\"caption\">\n";
1806 m_t <<
"<div class=\"mscgraph\">\n";
1810 m_t <<
"<div class=\"caption\">\n";
1826 m_t <<
"<div class=\"diagraph\">\n";
1830 m_t <<
"<div class=\"caption\">\n";
1857 for (
const auto &bName: baseNameVector)
1860 m_t <<
"<div class=\"plantumlgraph\">\n";
1864 m_t <<
"<div class=\"caption\">\n";
1920 m_t <<
"<ul class=\"multicol\">\n";
1945 className=
"exception";
1949 className=
"tparams";
1954 m_t <<
"<dl class=\"" << className <<
"\"><dt>";
1956 m_t <<
"</dt><dd>\n";
1957 m_t <<
" <table class=\"" << className <<
"\">\n";
1959 m_t <<
" </table>\n";
1968 m_t <<
" " << s.
chars() <<
" ";
1979 m_t <<
"<td class=\"paramdir\">";
2001 m_t <<
"<td class=\"paramtype\">";
2004 std::visit(*
this,type);
2008 m_t <<
"<td class=\"paramname\">";
2012 if (!first)
m_t <<
",";
else first=
FALSE;
2013 std::visit(*
this,param);
2018 std::visit(*
this,par);
2020 m_t <<
"</td></tr>\n";
2029 bool anonymousEnum = x.
file()==
"@";
2034 m_t <<
"<dl class=\"" << x.
key() <<
"\"><dt><b><a class=\"el\" href=\""
2036 <<
"#" << x.
anchor() <<
"\">";
2040 m_t <<
"<dl class=\"" << x.
key() <<
"\"><dt><b>";
2043 if (!anonymousEnum)
m_t <<
"</a>";
2044 m_t <<
"</b></dt><dd>";
2047 m_t <<
"</dd></dl>\n";
2071 m_t <<
"</blockquote>\n";
2085 m_t <<
"<a href=\"";
2112 const char *p=str.
data();
2118 case '\n':
if(retainNewline)
m_t <<
"<br/>";
m_t << c;
break;
2119 case '<':
m_t <<
"<";
break;
2120 case '>':
m_t <<
">";
break;
2121 case '&':
m_t <<
"&";
break;
2122 case '\\':
if ((*p ==
'(') || (*p ==
')'))
2123 m_t <<
"\\‍" << *p++;
2129 uint8_t uc =
static_cast<uint8_t
>(c);
2130 if (uc<32 && !isspace(c))
2132 m_t <<
"$" <<
hex[uc>>4] <<
hex[uc&0xF] <<
";";
2149 if (str.
isEmpty())
return str;
2150 const char *p=str.
data();
2156 case '&': growBuf.
addStr(
"&");
break;
2157 case '"': growBuf.
addStr(
""");
break;
2158 case '<': growBuf.
addStr(
"<");
break;
2159 case '>': growBuf.
addStr(
">");
break;
2161 if ((*p ==
'(') || (*p ==
')'))
2163 growBuf.
addStr(
"\\‍");
2173 uint8_t uc =
static_cast<uint8_t
>(c);
2174 if (uc<32 && !isspace(c))
2190 return growBuf.
get();
2200 m_t <<
"<a class=\"elRef\" ";
2205 m_t <<
"<a class=\"el\" ";
2242 if (
"svg" == imgExt)
2256 m_t <<
"<img src=\"" << relPath << baseName <<
".png" <<
"\" />\n";
2271 m_t <<
"<object type=\"image/svg+xml\" data=\"" << relPath << baseName <<
".svg\"></object>\n";
2276 m_t <<
"<img src=\"" << relPath << baseName <<
".png" <<
"\" />\n";
2290 bool styleOutsideParagraph=
FALSE;
2291 while (!styleOutsideParagraph)
2299 styleMask|=
static_cast<int>(sc->
style());
2305 if (sc->
enable() && (styleMask&
static_cast<int>(sc->
style()))==0 &&
2309 styleOutsideParagraph=
TRUE;
2312 if (it!=std::begin(para->
children()))
2321 return styleOutsideParagraph;
2331 const DocPara *para=std::get_if<DocPara>(n.parent());
2339 auto it = std::find_if(std::begin(children),std::end(children),
2340 [&n](
const auto &np) {
return holds_value(&n,np); });
2341 if (it==std::end(children))
return;
2342 if (it==std::begin(children))
return;
2349 if (it!=std::begin(children))
2361 bool styleOutsideParagraph=
false;
2362 if (it!=std::begin(children))
2367 bool isFirst =
false;
2368 bool isLast =
false;
2371 if (isFirst && isLast)
return;
2372 if (styleOutsideParagraph)
return;
2388 if (n.parent() && (para = std::get_if<DocPara>(n.parent())))
2392 auto it = std::find_if(std::begin(children),
2394 [&n](
const auto &np)
2396 if (it==std::end(children))
return;
2400 if (styleOutsideParagraph)
return;
2406 if (it!=std::end(children))
2416 bool needsTag =
true;
2417 bool isFirst =
false;
2418 bool isLast =
false;
2420 if (isFirst && isLast) needsTag =
false;
2423 if (needsTag)
m_t <<
"<p>";
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.
The common base class of all entity definitions found in the sources.
virtual QCString anchor() const =0
virtual QCString getDefFileExtension() const =0
virtual const QCString & name() const =0
Class representing a directory in the file system.
bool remove(const std::string &path, bool acceptsAbsPath=true) const
Node representing an anchor.
const HtmlAttribList & attribs() const
Node representing an auto List.
bool isCheckedList() const
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.
const HtmlAttribList & attribs() const
Node representing a horizontal ruler.
const HtmlAttribList & attribs() const
Node representing an HTML blockquote.
const HtmlAttribList & attribs() const
Node representing a HTML table caption.
const HtmlAttribList & attribs() const
Node representing a HTML table cell.
const HtmlAttribList & attribs() const
Node representing a HTML description data.
const HtmlAttribList & attribs() const
Node representing a Html description list.
const HtmlAttribList & attribs() const
Node representing a Html description item.
const HtmlAttribList & attribs() const
const HtmlAttribList & attribs() const
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.
const HtmlAttribList & attribs() const
const HtmlAttribList & attribs() const
Node representing a HTML table.
const DocNodeVariant * caption() const
const HtmlAttribList & attribs() const
Node representing an image.
const HtmlAttribList & attribs() const
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.
const Definition * scope() const
const MemberDef * member() const
Node representing an internal section of documentation.
Node representing an internal reference to some item.
Node representing a line break.
const HtmlAttribList & attribs() const
Node representing a link to some item.
Node representing a word that can be linked to something.
Node representing a msc file.
Abstract node interface with type information.
bool isPreformatted() const
DocNodeVariant * parent()
Node representing an block of paragraphs.
Node representing a paragraph in the documentation tree.
const HtmlAttribList & attribs() const
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.
QCString targetTitle() 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.
QCString typeString() const
const DocNodeVariant * title() const
Node representing a separator between two simple sections of the same type.
Node representing a style change.
const HtmlAttribList & attribs() const
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
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.
static IndexList * indexList
const char * unicode(int index) const
Access routine to the unicode sequence for 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
static QCString convertNameToFileName()
Class representing a string buffer optimized for growing.
void addStr(const QCString &s)
Iterator< const GrowVector, const DocNodeVariant > const_iterator
bool empty() const
checks whether the container is empty
Class representing a list of HTML attributes.
QCString toString(QCString *pAltValue=nullptr) const
void mergeAttribute(const QCString &optName, const QCString &optValue)
HtmlDocVisitor(TextStream &t, OutputCodeList &ci, const Definition *ctx, const QCString &fn=QCString())
void writePlantUMLFile(const QCString &fileName, const QCString &relPath, const QCString &context, const QCString &srcFile, int srcLine)
QCString filterQuotedCdataAttr(const QCString &str)
Escape basic entities to produce a valid CDATA attribute value, assume that the outer quoting will be...
void writeDotFile(const QCString &fileName, const QCString &relPath, const QCString &context, const QCString &srcFile, int srcLine)
void forceStartParagraph(const DocNode &n)
void operator()(const DocWord &)
void startLink(const QCString &ref, const QCString &file, const QCString &relPath, const QCString &anchor, const QCString &tooltip="")
void visitCaption(TextStream &t, const T &n)
void writeDiaFile(const QCString &fileName, const QCString &relPath, const QCString &context, const QCString &srcFile, int srcLine)
void writeMscFile(const QCString &fileName, const QCString &relPath, const QCString &context, const QCString &srcFile, int srcLine)
void visitChildren(const T &t)
void filter(const QCString &str, const bool retainNewline=false)
void forceEndParagraph(const DocNode &n)
void writeObfuscatedMailAddress(const QCString &url)
static HtmlEntityMapper & instance()
Returns the one and only instance of the HTML entity mapper.
const char * html(SymType symb, bool useInPrintf=FALSE) const
Access routine to the html code of the HTML entity.
Class representing a list of different code generators.
OutputFormat
Plant UML output image formats.
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)
size_t length() const
Returns the length of the string, not counting the 0-terminator.
bool startsWith(const char *s) const
QCString mid(size_t index, size_t len=static_cast< size_t >(-1)) const
char & at(size_t i)
Returns a reference to the character at index i.
bool isEmpty() const
Returns TRUE iff the string is empty.
const std::string & str() const
QCString & setNum(short n)
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
Text streaming class that buffers data.
std::string str() const
Return the contents of the buffer as a std::string object.
static const MemberDef * getFlowMember()
#define Config_getBool(name)
#define Config_getString(name)
#define Config_getEnum(name)
void writeDiaGraphFromFile(const QCString &inFile, const QCString &outDir, const QCString &outFile, DiaOutputFormat format, const QCString &srcFile, int srcLine)
static constexpr auto hex
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 writeDotImageMapFromFile(TextStream &t, const QCString &inFile, const QCString &outDir, const QCString &relPath, const QCString &baseName, const QCString &context, int graphId, const QCString &srcFile, int srcLine)
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)
static bool isInvisibleNode(const DocNodeVariant &node)
static bool determineIfNeedsTag(const DocPara &p)
static const char g_types[][NUM_HTML_LIST_TYPES]
static constexpr const char * contexts(contexts_t type)
bool isFirstChildNode(const T *parent, const DocPara &node)
static const int NUM_HTML_LIST_TYPES
static QCString convertIndexWordToAnchor(const QCString &word)
static contexts_t getParagraphContext(const DocPara &p, bool &isFirst, bool &isLast)
static QCString makeBaseName(const QCString &name)
static bool mustBeOutsideParagraph(const DocNodeVariant &n)
static bool isDocVerbatimVisible(const DocVerbatim &s)
static bool insideStyleChangeThatIsOutsideParagraph(const DocPara *para, DocNodeList::const_iterator it)
Returns TRUE if the child nodes in paragraph para until nodeIndex contain a style change node that is...
static bool holds_value(const Node *val, const DocNodeVariant &v)
static bool isDocIncOperatorVisible(const DocIncOperator &s)
bool isSeparatedParagraph(const DocSimpleSect &parent, const DocPara &par)
bool isLastChildNode(const T *parent, const DocPara &node)
static QCString makeShortName(const QCString &name)
static bool isDocIncludeVisible(const DocInclude &s)
Translator * theTranslator
void writeMscImageMapFromFile(TextStream &t, const QCString &inFile, const QCString &outDir, const QCString &relPath, const QCString &baseName, const QCString &context, MscOutputFormat format, const QCString &srcFile, int srcLine)
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)
Portable versions of functions that are platform dependent.
const char * qPrint(const char *s)
const char * writeUTF8Char(TextStream &t, const char *s)
Writes the UTF8 character pointed to by s to stream t and returns a pointer to the next character.
SrcLangExt getLanguageFromFileName(const QCString &fileName, SrcLangExt defLang)
QCString convertToHtml(const QCString &s, bool keepEntities)
QCString correctURL(const QCString &url, const QCString &relPath)
Corrects URL url according to the relative path relPath.
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 getDotImageExtension()
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 externalLinkTarget(const bool parent)
QCString getFileNameExtension(const QCString &fn)
void addHtmlExtensionIfMissing(QCString &fName)
QCString createHtmlUrl(const QCString &relPath, const QCString &ref, bool href, bool isLocalFile, const QCString &targetFileName, const QCString &anchor)
A bunch of utility functions.