73 default:
return nullptr;
76static const char *
hex=
"0123456789ABCDEF";
83 result += cntStr.
setNum(cnt);
86 const char *str = word.
data();
92 if ((c >=
'a' && c <=
'z') ||
93 (c >=
'A' && c <=
'Z') ||
94 (c >=
'0' && c <=
'9') ||
105 enc[1] =
hex[(c & 0xf0) >> 4];
106 enc[2] =
hex[c & 0xf];
139 const DocVerbatim *dv = std::get_if<DocVerbatim>(&n);
153 const DocFormula *df = std::get_if<DocFormula>(&n);
158 const DocImage *di = std::get_if<DocImage>(&n);
215 const DocImage *di = std::get_if<DocImage>(&node);
218 const DocVerbatim *dv = std::get_if<DocVerbatim>(&node);
221 const DocInclude *dinc = std::get_if<DocInclude>(&node);
232 int i = shortName.
findRev(
'/');
235 shortName=shortName.
mid(i+1);
243 int i=baseName.
find(
'.');
246 baseName=baseName.
left(i);
266 t <<
"<div class=\"caption\">\n";
267 for (
const auto &child : n.children())
269 std::visit(*
this, child);
324 err(
"HTML: non supported HTML-entity found: {}\n",
336 m_t <<
"<span class=\"emoji\">" << res <<
"</span>";
348 m_t <<
"<a href=\"mailto:" << url <<
"\">";
352 m_t <<
"<a href=\"#\" onclick=\"location.href='mai'+'lto:'";
355 const char *p = url.
data();
360 for (uint32_t j=0;j<size && *p;j++)
365 if (size==3) size=2;
else size=3;
368 m_t <<
"; return false;\">";
386 const char *p = url.
data();
391 for (uint32_t j=0;j<size && *p;j++)
395 if (*p)
m_t <<
"<span class=\"obfuscator\">.nosp@m.</span>";
396 if (size==5) size=4;
else size=5;
454 attribs.mergeAttribute(
"class",
"arg");
456 m_t <<
"<em" << attribs.toString() <<
">";
484 attribs.mergeAttribute(
"class",
"param");
486 m_t <<
"<code" << attribs.toString() <<
">";
566 m_ci.startCodeFragment(
"DoxyCode");
577 m_ci.endCodeFragment(
"DoxyCode");
582 m_t <<
"<pre class=\"fragment\">";
591 m_t <<
"<code class=\"JavaDocCode\">";
612 static int dotindex = 1;
624 err(
"Could not open file {} for writing\n",fileName);
632 m_t <<
"<div class=\"dotgraph\">\n";
646 static int mscindex = 1;
656 err(
"Could not open file {}.msc for writing\n",baseName);
667 m_t <<
"<div class=\"mscgraph\">\n";
690 for (
const auto &baseName: baseNameVector)
692 m_t <<
"<div class=\"plantumlgraph\">\n";
717 m_ci.startCodeFragment(
"DoxyCode");
729 m_ci.endCodeFragment(
"DoxyCode");
735 m_ci.startCodeFragment(
"DoxyCode");
749 m_ci.endCodeFragment(
"DoxyCode");
770 m_t <<
"<pre class=\"fragment\">";
778 m_ci.startCodeFragment(
"DoxyCode");
787 m_ci.endCodeFragment(
"DoxyCode");
800 if (!
m_hide)
m_ci.startCodeFragment(
"DoxyCode");
812 std::unique_ptr<FileDef> fd;
838 if (!
m_hide)
m_ci.endCodeFragment(
"DoxyCode");
854 m_t <<
"<p class=\"formulaDsp\">\n";
860 bool closeInline =
FALSE;
861 if (!bDisplay && !text.
isEmpty() && text.
at(0)==
'$' &&
868 else if (!bDisplay && !text.
isEmpty())
883 enum class ImageType { Light, Dark };
884 enum class Visibility { Always, Dark, Light, AutoDark, AutoLight };
885 auto writeFormula = [&](ImageType imgType,Visibility visibility) ->
QCString {
889 if (visibility==Visibility::AutoDark || visibility==Visibility::AutoLight)
892 t <<
"<source srcset=\"" << f.
relPath() << f.
name();
893 if (visibility==Visibility::AutoDark)
896 t <<
"\" media=\"(prefers-color-scheme: light)\"";
902 t <<
"\" media=\"(prefers-color-scheme: dark)\"";
906 t <<
"<img class=\"formula";
907 t << (bDisplay ?
"Dsp" :
"Inl");
908 if (visibility==Visibility::Light) t <<
" light-mode-visible";
909 else if (visibility==Visibility::Dark) t <<
" dark-mode-visible";
911 if (imgType==ImageType::Dark) t <<
"_dark";
913 if (formula && formula->
width()!=-1)
916 t << formula->
width();
918 if (formula && formula->
height()!=-1)
924 if (visibility==Visibility::AutoDark || visibility==Visibility::AutoLight)
934 case HTML_COLORSTYLE_t::LIGHT:
935 m_t << writeFormula(ImageType::Light,Visibility::Always);
937 case HTML_COLORSTYLE_t::DARK:
938 m_t << writeFormula(ImageType::Dark, Visibility::Always);
940 case HTML_COLORSTYLE_t::AUTO_LIGHT:
941 m_t << writeFormula(ImageType::Light, Visibility::AutoLight);
943 case HTML_COLORSTYLE_t::AUTO_DARK:
944 m_t << writeFormula(ImageType::Dark, Visibility::AutoDark);
946 case HTML_COLORSTYLE_t::TOGGLE:
948 m_t << writeFormula(ImageType::Light,Visibility::Light);
949 m_t << writeFormula(ImageType::Dark, Visibility::Dark);
967 m_t <<
"<a id=\"" << anchor <<
"\" name=\"" << anchor <<
"\"></a>";
995 if (!opt.noPar())
filter(
"[");
997 if (!opt.noPar())
filter(
"]");
1029 m_t <<
"<ul class=\"check\">";
1056 m_t <<
"<li class=\"unchecked\">";
1060 m_t <<
"<li class=\"checked\">";
1074 bool b = std::visit([&](
auto &&x) {
1077 return val==
static_cast<const DocNode*
>(&x);
1097 auto it = std::find_if(std::begin(nodes),std::end(nodes),[&par](
const auto &n) {
return holds_value(&par,n); });
1098 if (it==std::end(nodes))
return FALSE;
1099 size_t count =
parent.children().size();
1100 auto isSeparator = [](
auto &&it_) {
return std::get_if<DocSimpleSectSep>(&(*it_))!=
nullptr; };
1101 if (count>1 && it==std::begin(nodes))
1103 return isSeparator(std::next(it));
1105 else if (count>1 && it==std::prev(std::end(nodes)))
1107 return isSeparator(std::prev(it));
1109 else if (count>2 && it!=std::begin(nodes) && it!=std::prev(std::end(nodes)))
1111 return isSeparator(std::prev(it)) && isSeparator(std::next(it));
1123 const auto parBlock = std::get_if<DocParBlock>(p.
parent());
1147 if (!isFirst && !isLast)
1153 const auto docAutoListItem = std::get_if<DocAutoListItem>(p.
parent());
1154 if (docAutoListItem)
1161 const auto docSimpleListItem = std::get_if<DocSimpleListItem>(p.
parent());
1162 if (docSimpleListItem)
1169 const auto docParamList = std::get_if<DocParamList>(p.
parent());
1177 const auto docHtmlListItem = std::get_if<DocHtmlListItem>(p.
parent());
1178 if (docHtmlListItem)
1187 const auto docSecRefItem = std::get_if<DocSecRefItem>(p.
parent());
1197 const auto docHtmlDescData = std::get_if<DocHtmlDescData>(p.
parent());
1198 if (docHtmlDescData)
1207 const auto docXRefItem = std::get_if<DocXRefItem>(p.
parent());
1217 const auto docSimpleSect = std::get_if<DocSimpleSect>(p.
parent());
1229 isFirst=isLast=
TRUE;
1234 const auto docHtmlCell = std::get_if<DocHtmlCell>(p.
parent());
1250 bool needsTag =
FALSE;
1270 else if (std::get_if<DocRoot>(p.
parent()))
1272 needsTag = !std::get<DocRoot>(*p.
parent()).singleLine();
1287 bool needsTagBefore = needsTag;
1288 bool needsTagAfter = needsTag;
1296 [](
const auto &node) { return !isInvisibleNode(node); });
1302 needsTagBefore =
FALSE;
1310 bool isFirst =
false;
1311 bool isLast =
false;
1314 if (!std::holds_alternative<DocAutoListItem>(*p.
parent()) && isFirst && isLast) needsTagBefore=
FALSE;
1333 auto it = std::prev(std::end(p.
children()));
1341 needsTagAfter =
FALSE;
1359 if (!std::holds_alternative<DocAutoListItem>(*p.
parent()) && isFirst && isLast) needsTagAfter=
FALSE;
1362 if (needsTagAfter)
m_t <<
"</p>\n";
1378 m_t <<
"<dl class=\"section " << s.
typeString() <<
"\"><dt>";
1420 std::visit(*
this,*s.
title());
1424 m_t <<
"</dd></dl>\n";
1462 m_t <<
"<h" << s.
level() <<
" class=\"doxsection\">";
1463 m_t <<
"<a class=\"anchor\" id=\"" << s.
anchor();
1467 std::visit(*
this,*s.
title());
1469 m_t <<
"</h" << s.
level() <<
">\n";
1546 m_t <<
"<a class=\"anchor\" id=\"" << anc <<
"\"></a>\n";
1553 m_t <<
"<table class=\"doxtable\">\n";
1561 std::visit(*
this,*t.
caption());
1564 m_t <<
"</table>\n";
1596 m_t <<
"</caption>\n";
1627 m_t <<
"</summary>\n";
1638 std::visit(*
this,*summary);
1641 m_t <<
"</details>\n";
1651 m_t <<
"</h" << header.
level() <<
">\n";
1660 bool typeSVG = img.
isSVG();
1669 if (!inlineImage)
m_t <<
"<div class=\"image\">\n";
1673 sizeAttribs+=
" width=\""+img.
width()+
"\"";
1677 sizeAttribs+=
" height=\""+img.
height()+
"\"";
1700 <<
"\"" << sizeAttribs << attrs;
1707 m_t <<
">" << alt <<
"</object>\n";
1712 m_t <<
"<img src=\"" <<
convertToHtml(src) <<
"\" alt=\"" << alt <<
"\"" << sizeAttribs << attrs;
1715 m_t <<
" class=\"inline\"";
1731 m_t <<
"<div class=\"caption\">\n";
1734 else if (inlineImage)
1769 m_t <<
"<div class=\"dotgraph\">\n";
1773 m_t <<
"<div class=\"caption\">\n";
1789 m_t <<
"<div class=\"mscgraph\">\n";
1793 m_t <<
"<div class=\"caption\">\n";
1809 m_t <<
"<div class=\"diagraph\">\n";
1813 m_t <<
"<div class=\"caption\">\n";
1840 for (
const auto &bName: baseNameVector)
1843 m_t <<
"<div class=\"plantumlgraph\">\n";
1847 m_t <<
"<div class=\"caption\">\n";
1903 m_t <<
"<ul class=\"multicol\">\n";
1928 className=
"exception";
1932 className=
"tparams";
1937 m_t <<
"<dl class=\"" << className <<
"\"><dt>";
1939 m_t <<
"</dt><dd>\n";
1940 m_t <<
" <table class=\"" << className <<
"\">\n";
1942 m_t <<
" </table>\n";
1951 m_t <<
" " << s.
chars() <<
" ";
1962 m_t <<
"<td class=\"paramdir\">";
1984 m_t <<
"<td class=\"paramtype\">";
1987 std::visit(*
this,type);
1991 m_t <<
"<td class=\"paramname\">";
1995 if (!first)
m_t <<
",";
else first=
FALSE;
1996 std::visit(*
this,param);
2001 std::visit(*
this,par);
2003 m_t <<
"</td></tr>\n";
2012 bool anonymousEnum = x.
file()==
"@";
2017 m_t <<
"<dl class=\"" << x.
key() <<
"\"><dt><b><a class=\"el\" href=\""
2019 <<
"#" << x.
anchor() <<
"\">";
2023 m_t <<
"<dl class=\"" << x.
key() <<
"\"><dt><b>";
2026 if (!anonymousEnum)
m_t <<
"</a>";
2027 m_t <<
"</b></dt><dd>";
2030 m_t <<
"</dd></dl>\n";
2054 m_t <<
"</blockquote>\n";
2068 m_t <<
"<a href=\"";
2095 const char *p=str.
data();
2101 case '\n':
if(retainNewline)
m_t <<
"<br/>";
m_t << c;
break;
2102 case '<':
m_t <<
"<";
break;
2103 case '>':
m_t <<
">";
break;
2104 case '&':
m_t <<
"&";
break;
2106 if ((*p ==
'(') || (*p ==
')') || (*p ==
'[') || (*p ==
']'))
2107 m_t <<
"\\‍" << *p++;
2113 uint8_t uc =
static_cast<uint8_t
>(c);
2114 if (uc<32 && !isspace(c))
2116 m_t <<
"$" <<
hex[uc>>4] <<
hex[uc&0xF] <<
";";
2132 if (str.
isEmpty())
return str;
2135 const char *p=str.
data();
2141 case '&': result+=
"&";
break;
2142 case '"': result+=
""";
break;
2143 case '<': result+=
"<";
break;
2144 case '>': result+=
">";
break;
2146 if ((*p ==
'(') || (*p ==
')') || (*p ==
'[') || (*p ==
']'))
2158 uint8_t uc =
static_cast<uint8_t
>(c);
2159 if (uc<32 && !isspace(c))
2163 result+=
hex[uc&0xF];
2184 m_t <<
"<a class=\"elRef\" ";
2189 m_t <<
"<a class=\"el\" ";
2226 if (
"svg" == imgExt)
2240 m_t <<
"<img src=\"" << relPath << baseName <<
".png" <<
"\" />\n";
2255 m_t <<
"<object type=\"image/svg+xml\" data=\"" << relPath << baseName <<
".svg\"></object>\n";
2260 m_t <<
"<img src=\"" << relPath << baseName <<
".png" <<
"\" />\n";
2274 bool styleOutsideParagraph=
FALSE;
2275 while (!styleOutsideParagraph)
2283 styleMask|=
static_cast<int>(sc->
style());
2289 if (sc->
enable() && (styleMask&
static_cast<int>(sc->
style()))==0 &&
2293 styleOutsideParagraph=
TRUE;
2296 if (it!=std::begin(para->
children()))
2305 return styleOutsideParagraph;
2315 const DocPara *para=std::get_if<DocPara>(n.parent());
2323 auto it = std::find_if(std::begin(children),std::end(children),
2324 [&n](
const auto &np) {
return holds_value(&n,np); });
2325 if (it==std::end(children))
return;
2326 if (it==std::begin(children))
return;
2333 if (it!=std::begin(children))
2345 bool styleOutsideParagraph=
false;
2346 if (it!=std::begin(children))
2351 bool isFirst =
false;
2352 bool isLast =
false;
2355 if (!std::holds_alternative<DocAutoListItem>(*para->
parent()) && isFirst && isLast)
return;
2356 if (styleOutsideParagraph)
return;
2372 if (n.parent() && (para = std::get_if<DocPara>(n.parent())))
2376 auto it = std::find_if(std::begin(children),
2378 [&n](
const auto &np)
2380 if (it==std::end(children))
return;
2384 if (styleOutsideParagraph)
return;
2390 if (it!=std::end(children))
2400 bool needsTag =
true;
2401 bool isFirst =
false;
2402 bool isLast =
false;
2404 if (!std::holds_alternative<DocAutoListItem>(*para->
parent()) && isFirst && isLast) needsTag =
false;
2407 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, const CodeParserOptions &options)=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()
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)
void reserve(size_t size)
Reserve space for size bytes without changing the string contents.
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)
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 > DocNodeVariant
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)
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.
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.