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);
244 t <<
"<div class=\"caption\">\n";
245 for (
const auto &child : n.children())
247 std::visit(*
this, child);
302 err(
"HTML: non supported HTML-entity found: {}\n",
314 m_t <<
"<span class=\"emoji\">" << res <<
"</span>";
326 m_t <<
"<a href=\"mailto:" << url <<
"\">";
330 m_t <<
"<a href=\"#\" onclick=\"location.href='mai'+'lto:'";
333 const char *p = url.
data();
338 for (uint32_t j=0;j<size && *p;j++)
343 if (size==3) size=2;
else size=3;
346 m_t <<
"; return false;\">";
364 const char *p = url.
data();
369 for (uint32_t j=0;j<size && *p;j++)
373 if (*p)
m_t <<
"<span class=\"obfuscator\">.nosp@m.</span>";
374 if (size==5) size=4;
else size=5;
432 attribs.mergeAttribute(
"class",
"arg");
434 m_t <<
"<em" << attribs.toString() <<
">";
462 attribs.mergeAttribute(
"class",
"param");
464 m_t <<
"<code" << attribs.toString() <<
">";
544 m_ci.startCodeFragment(
"DoxyCode");
555 m_ci.endCodeFragment(
"DoxyCode");
560 m_t <<
"<pre class=\"fragment\">";
569 m_t <<
"<code class=\"JavaDocCode\">";
597 if (!fileName.isEmpty())
599 m_t <<
"<div class=\"dotgraph\">\n";
615 "msc {"+s.
text()+
"}",
617 if (!fileName.isEmpty())
619 m_t <<
"<div class=\"mscgraph\">\n";
641 for (
const auto &baseName: baseNameVector)
643 m_t <<
"<div class=\"plantumlgraph\">\n";
668 m_ci.startCodeFragment(
"DoxyCode");
680 m_ci.endCodeFragment(
"DoxyCode");
686 m_ci.startCodeFragment(
"DoxyCode");
700 m_ci.endCodeFragment(
"DoxyCode");
721 m_t <<
"<pre class=\"fragment\">";
729 m_ci.startCodeFragment(
"DoxyCode");
738 m_ci.endCodeFragment(
"DoxyCode");
751 if (!
m_hide)
m_ci.startCodeFragment(
"DoxyCode");
763 std::unique_ptr<FileDef> fd;
789 if (!
m_hide)
m_ci.endCodeFragment(
"DoxyCode");
805 m_t <<
"<p class=\"formulaDsp\">\n";
811 bool closeInline =
FALSE;
812 if (!bDisplay && !text.
isEmpty() && text.
at(0)==
'$' &&
819 else if (!bDisplay && !text.
isEmpty())
834 enum class ImageType { Light, Dark };
835 enum class Visibility { Always, Dark, Light, AutoDark, AutoLight };
836 auto writeFormula = [&](ImageType imgType,Visibility visibility) ->
QCString {
840 if (visibility==Visibility::AutoDark || visibility==Visibility::AutoLight)
843 t <<
"<source srcset=\"" << f.
relPath() << f.
name();
844 if (visibility==Visibility::AutoDark)
847 t <<
"\" media=\"(prefers-color-scheme: light)\"";
853 t <<
"\" media=\"(prefers-color-scheme: dark)\"";
857 t <<
"<img class=\"formula";
858 t << (bDisplay ?
"Dsp" :
"Inl");
859 if (visibility==Visibility::Light) t <<
" light-mode-visible";
860 else if (visibility==Visibility::Dark) t <<
" dark-mode-visible";
862 if (imgType==ImageType::Dark) t <<
"_dark";
864 if (formula && formula->
width()!=-1)
867 t << formula->
width();
869 if (formula && formula->
height()!=-1)
875 if (visibility==Visibility::AutoDark || visibility==Visibility::AutoLight)
885 case HTML_COLORSTYLE_t::LIGHT:
886 m_t << writeFormula(ImageType::Light,Visibility::Always);
888 case HTML_COLORSTYLE_t::DARK:
889 m_t << writeFormula(ImageType::Dark, Visibility::Always);
891 case HTML_COLORSTYLE_t::AUTO_LIGHT:
892 m_t << writeFormula(ImageType::Light, Visibility::AutoLight);
894 case HTML_COLORSTYLE_t::AUTO_DARK:
895 m_t << writeFormula(ImageType::Dark, Visibility::AutoDark);
897 case HTML_COLORSTYLE_t::TOGGLE:
899 m_t << writeFormula(ImageType::Light,Visibility::Light);
900 m_t << writeFormula(ImageType::Dark, Visibility::Dark);
918 m_t <<
"<a id=\"" << anchor <<
"\" name=\"" << anchor <<
"\"></a>";
946 if (!opt.noPar())
filter(
"[");
948 if (!opt.noPar())
filter(
"]");
980 m_t <<
"<ul class=\"check\">";
1007 m_t <<
"<li class=\"unchecked\">";
1011 m_t <<
"<li class=\"checked\">";
1025 bool b = std::visit([&](
auto &&x) {
1028 return val==
static_cast<const DocNode*
>(&x);
1048 auto it = std::find_if(std::begin(nodes),std::end(nodes),[&par](
const auto &n) {
return holds_value(&par,n); });
1049 if (it==std::end(nodes))
return FALSE;
1050 size_t count =
parent.children().size();
1051 auto isSeparator = [](
auto &&it_) {
return std::get_if<DocSimpleSectSep>(&(*it_))!=
nullptr; };
1052 if (count>1 && it==std::begin(nodes))
1054 return isSeparator(std::next(it));
1056 else if (count>1 && it==std::prev(std::end(nodes)))
1058 return isSeparator(std::prev(it));
1060 else if (count>2 && it!=std::begin(nodes) && it!=std::prev(std::end(nodes)))
1062 return isSeparator(std::prev(it)) && isSeparator(std::next(it));
1074 const auto parBlock = std::get_if<DocParBlock>(p.
parent());
1098 if (!isFirst && !isLast)
1104 const auto docAutoListItem = std::get_if<DocAutoListItem>(p.
parent());
1105 if (docAutoListItem)
1112 const auto docSimpleListItem = std::get_if<DocSimpleListItem>(p.
parent());
1113 if (docSimpleListItem)
1120 const auto docParamList = std::get_if<DocParamList>(p.
parent());
1128 const auto docHtmlListItem = std::get_if<DocHtmlListItem>(p.
parent());
1129 if (docHtmlListItem)
1138 const auto docSecRefItem = std::get_if<DocSecRefItem>(p.
parent());
1148 const auto docHtmlDescData = std::get_if<DocHtmlDescData>(p.
parent());
1149 if (docHtmlDescData)
1158 const auto docXRefItem = std::get_if<DocXRefItem>(p.
parent());
1168 const auto docSimpleSect = std::get_if<DocSimpleSect>(p.
parent());
1180 isFirst=isLast=
TRUE;
1185 const auto docHtmlCell = std::get_if<DocHtmlCell>(p.
parent());
1201 bool needsTag =
FALSE;
1221 else if (std::get_if<DocRoot>(p.
parent()))
1223 needsTag = !std::get<DocRoot>(*p.
parent()).singleLine();
1238 bool needsTagBefore = needsTag;
1239 bool needsTagAfter = needsTag;
1247 [](
const auto &node) { return !isInvisibleNode(node); });
1253 needsTagBefore =
FALSE;
1261 bool isFirst =
false;
1262 bool isLast =
false;
1265 if (isFirst && isLast) needsTagBefore=
FALSE;
1284 auto it = std::prev(std::end(p.
children()));
1292 needsTagAfter =
FALSE;
1310 if (isFirst && isLast) needsTagAfter=
FALSE;
1313 if (needsTagAfter)
m_t <<
"</p>\n";
1329 m_t <<
"<dl class=\"section " << s.
typeString() <<
"\"><dt>";
1371 std::visit(*
this,*s.
title());
1375 m_t <<
"</dd></dl>\n";
1413 m_t <<
"<h" << s.
level() <<
" class=\"doxsection\">";
1414 m_t <<
"<a class=\"anchor\" id=\"" << s.
anchor();
1418 std::visit(*
this,*s.
title());
1420 m_t <<
"</h" << s.
level() <<
">\n";
1497 m_t <<
"<a class=\"anchor\" id=\"" << anc <<
"\"></a>\n";
1504 m_t <<
"<table class=\"doxtable\">\n";
1512 std::visit(*
this,*t.
caption());
1515 m_t <<
"</table>\n";
1547 m_t <<
"</caption>\n";
1578 m_t <<
"</summary>\n";
1589 std::visit(*
this,*summary);
1592 m_t <<
"</details>\n";
1602 m_t <<
"</h" << header.
level() <<
">\n";
1611 bool typeSVG = img.
isSVG();
1620 if (!inlineImage)
m_t <<
"<div class=\"image\">\n";
1624 sizeAttribs+=
" width=\""+img.
width()+
"\"";
1628 sizeAttribs+=
" height=\""+img.
height()+
"\"";
1651 <<
"\"" << sizeAttribs << attrs;
1658 m_t <<
">" << alt <<
"</object>\n";
1663 m_t <<
"<img src=\"" <<
convertToHtml(src) <<
"\" alt=\"" << alt <<
"\"" << sizeAttribs << attrs;
1666 m_t <<
" class=\"inline\"";
1682 m_t <<
"<div class=\"caption\">\n";
1685 else if (inlineImage)
1719 bool exists =
false;
1727 if (!fileName.isEmpty())
1729 m_t <<
"<div class=\"dotgraph\">\n";
1733 m_t <<
"<div class=\"caption\">\n";
1750 bool exists =
false;
1758 if (!fileName.isEmpty())
1760 m_t <<
"<div class=\"mscgraph\">\n";
1764 m_t <<
"<div class=\"caption\">\n";
1781 bool exists =
false;
1789 if (!fileName.isEmpty())
1791 m_t <<
"<div class=\"diagraph\">\n";
1795 m_t <<
"<div class=\"caption\">\n";
1824 for (
const auto &bName: baseNameVector)
1827 m_t <<
"<div class=\"plantumlgraph\">\n";
1831 m_t <<
"<div class=\"caption\">\n";
1887 m_t <<
"<ul class=\"multicol\">\n";
1912 className=
"exception";
1916 className=
"tparams";
1921 m_t <<
"<dl class=\"" << className <<
"\"><dt>";
1923 m_t <<
"</dt><dd>\n";
1924 m_t <<
" <table class=\"" << className <<
"\">\n";
1926 m_t <<
" </table>\n";
1935 m_t <<
" " << s.
chars() <<
" ";
1946 m_t <<
"<td class=\"paramdir\">";
1968 m_t <<
"<td class=\"paramtype\">";
1971 std::visit(*
this,type);
1975 m_t <<
"<td class=\"paramname\">";
1979 if (!first)
m_t <<
",";
else first=
FALSE;
1980 std::visit(*
this,param);
1985 std::visit(*
this,par);
1987 m_t <<
"</td></tr>\n";
1996 bool anonymousEnum = x.
file()==
"@";
2001 m_t <<
"<dl class=\"" << x.
key() <<
"\"><dt><b><a class=\"el\" href=\""
2003 <<
"#" << x.
anchor() <<
"\">";
2007 m_t <<
"<dl class=\"" << x.
key() <<
"\"><dt><b>";
2010 if (!anonymousEnum)
m_t <<
"</a>";
2011 m_t <<
"</b></dt><dd>";
2014 m_t <<
"</dd></dl>\n";
2038 m_t <<
"</blockquote>\n";
2052 m_t <<
"<a href=\"";
2079 const char *p=str.
data();
2085 case '\n':
if(retainNewline)
m_t <<
"<br/>";
m_t << c;
break;
2086 case '<':
m_t <<
"<";
break;
2087 case '>':
m_t <<
">";
break;
2088 case '&':
m_t <<
"&";
break;
2090 if ((*p ==
'(') || (*p ==
')') || (*p ==
'[') || (*p ==
']'))
2091 m_t <<
"\\‍" << *p++;
2097 uint8_t uc =
static_cast<uint8_t
>(c);
2098 if (uc<32 && !isspace(c))
2100 m_t <<
"$" <<
hex[uc>>4] <<
hex[uc&0xF] <<
";";
2116 if (str.
isEmpty())
return str;
2119 const char *p=str.
data();
2125 case '&': result+=
"&";
break;
2126 case '"': result+=
""";
break;
2127 case '<': result+=
"<";
break;
2128 case '>': result+=
">";
break;
2130 if ((*p ==
'(') || (*p ==
')') || (*p ==
'[') || (*p ==
']'))
2142 uint8_t uc =
static_cast<uint8_t
>(c);
2143 if (uc<32 && !isspace(c))
2147 result+=
hex[uc&0xF];
2168 m_t <<
"<a class=\"elRef\" ";
2173 m_t <<
"<a class=\"el\" ";
2222 m_t <<
"<img src=\"" << relPath << baseName <<
".png" <<
"\" />\n";
2237 m_t <<
"<object type=\"image/svg+xml\" data=\"" << relPath << baseName <<
".svg\"></object>\n";
2242 m_t <<
"<img src=\"" << relPath << baseName <<
".png" <<
"\" />\n";
2256 bool styleOutsideParagraph=
FALSE;
2257 while (!styleOutsideParagraph)
2265 styleMask|=
static_cast<int>(sc->
style());
2271 if (sc->
enable() && (styleMask&
static_cast<int>(sc->
style()))==0 &&
2275 styleOutsideParagraph=
TRUE;
2278 if (it!=std::begin(para->
children()))
2287 return styleOutsideParagraph;
2297 const DocPara *para=std::get_if<DocPara>(n.parent());
2305 auto it = std::find_if(std::begin(children),std::end(children),
2306 [&n](
const auto &np) {
return holds_value(&n,np); });
2307 if (it==std::end(children))
return;
2308 if (it==std::begin(children))
return;
2315 if (it!=std::begin(children))
2327 bool styleOutsideParagraph=
false;
2328 if (it!=std::begin(children))
2333 bool isFirst =
false;
2334 bool isLast =
false;
2337 if (isFirst && isLast)
return;
2338 if (styleOutsideParagraph)
return;
2354 if (n.parent() && (para = std::get_if<DocPara>(n.parent())))
2358 auto it = std::find_if(std::begin(children),
2360 [&n](
const auto &np)
2362 if (it==std::end(children))
return;
2366 if (styleOutsideParagraph)
return;
2372 if (it!=std::end(children))
2382 bool needsTag =
true;
2383 bool isFirst =
false;
2384 bool isLast =
false;
2386 if (isFirst && isLast) needsTag =
false;
2389 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
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 writeMscFile(const QCString &fileName, const QCString &relPath, const QCString &context, const QCString &srcFile, int srcLine, bool newFile=true)
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 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 writeDotFile(const QCString &fileName, const QCString &relPath, const QCString &context, const QCString &srcFile, int srcLine, bool newFile=true)
void visitChildren(const T &t)
void filter(const QCString &str, const bool retainNewline=false)
void forceEndParagraph(const DocNode &n)
void writeDiaFile(const QCString &fileName, const QCString &relPath, const QCString &context, const QCString &srcFile, int srcLine, bool newFile=true)
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.
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.
const char * data() const
Returns a pointer to the contents of the string in the form of a 0-terminated C string.
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
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 writeDotGraphFromFile(const QCString &inFile, const QCString &outDir, const QCString &outFile, GraphOutputFormat format, const QCString &srcFile, int srcLine)
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, bool newFile)
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 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 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)
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.
QCString writeFileContents(const QCString &baseName, const QCString &extension, const QCString &content, bool &exists)
Thread-safe function to write a string to a file.
SrcLangExt getLanguageFromFileName(const QCString &fileName, SrcLangExt defLang)
QCString 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()
QCString makeBaseName(const QCString &name, const QCString &ext)
bool copyFile(const QCString &src, const QCString &dest)
Copies the contents of file with name src to the newly created file with name dest.
QCString 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.