75 default:
return nullptr;
78static const char *
hex=
"0123456789ABCDEF";
85 result += cntStr.
setNum(cnt);
88 const char *str = word.
data();
94 if ((c >=
'a' && c <=
'z') ||
95 (c >=
'A' && c <=
'Z') ||
96 (c >=
'0' && c <=
'9') ||
107 enc[1] =
hex[(c & 0xf0) >> 4];
108 enc[2] =
hex[c & 0xf];
142 const DocVerbatim *dv = std::get_if<DocVerbatim>(&n);
156 const DocFormula *df = std::get_if<DocFormula>(&n);
161 const DocImage *di = std::get_if<DocImage>(&n);
218 const DocImage *di = std::get_if<DocImage>(&node);
221 const DocVerbatim *dv = std::get_if<DocVerbatim>(&node);
224 const DocInclude *dinc = std::get_if<DocInclude>(&node);
246 t <<
"<div class=\"caption\">\n";
247 for (
const auto &child : n.children())
249 std::visit(*
this, child);
304 err(
"HTML: non supported HTML-entity found: {}\n",
316 m_t <<
"<span class=\"emoji\">" << res <<
"</span>";
328 m_t <<
"<a href=\"mailto:" << url <<
"\">";
332 m_t <<
"<a href=\"mailto:";
335 const char *p = url.
data();
340 for (uint32_t j=0;j<size && *p;j++)
345 if (size==3) size=2;
else size=3;
366 const char *p = url.
data();
371 for (uint32_t j=0;j<size && *p;j++)
375 if (*p)
m_t <<
"<span class=\"obfuscator\">.nosp@m.</span>";
376 if (size==5) size=4;
else size=5;
434 attribs.mergeAttribute(
"class",
"arg");
436 m_t <<
"<em" << attribs.toString() <<
">";
464 attribs.mergeAttribute(
"class",
"param");
466 m_t <<
"<code" << attribs.toString() <<
">";
562 m_t <<
"<pre class=\"fragment\">";
571 m_t <<
"<code class=\"JavaDocCode\">";
599 if (!fileName.empty())
601 m_t <<
"<div class=\"dotgraph\">\n";
617 "msc {"+s.
text()+
"}",
619 if (!fileName.empty())
621 m_t <<
"<div class=\"mscgraph\">\n";
643 for (
const auto &baseName: baseNameVector)
645 m_t <<
"<div class=\"plantumlgraph\">\n";
656 if (
Config_getEnum(MERMAID_RENDER_MODE)==MERMAID_RENDER_MODE_t::CLI)
664 m_t <<
"<div class=\"mermaidgraph\">\n";
671 m_t <<
"<div class=\"mermaidgraph\">\n";
672 m_t <<
"<pre class=\"mermaid\">\n";
751 m_t <<
"<pre class=\"fragment\">";
793 std::unique_ptr<FileDef> fd;
835 m_t <<
"<p class=\"formulaDsp\">\n";
841 bool closeInline =
false;
842 if (!bDisplay && !text.
empty() && text.
at(0)==
'$' &&
849 else if (!bDisplay && !text.
empty())
864 enum class ImageType { Light, Dark };
865 enum class Visibility { Always, Dark, Light, AutoDark, AutoLight };
866 auto writeFormula = [&](ImageType imgType,Visibility visibility) ->
DString {
869 DString extension =
Config_getEnum(HTML_FORMULA_FORMAT)==HTML_FORMULA_FORMAT_t::svg ?
".svg":
".png" ;
870 if (visibility==Visibility::AutoDark || visibility==Visibility::AutoLight)
873 t <<
"<source srcset=\"" << f.
relPath() << f.
name();
874 if (visibility==Visibility::AutoDark)
877 t <<
"\" media=\"(prefers-color-scheme: light)\"";
883 t <<
"\" media=\"(prefers-color-scheme: dark)\"";
887 t <<
"<img class=\"formula";
888 t << (bDisplay ?
"Dsp" :
"Inl");
889 if (visibility==Visibility::Light) t <<
" light-mode-visible";
890 else if (visibility==Visibility::Dark) t <<
" dark-mode-visible";
892 if (imgType==ImageType::Dark) t <<
"_dark";
894 if (formula && formula->
width()!=-1)
897 t << formula->
width();
899 if (formula && formula->
height()!=-1)
905 if (visibility==Visibility::AutoDark || visibility==Visibility::AutoLight)
915 case HTML_COLORSTYLE_t::LIGHT:
916 m_t << writeFormula(ImageType::Light,Visibility::Always);
918 case HTML_COLORSTYLE_t::DARK:
919 m_t << writeFormula(ImageType::Dark, Visibility::Always);
921 case HTML_COLORSTYLE_t::AUTO_LIGHT:
922 m_t << writeFormula(ImageType::Light, Visibility::AutoLight);
924 case HTML_COLORSTYLE_t::AUTO_DARK:
925 m_t << writeFormula(ImageType::Dark, Visibility::AutoDark);
927 case HTML_COLORSTYLE_t::TOGGLE:
929 m_t << writeFormula(ImageType::Light,Visibility::Light);
930 m_t << writeFormula(ImageType::Dark, Visibility::Dark);
948 m_t <<
"<a id=\"" << anchor <<
"\" name=\"" << anchor <<
"\"></a>";
976 if (!opt.noPar())
filter(
"[");
978 if (!opt.noPar())
filter(
"]");
1010 m_t <<
"<ul class=\"check\">";
1037 m_t <<
"<li class=\"unchecked\">";
1041 m_t <<
"<li class=\"checked\">";
1055 bool b = std::visit([&](
auto &&x) {
1058 return val==
static_cast<const DocNode*
>(&x);
1078 auto it = std::find_if(std::begin(nodes),std::end(nodes),[&par](
const auto &n) {
return holds_value(&par,n); });
1079 if (it==std::end(nodes))
return false;
1080 size_t count =
parent.children().size();
1081 auto isSeparator = [](
auto &&it_) {
return std::get_if<DocSimpleSectSep>(&(*it_))!=
nullptr; };
1082 if (count>1 && it==std::begin(nodes))
1084 return isSeparator(std::next(it));
1086 else if (count>1 && it==std::prev(std::end(nodes)))
1088 return isSeparator(std::prev(it));
1090 else if (count>2 && it!=std::begin(nodes) && it!=std::prev(std::end(nodes)))
1092 return isSeparator(std::prev(it)) && isSeparator(std::next(it));
1104 const auto &parBlock = std::get_if<DocParBlock>(p.
parent());
1128 if (!isFirst && !isLast)
1134 const auto &docAutoListItem = std::get_if<DocAutoListItem>(p.
parent());
1135 if (docAutoListItem)
1142 const auto &docSimpleListItem = std::get_if<DocSimpleListItem>(p.
parent());
1143 if (docSimpleListItem)
1150 const auto &docParamList = std::get_if<DocParamList>(p.
parent());
1158 const auto &docHtmlListItem = std::get_if<DocHtmlListItem>(p.
parent());
1159 if (docHtmlListItem)
1168 const auto &docSecRefItem = std::get_if<DocSecRefItem>(p.
parent());
1178 const auto &docHtmlDescData = std::get_if<DocHtmlDescData>(p.
parent());
1179 if (docHtmlDescData)
1188 const auto &docXRefItem = std::get_if<DocXRefItem>(p.
parent());
1198 const auto &docSimpleSect = std::get_if<DocSimpleSect>(p.
parent());
1210 isFirst=isLast=
true;
1215 const auto &docHtmlCell = std::get_if<DocHtmlCell>(p.
parent());
1231 bool needsTag =
false;
1251 else if (std::get_if<DocRoot>(p.
parent()))
1253 needsTag = !std::get<DocRoot>(*p.
parent()).singleLine();
1268 bool needsTagBefore = needsTag;
1269 bool needsTagAfter = needsTag;
1277 [](
const auto &node) { return !isInvisibleNode(node); });
1283 needsTagBefore =
false;
1291 bool isFirst =
false;
1292 bool isLast =
false;
1295 if (isFirst && isLast) needsTagBefore=
false;
1314 auto it = std::prev(std::end(p.
children()));
1322 needsTagAfter =
false;
1340 if (isFirst && isLast) needsTagAfter=
false;
1343 if (needsTagAfter)
m_t <<
"</p>\n";
1359 m_t <<
"<dl class=\"section " << s.
typeString() <<
"\"><dt>";
1401 std::visit(*
this,*s.
title());
1405 m_t <<
"</dd></dl>\n";
1443 m_t <<
"<h" << s.
level() <<
" class=\"doxsection\">";
1444 m_t <<
"<a class=\"anchor\" id=\"" << s.
anchor();
1448 std::visit(*
this,*s.
title());
1450 m_t <<
"</h" << s.
level() <<
">\n";
1527 m_t <<
"<a class=\"anchor\" id=\"" << anc <<
"\"></a>\n";
1534 m_t <<
"<table class=\"doxtable\">\n";
1542 std::visit(*
this,*t.
caption());
1545 m_t <<
"</table>\n";
1577 m_t <<
"</caption>\n";
1608 m_t <<
"</summary>\n";
1619 std::visit(*
this,*summary);
1622 m_t <<
"</details>\n";
1632 m_t <<
"</h" << header.
level() <<
">\n";
1641 bool typeSVG = img.
isSVG();
1650 if (!inlineImage)
m_t <<
"<div class=\"image\">\n";
1654 sizeAttribs+=
" width=\""+img.
width()+
"\"";
1658 sizeAttribs+=
" height=\""+img.
height()+
"\"";
1681 <<
"\"" << sizeAttribs << attrs;
1688 m_t <<
">" << alt <<
"</object>\n";
1693 m_t <<
"<img src=\"" <<
convertToHtml(src) <<
"\" alt=\"" << alt <<
"\"" << sizeAttribs << attrs;
1696 m_t <<
" class=\"inline\"";
1712 m_t <<
"<div class=\"caption\">\n";
1715 else if (inlineImage)
1749 bool exists =
false;
1757 if (!fileName.empty())
1759 m_t <<
"<div class=\"dotgraph\">\n";
1763 m_t <<
"<div class=\"caption\">\n";
1780 bool exists =
false;
1788 if (!fileName.empty())
1790 m_t <<
"<div class=\"mscgraph\">\n";
1794 m_t <<
"<div class=\"caption\">\n";
1811 bool exists =
false;
1819 if (!fileName.empty())
1821 m_t <<
"<div class=\"diagraph\">\n";
1825 m_t <<
"<div class=\"caption\">\n";
1854 for (
const auto &bName: baseNameVector)
1857 m_t <<
"<div class=\"plantumlgraph\">\n";
1861 m_t <<
"<div class=\"caption\">\n";
1878 if (
Config_getEnum(MERMAID_RENDER_MODE)==MERMAID_RENDER_MODE_t::CLI)
1887 m_t <<
"<div class=\"mermaidgraph\">\n";
1891 m_t <<
"<div class=\"caption\">\n";
1905 m_t <<
"<div class=\"mermaidgraph\">\n";
1906 m_t <<
"<pre class=\"mermaid\">\n";
1911 m_t <<
"<div class=\"caption\">\n";
1967 m_t <<
"<ul class=\"multicol\">\n";
1992 className=
"exception";
1996 className=
"tparams";
2001 m_t <<
"<dl class=\"" << className <<
"\"><dt>";
2003 m_t <<
"</dt><dd>\n";
2004 m_t <<
" <table class=\"" << className <<
"\">\n";
2006 m_t <<
" </table>\n";
2015 m_t <<
" " << s.
chars() <<
" ";
2026 m_t <<
"<td class=\"paramdir\">";
2048 m_t <<
"<td class=\"paramtype\">";
2051 std::visit(*
this,type);
2055 m_t <<
"<td class=\"paramname\">";
2059 if (!first)
m_t <<
",";
else first=
false;
2060 std::visit(*
this,param);
2065 std::visit(*
this,par);
2067 m_t <<
"</td></tr>\n";
2076 bool anonymousEnum = x.
file()==
"@";
2083 m_t <<
"<dl class=\"" << key <<
"\"><dt><b><a class=\"el\" href=\""
2085 <<
"#" << x.
anchor() <<
"\">";
2089 m_t <<
"<dl class=\"" << key <<
"\"><dt><b>";
2092 if (!anonymousEnum)
m_t <<
"</a>";
2093 m_t <<
"</b></dt><dd>";
2096 m_t <<
"</dd></dl>\n";
2120 m_t <<
"</blockquote>\n";
2134 m_t <<
"<a href=\"";
2160 if (str.
empty())
return;
2161 const char *p=str.
data();
2167 case '\n':
if(retainNewline)
m_t <<
"<br/>";
m_t << c;
break;
2168 case '<':
m_t <<
"<";
break;
2169 case '>':
m_t <<
">";
break;
2171 if (!citeEntry) {
m_t <<
"&";
break;}
2179 if ((*p ==
'(') || (*p ==
')') || (*p ==
'[') || (*p ==
']'))
2180 m_t <<
"\\‍" << *p++;
2186 uint8_t uc =
static_cast<uint8_t
>(c);
2187 if (uc<32 && !isspace(c))
2189 m_t <<
"$" <<
hex[uc>>4] <<
hex[uc&0xF] <<
";";
2205 if (str.
empty())
return str;
2208 const char *p=str.
data();
2214 case '&': result+=
"&";
break;
2215 case '"': result+=
""";
break;
2216 case '<': result+=
"<";
break;
2217 case '>': result+=
">";
break;
2219 if ((*p ==
'(') || (*p ==
')') || (*p ==
'[') || (*p ==
']'))
2231 uint8_t uc =
static_cast<uint8_t
>(c);
2232 if (uc<32 && !isspace(c))
2236 result+=
hex[uc&0xF];
2257 m_t <<
"<a class=\"elRef\" ";
2262 m_t <<
"<a class=\"el\" ";
2282 const DString &context,
const DString &srcFile,
int srcLine,
bool newFile)
2292 const DString &context,
const DString &srcFile,
int srcLine,
bool newFile)
2304 const DString &,
const DString &srcFile,
int srcLine,
bool newFile)
2311 m_t <<
"<img src=\"" << relPath << baseName <<
".png" <<
"\" />\n";
2326 m_t <<
"<object type=\"image/svg+xml\" data=\"" << relPath << baseName <<
".svg\"></object>\n";
2331 m_t <<
"<img src=\"" << relPath << baseName <<
".png" <<
"\" />\n";
2346 m_t <<
"<object type=\"image/svg+xml\" data=\"" << relPath << baseName <<
"." << imgExt <<
"\"></object>\n";
2350 m_t <<
"<img src=\"" << relPath << baseName <<
"." << imgExt <<
"\" />\n";
2364 bool styleOutsideParagraph=
false;
2365 while (!styleOutsideParagraph)
2373 styleMask|=
static_cast<int>(sc->
style());
2379 if (sc->
enable() && (styleMask&
static_cast<int>(sc->
style()))==0 &&
2383 styleOutsideParagraph=
true;
2386 if (it!=std::begin(para->
children()))
2395 return styleOutsideParagraph;
2405 const DocPara *para=std::get_if<DocPara>(n.parent());
2413 auto it = std::find_if(std::begin(children),std::end(children),
2414 [&n](
const auto &np) {
return holds_value(&n,np); });
2415 if (it==std::end(children))
return;
2416 if (it==std::begin(children))
return;
2423 if (it!=std::begin(children))
2435 bool styleOutsideParagraph=
false;
2436 if (it!=std::begin(children))
2441 bool isFirst =
false;
2442 bool isLast =
false;
2445 if (isFirst && isLast)
return;
2446 if (styleOutsideParagraph)
return;
2462 if (n.parent() && (para = std::get_if<DocPara>(n.parent())))
2466 auto it = std::find_if(std::begin(children),
2468 [&n](
const auto &np)
2470 if (it==std::end(children))
return;
2474 if (styleOutsideParagraph)
return;
2480 if (it!=std::end(children))
2490 bool needsTag =
true;
2491 bool isFirst =
false;
2492 bool isLast =
false;
2494 if (isFirst && isLast) needsTag =
false;
2497 if (needsTag)
m_t <<
"<p>";
static CodeFragmentManager & instance()
void parseCodeFragment(OutputCodeList &codeOutList, const DString &fileName, const DString &blockId, const DString &scopeName, bool showLineNumbers, bool trimLeft, bool stripCodeComments)
virtual void parseCode(OutputCodeList &codeOutList, const DString &scopeName, const DString &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.
A String class for use with Doxygen wrapping std::string and adding some additional functionality off...
DString & setNum(short n)
DString mid(size_t index, size_t len=npos) const
bool empty() const
Returns true iff the string is empty (std::string compatible alias for isEmpty()).
char & at(size_t i)
Returns a reference to the character at index i.
DString & prepend(const char *s)
void reserve(size_t size)
Reserve space for size bytes without changing the string contents.
const std::string & str() const
bool stripPrefix(const DString &prefix)
const char * data() const
Returns a pointer to the contents of the string in the form of a 0-terminated C string.
bool startsWith(const char *s) const
size_t length() const
Returns the length of the string, not counting the 0-terminator.
The common base class of all entity definitions found in the sources.
virtual DString getDefFileExtension() const =0
virtual const DString & name() const =0
virtual DString anchor() const =0
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
DString exampleFile() const
DString includeFileName() const
Node representing an included text block from file.
bool stripCodeComments() const
DString exampleFile() const
DString extension() 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 mermaid file.
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.
DString 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.
DString 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.
DString exampleFile() const
Node representing a VHDL flow chart.
void pushHidden(bool hide)
CodeParserInterface & getCodeParser(const DString &langExt)
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 DString convertNameToFileName()
Iterator< const GrowVector, const DocNodeVariant > const_iterator
bool empty() const
checks whether the container is empty
Class representing a list of HTML attributes.
void mergeAttribute(const DString &optName, const DString &optValue)
DString toString(DString *pAltValue=nullptr) const
void filter(const DString &str, bool retainNewline=false, bool citeEntry=false)
void startLink(const DString &ref, const DString &file, const DString &relPath, const DString &anchor, const DString &tooltip="")
DString filterQuotedCdataAttr(const DString &str)
Escape basic entities to produce a valid CDATA attribute value, assume that the outer quoting will be...
HtmlDocVisitor(TextStream &t, OutputCodeList &ci, const Definition *ctx, const DString &fn=DString())
void forceStartParagraph(const DocNode &n)
void operator()(const DocWord &)
void visitCaption(TextStream &t, const T &n)
void writeObfuscatedMailAddress(const DString &url)
void writeDotFile(const DString &fileName, const DString &relPath, const DString &context, const DString &srcFile, int srcLine, bool newFile=true)
void writeDiaFile(const DString &fileName, const DString &relPath, const DString &context, const DString &srcFile, int srcLine, bool newFile=true)
void visitChildren(const T &t)
void writeMscFile(const DString &fileName, const DString &relPath, const DString &context, const DString &srcFile, int srcLine, bool newFile=true)
void writePlantUMLFile(const DString &fileName, const DString &relPath, const DString &context, const DString &srcFile, int srcLine)
void forceEndParagraph(const DocNode &n)
void writeMermaidFile(const DString &fileName, const DString &relPath, const DString &context, const DString &srcFile, int srcLine)
const char * writeHtmlEntity(T &result, const char *s, HtmlEntityMapperFunc &&mapper, const char *fallback)
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.
void addIndexItem(const Definition *context, const MemberDef *md, const DString §ionAnchor=DString(), const DString &title=DString())
static MermaidManager & instance()
static DString imageExtension(ImageFormat imageFormat)
static ImageFormat convertToImageFormat(OutputFormat outputFormat)
void generateMermaidOutput(const DString &baseName, const DString &outDir, ImageFormat format, bool toIndex)
Register a generated Mermaid image with the index.
DString writeMermaidSource(const DString &outDirArg, const DString &fileName, const DString &content, ImageFormat format, const DString &srcFile, int srcLine)
Write a Mermaid source file and register it for CLI rendering.
Class representing a list of different code generators.
void startCodeFragment(const DString &style)
void endCodeFragment(const DString &style)
void generatePlantUMLOutput(const DString &baseName, const DString &outDir, OutputFormat format, bool toIndex)
Convert a PlantUML file to an image.
OutputFormat
Plant UML output image formats.
StringVector writePlantUMLSource(const DString &outDirArg, const DString &fileName, const DString &content, OutputFormat format, const DString &engine, const DString &srcFile, int srcLine, bool inlineCode)
Write a PlantUML compatible file.
static PlantumlManager & instance()
Text streaming class that buffers data.
std::string str() const
Return the contents of the buffer as a std::string object.
virtual DString trExceptions()=0
virtual DString trReturns()=0
virtual DString trParameters()=0
virtual DString trCopyright()=0
virtual DString trWarning()=0
virtual DString trSince()=0
virtual DString trNote()=0
virtual DString trAuthor(bool first_capital, bool singular)=0
virtual DString trReturnValues()=0
virtual DString trVersion()=0
virtual DString trTemplateParameters()=0
virtual DString trImportant()=0
virtual DString trPrecondition()=0
virtual DString trFlowchart()=0
virtual DString trAttention()=0
virtual DString trInvariant()=0
virtual DString trRemarks()=0
virtual DString trDate()=0
virtual DString trSeeAlso()=0
virtual DString trPostcondition()=0
static const MemberDef * getFlowMember()
#define Config_getBool(name)
#define Config_getString(name)
#define Config_getEnum(name)
void writeDiaGraphFromFile(const DString &inFile, const DString &outDir, const DString &outFile, DiaOutputFormat format, const DString &srcFile, int srcLine, bool toIndex)
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 DString &inFile, const DString &outDir, const DString &outFile, GraphOutputFormat format, const DString &srcFile, int srcLine, bool toIndex)
void writeDotImageMapFromFile(TextStream &t, const DString &inFile, const DString &outDir, const DString &relPath, const DString &baseName, const DString &context, int graphId, const DString &srcFile, int srcLine, bool newFile)
std::unique_ptr< FileDef > createFileDef(const DString &p, const DString &n, const DString &ref, const DString &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 contexts_t getParagraphContext(const DocPara &p, bool &isFirst, bool &isLast)
static DString convertIndexWordToAnchor(const DString &word)
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 bool isDocIncludeVisible(const DocInclude &s)
Translator * theTranslator
void writeMscGraphFromFile(const DString &inFile, const DString &outDir, const DString &outFile, MscOutputFormat format, const DString &srcFile, int srcLine, bool toIndex)
void writeMscImageMapFromFile(TextStream &t, const DString &inFile, const DString &outDir, const DString &relPath, const DString &baseName, const DString &context, MscOutputFormat format, const DString &srcFile, int srcLine)
Portable versions of functions that are platform dependent.
Options to configure the code parser.
CodeParserOptions & setSearchCtx(const Definition *d)
CodeParserOptions & setStartLine(int lineNr)
CodeParserOptions & setInlineFragment(bool enable)
CodeParserOptions & setShowLineNumbers(bool enable)
CodeParserOptions & setFileDef(const FileDef *fd)
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.
DString writeInlineGraph(const DString &baseName, const DString &extension, const DString &content, bool &exists)
DString externalLinkTarget(const bool parent)
DString correctURL(const DString &url, const DString &relPath)
Corrects URL url according to the relative path relPath.
DString getFileNameExtension(const DString &fn)
DString convertToHtml(const DString &s, bool keepEntities)
bool readInputFile(const DString &fileName, std::string &contents, bool filter, bool isSourceCode)
read a file name fileName and optionally filter and transcode it
SrcLangExt getLanguageFromFileName(const DString &fileName, SrcLangExt defLang)
void addHtmlExtensionIfMissing(DString &fName)
bool copyFile(const DString &src, const DString &dest)
Copies the contents of file with name src to the newly created file with name dest.
DString createHtmlUrl(const DString &relPath, const DString &ref, bool isLocalFile, const DString &targetFileName, const DString &anchor)
DString getDotImageExtension()
DString makeBaseName(const DString &name, const DString &ext)
DString stripPath(const DString &s)
SrcLangExt getLanguageFromCodeLang(DString &fileName)
Routine to handle the language attribute of the \code command.
A bunch of utility functions.