#include <stdlib.h>
#include <assert.h>
#include <mutex>
#include <sstream>
#include "message.h"
#include "htmlgen.h"
#include "config.h"
#include "util.h"
#include "doxygen.h"
#include "diagram.h"
#include "version.h"
#include "dot.h"
#include "dotcallgraph.h"
#include "dotclassgraph.h"
#include "dotdirdeps.h"
#include "dotgfxhierarchytable.h"
#include "dotgroupcollaboration.h"
#include "dotincldepgraph.h"
#include "language.h"
#include "htmlhelp.h"
#include "docparser.h"
#include "htmldocvisitor.h"
#include "searchindex.h"
#include "pagedef.h"
#include "debug.h"
#include "dirdef.h"
#include "vhdldocgen.h"
#include "layout.h"
#include "image.h"
#include "ftvhelp.h"
#include "bufstr.h"
#include "resourcemgr.h"
#include "tooltip.h"
#include "growbuf.h"
#include "fileinfo.h"
#include "dir.h"
#include "utf8.h"
#include "textstream.h"
浏览源代码.
|
static void | writeClientSearchBox (TextStream &t, const QCString &relPath) |
|
static void | writeServerSearchBox (TextStream &t, const QCString &relPath, bool highlightSearch) |
|
static QCString | getConvertLatexMacro () |
| Convert a set of LaTeX commands \(re)newcommand to a form readable by MathJax LaTeX syntax: 更多...
|
|
static QCString | getSearchBox (bool serverSide, QCString relPath, bool highlightSearch) |
|
static QCString | substituteHtmlKeywords (const QCString &str, const QCString &title, const QCString &relPath, const QCString &navPath=QCString()) |
|
static void | startSectionHeader (TextStream &t, const QCString &relPath, int sectionCount) |
|
static void | endSectionHeader (TextStream &t) |
|
static void | startSectionSummary (TextStream &t, int sectionCount) |
|
static void | endSectionSummary (TextStream &t) |
|
static void | startSectionContent (TextStream &t, int sectionCount) |
|
static void | endSectionContent (TextStream &t) |
|
static void | startQuickIndexList (TextStream &t, bool compact, bool topLevel=TRUE) |
|
static void | endQuickIndexList (TextStream &t, bool compact) |
|
static void | startQuickIndexItem (TextStream &t, const QCString &l, bool hl, bool, const QCString &relPath) |
|
static void | endQuickIndexItem (TextStream &t, const QCString &l) |
|
static bool | quickLinkVisible (LayoutNavEntry::Kind kind) |
|
static void | renderQuickLinksAsTree (TextStream &t, const QCString &relPath, LayoutNavEntry *root) |
|
static void | renderQuickLinksAsTabs (TextStream &t, const QCString &relPath, LayoutNavEntry *hlEntry, LayoutNavEntry::Kind kind, bool highlightParent, bool highlightSearch) |
|
static void | writeDefaultQuickLinks (TextStream &t, bool compact, HighlightedItem hli, const QCString &file, const QCString &relPath) |
|
◆ DBG_HTML
◆ endQuickIndexItem()
◆ endQuickIndexList()
static void endQuickIndexList |
( |
TextStream & |
t, |
|
|
bool |
compact |
|
) |
| |
|
static |
◆ endSectionContent()
◆ endSectionHeader()
◆ endSectionSummary()
◆ getConvertLatexMacro()
static QCString getConvertLatexMacro |
( |
| ) |
|
|
static |
Convert a set of LaTeX commands \(re)newcommand
to a form readable by MathJax LaTeX syntax:
\newcommand{\cmd}{replacement}
or
\renewcommand{\cmd}{replacement}
MathJax syntax:
LaTeX syntax:
\newcommand{\cmd}[nr]{replacement}
or
\renewcommand{\cmd}[nr]{replacement}
MathJax syntax:
cmd: ["{replacement}",nr]
在文件 htmlgen.cpp 第 141 行定义.
144 if (macrofile.
isEmpty())
return "";
149 const char *data = s.
data();
158 while (i < size && (data[i] ==
' ' || data[i] ==
'\t' || data[i] ==
'\n'))
160 if (data[i] ==
'\n') line++;
163 if (i >= size)
break;
167 warn(macrofile,line,
"file contains non valid code, expected '\\' got '%c'\n",data[i]);
171 if (!
qstrncmp(data + i,
"newcommand", (
uint)strlen(
"newcommand")))
173 i += (int)strlen(
"newcommand");
175 else if (!
qstrncmp(data + i,
"renewcommand", (
uint)strlen(
"renewcommand")))
177 i += (int)strlen(
"renewcommand");
181 warn(macrofile,line,
"file contains non valid code, expected 'newcommand' or 'renewcommand'");
187 warn(macrofile,line,
"file contains non valid code, expected '{' got '%c'\n",data[i]);
193 warn(macrofile,line,
"file contains non valid code, expected '\\' got '%c'\n",data[i]);
199 while (i < size && (data[i] !=
'}')) out.addChar(data[i++]);
202 warn(macrofile,line,
"file contains non valid code, no closing '}' for command");
215 while (i < size && (data[i] !=
']')) nr += data[i++];
218 warn(macrofile,line,
"file contains non valid code, no closing ']'");
223 else if (data[i] !=
'{')
225 warn(macrofile,line,
"file contains non valid code, expected '[' or '{' got '%c'\n",data[i]);
232 warn(macrofile,line,
"file contains non valid code, expected '{' got '%c'\n",data[i]);
240 while (i < size && cnt)
254 else if (data[i] !=
'"') out.addChar(data[i++]);
258 out.addChar(data[i++]);
262 if (cnt) out.addChar(data[i]);
267 out.addChar(data[i++]);
271 out.addChar(data[i++]);
274 out.addChar(data[i++]);
280 warn(macrofile,line,
"file contains non valid code, no closing '}' for replacement");
引用了 FileInfo::absFilePath(), GrowBuf::addChar(), GrowBuf::addStr(), Config_getString, QCString::data(), fileToString(), GrowBuf::get(), QCString::isEmpty(), QCString::length(), qstrncmp(), QCString::str() , 以及 warn().
被这些函数引用 HtmlGenerator::getMathJaxMacros() , 以及 HtmlGenerator::init().
◆ getSearchBox()
static QCString getSearchBox |
( |
bool |
serverSide, |
|
|
QCString |
relPath, |
|
|
bool |
highlightSearch |
|
) |
| |
|
static |
◆ quickLinkVisible()
在文件 htmlgen.cpp 第 2295 行定义.
引用了 annotatedClasses, annotatedExceptions, annotatedInterfaces, annotatedStructs, LayoutNavEntry::Classes, LayoutNavEntry::ClassHierarchy, LayoutNavEntry::ClassIndex, LayoutNavEntry::ClassList, LayoutNavEntry::ClassMembers, CMHL_All, LayoutNavEntry::Concepts, Config_getBool, documentedClassMembers, documentedConcepts, documentedFileMembers, documentedFiles, documentedGroups, documentedNamespaceMembers, documentedNamespaces, LinkedMap< T, Hash, KeyEqual, Map >::empty(), Doxygen::exampleLinkedMap, LayoutNavEntry::Examples, LayoutNavEntry::ExceptionHierarchy, LayoutNavEntry::ExceptionIndex, LayoutNavEntry::ExceptionList, LayoutNavEntry::Exceptions, FALSE, LayoutNavEntry::FileGlobals, LayoutNavEntry::FileList, LayoutNavEntry::Files, FMHL_All, hierarchyClasses, hierarchyExceptions, hierarchyInterfaces, indexedPages, LayoutNavEntry::InterfaceHierarchy, LayoutNavEntry::InterfaceIndex, LayoutNavEntry::InterfaceList, LayoutNavEntry::Interfaces, LayoutNavEntry::MainPage, LayoutNavEntry::Modules, LayoutNavEntry::NamespaceList, LayoutNavEntry::NamespaceMembers, LayoutNavEntry::Namespaces, NMHL_All, LayoutNavEntry::None, LayoutNavEntry::Pages, LayoutNavEntry::StructIndex, LayoutNavEntry::StructList, LayoutNavEntry::Structs, TRUE, LayoutNavEntry::User , 以及 LayoutNavEntry::UserGroup.
被这些函数引用 renderQuickLinksAsTabs() , 以及 renderQuickLinksAsTree().
◆ renderQuickLinksAsTabs()
在文件 htmlgen.cpp 第 2365 行定义.
2390 entry.get()==hlEntry &&
2391 (!entry->children().empty() ||
2392 (entry->kind()==kind && !highlightParent)
2406 if (!serverBasedSearch)
2414 if (!highlightSearch)
2420 if (!highlightSearch)
引用了 LayoutNavEntry::children(), Config_getBool, endQuickIndexItem(), endQuickIndexList(), fixSpaces(), LayoutDocManager::instance(), LayoutNavEntry::parent(), quickLinkVisible(), LayoutDocManager::rootNavEntry(), startQuickIndexItem(), startQuickIndexList(), TRUE, writeClientSearchBox() , 以及 writeServerSearchBox().
被这些函数引用 writeDefaultQuickLinks().
◆ renderQuickLinksAsTree()
◆ startQuickIndexItem()
◆ startQuickIndexList()
static void startQuickIndexList |
( |
TextStream & |
t, |
|
|
bool |
compact, |
|
|
bool |
topLevel = TRUE |
|
) |
| |
|
static |
◆ startSectionContent()
static void startSectionContent |
( |
TextStream & |
t, |
|
|
int |
sectionCount |
|
) |
| |
|
static |
◆ startSectionHeader()
static void startSectionHeader |
( |
TextStream & |
t, |
|
|
const QCString & |
relPath, |
|
|
int |
sectionCount |
|
) |
| |
|
static |
◆ startSectionSummary()
static void startSectionSummary |
( |
TextStream & |
t, |
|
|
int |
sectionCount |
|
) |
| |
|
static |
◆ substituteHtmlKeywords()
在文件 htmlgen.cpp 第 315 行定义.
337 bool hasProjectName = !projectName.
isEmpty();
341 bool hasFullSideBar =
Config_getBool(FULL_SIDEBAR) && disableIndex && treeView;
342 static bool titleArea = (hasProjectName || hasProjectBrief || hasProjectLogo || (disableIndex && searchEngine));
347 cssFile =
"doxygen.css";
354 cssFile = cssfi.fileName();
358 cssFile =
"doxygen.css";
364 for (
const auto &fileName : extraCssFile)
366 if (!fileName.empty())
371 extraCssText +=
"<link href=\"$relpath^"+
stripPath(fileName.c_str())+
"\" rel=\"stylesheet\" type=\"text/css\"/>\n";
388 treeViewCssJs =
"<link href=\"$relpath^navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n"
392 "<script type=\"text/javascript\" src=\"$relpath^resize.js\"></script>\n"
393 "<script type=\"text/javascript\" src=\"$relpath^navtreedata.js\"></script>\n"
394 "<script type=\"text/javascript\" src=\"$relpath^navtree.js\"></script>\n";
399 searchCssJs =
"<link href=\"$relpath^search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n";
400 if (!serverBasedSearch)
402 searchCssJs +=
"<script type=\"text/javascript\" src=\"$relpath^search/searchdata.js\"></script>\n";
404 searchCssJs +=
"<script type=\"text/javascript\" src=\"$relpath^search/search.js\"></script>\n";
406 if (!serverBasedSearch)
410 searchCssJs +=
"<script type=\"text/javascript\">\n"
411 "/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */\n"
412 " $(document).ready(function() { init_search(); });\n"
413 "/* @license-end */\n"
421 searchCssJs +=
"<script type=\"text/javascript\">\n"
422 "/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */\n"
423 " $(document).ready(function() {\n"
424 " if ($('.searchresults').length > 0) { searchBox.DOMSearchField().focus(); }\n"
426 " /* @license-end */\n"
431 searchCssJs +=
"<link rel=\"search\" href=\"" + relPath +
432 "search_opensearch.php?v=opensearch.xml\" "
433 "type=\"application/opensearchdescription+xml\" title=\"" +
434 (hasProjectName ? projectName :
QCString(
"Doxygen")) +
450 switch (mathJaxVersion)
452 case MATHJAX_VERSION_t::MathJax_3:
454 mathJaxJs +=
"<script src=\"https://polyfill.io/v3/polyfill.min.js?features=es6\"></script>\n"
455 "<script type=\"text/javascript\">\n"
456 "window.MathJax = {\n"
458 " ignoreHtmlClass: 'tex2jax_ignore',\n"
459 " processHtmlClass: 'tex2jax_process'\n"
472 " packages: ['base','configmacros'";
475 mathJaxJs+=
",'newcommand'";
477 for (
const auto &s : mathJaxExtensions)
479 mathJaxJs+=
",'"+
QCString(s.c_str())+
"'";
495 mathJaxJs +=
"</script>\n";
496 mathJaxJs +=
"<script type=\"text/javascript\" id=\"MathJax-script\" async=\"async\" src=\"" +
497 path +
"es5/tex-" + mathJaxFormat.
lower() +
".js\">";
498 mathJaxJs+=
"</script>\n";
501 case MATHJAX_VERSION_t::MathJax_2:
503 mathJaxJs =
"<script type=\"text/x-mathjax-config\">\n"
504 "MathJax.Hub.Config({\n"
505 " extensions: [\"tex2jax.js\"";
507 for (
const auto &s : mathJaxExtensions)
509 mathJaxJs+=
", \""+
QCString(s.c_str())+
".js\"";
513 mathJaxFormat =
"HTML-CSS";
516 " jax: [\"input/TeX\",\"output/"+mathJaxFormat+
"\"],\n";
519 mathJaxJs +=
" TeX: { Macros: {\n";
524 mathJaxJs +=
"});\n";
530 mathJaxJs +=
"</script>\n";
531 mathJaxJs +=
"<script type=\"text/javascript\" async=\"async\" src=\"" + path +
"MathJax.js\"></script>\n";
544 result =
substitute(result,
"$navpath",navPath);
545 result =
substitute(result,
"$stylesheet",cssFile);
546 result =
substitute(result,
"$treeview",treeViewCssJs);
547 result =
substitute(result,
"$searchbox",searchBox);
548 result =
substitute(result,
"$search",searchCssJs);
549 result =
substitute(result,
"$mathjax",mathJaxJs);
550 result =
substitute(result,
"$generatedby",generatedBy);
551 result =
substitute(result,
"$extrastylesheet",extraCssText);
552 result =
substitute(result,
"$relpath$",relPath);
553 result =
substitute(result,
"$relpath^",relPath);
引用了 Config_getBool, Config_getEnum, Config_getEnumAsString, Config_getList, Config_getString, convertToHtml(), dateToString(), FileInfo::exists(), FALSE, FileInfo::fileName(), g_latex_macro, g_mathjax_code, getSearchBox(), OutputGenerator::Html, QCString::isEmpty(), QCString::left(), QCString::lower(), QCString::prepend(), removeEmptyLines(), selectBlock(), QCString::str(), stripPath(), substitute(), substituteKeywords(), theTranslator, Translator::trGeneratedAt(), Translator::trGeneratedBy() , 以及 TRUE.
被这些函数引用 HtmlGenerator::startFile(), HtmlGenerator::writeExternalSearchPage(), HtmlGenerator::writePageFooter() , 以及 HtmlGenerator::writeSearchPage().
◆ writeClientSearchBox()
在文件 htmlgen.cpp 第 68 行定义.
70 t <<
" <div id=\"MSearchBox\" class=\"MSearchBoxInactive\">\n";
71 t <<
" <span class=\"left\">\n";
72 t <<
" <img id=\"MSearchSelect\" src=\"" << relPath <<
"search/mag_sel.svg\"\n";
73 t <<
" onmouseover=\"return searchBox.OnSearchSelectShow()\"\n";
74 t <<
" onmouseout=\"return searchBox.OnSearchSelectHide()\"\n";
76 t <<
" <input type=\"text\" id=\"MSearchField\" value=\""
78 t <<
" onfocus=\"searchBox.OnSearchFieldFocus(true)\" \n";
79 t <<
" onblur=\"searchBox.OnSearchFieldFocus(false)\" \n";
80 t <<
" onkeyup=\"searchBox.OnSearchFieldChange(event)\"/>\n";
81 t <<
" </span><span class=\"right\">\n";
82 t <<
" <a id=\"MSearchClose\" href=\"javascript:searchBox.CloseResultsWindow()\">"
83 <<
"<img id=\"MSearchCloseImg\" border=\"0\" src=\"" << relPath <<
"search/close.svg\" alt=\"\"/></a>\n";
引用了 theTranslator , 以及 Translator::trSearch().
被这些函数引用 getSearchBox() , 以及 renderQuickLinksAsTabs().
◆ writeDefaultQuickLinks()
在文件 htmlgen.cpp 第 2434 行定义.
2445 bool highlightParent=
FALSE;
2472 highlightParent =
TRUE;
break;
2474 highlightParent =
TRUE;
break;
2476 highlightParent =
TRUE;
break;
2478 highlightParent =
TRUE;
break;
2480 highlightParent =
TRUE;
break;
2482 highlightParent =
TRUE;
break;
2484 highlightParent =
TRUE;
break;
2498 searchPage =
"search.php";
2500 t <<
"<script type=\"text/javascript\" src=\"" << relPath <<
"menudata.js\"></script>\n";
2501 t <<
"<script type=\"text/javascript\" src=\"" << relPath <<
"menu.js\"></script>\n";
2502 t <<
"<script type=\"text/javascript\">\n";
2503 t <<
"/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */\n";
2504 t <<
"$(function() {\n";
2505 t <<
" initMenu('" << relPath <<
"',"
2506 << (searchEngine?
"true":
"false") <<
","
2507 << (serverBasedSearch?
"true":
"false") <<
",'"
2508 << searchPage <<
"','"
2512 if (!serverBasedSearch)
2514 t <<
" $(document).ready(function() { init_search(); });\n";
2518 t <<
" $(document).ready(function() {\n"
2519 <<
" if ($('.searchresults').length > 0) { searchBox.DOMSearchField().focus(); }\n"
2524 t <<
"/* @license-end */\n";
2526 t <<
"<div id=\"main-nav\"></div>\n";
2535 highlightParent=
TRUE;
2536 hlEntry = root->
children().front().get();
引用了 LayoutNavEntry::children(), LayoutNavEntry::Classes, LayoutNavEntry::ClassHierarchy, LayoutNavEntry::ClassIndex, LayoutNavEntry::ClassList, LayoutNavEntry::ClassMembers, LayoutNavEntry::Concepts, Config_getBool, LayoutNavEntry::Examples, LayoutNavEntry::ExceptionHierarchy, LayoutNavEntry::ExceptionIndex, LayoutNavEntry::ExceptionList, LayoutNavEntry::Exceptions, FALSE, LayoutNavEntry::FileGlobals, LayoutNavEntry::FileList, LayoutNavEntry::Files, LayoutNavEntry::find(), HLI_AnnotatedClasses, HLI_AnnotatedExceptions, HLI_AnnotatedInterfaces, HLI_AnnotatedStructs, HLI_Classes, HLI_ClassHierarchy, HLI_ClassVisible, HLI_Concepts, HLI_ConceptVisible, HLI_Examples, HLI_ExceptionHierarchy, HLI_Exceptions, HLI_ExceptionVisible, HLI_Files, HLI_FileVisible, HLI_Functions, HLI_Globals, HLI_InterfaceHierarchy, HLI_Interfaces, HLI_InterfaceVisible, HLI_Main, HLI_Modules, HLI_NamespaceMembers, HLI_Namespaces, HLI_NamespaceVisible, HLI_None, HLI_Pages, HLI_Search, HLI_Structs, HLI_StructVisible, HLI_UserGroup, Doxygen::htmlFileExtension, LayoutDocManager::instance(), LayoutNavEntry::InterfaceHierarchy, LayoutNavEntry::InterfaceIndex, LayoutNavEntry::InterfaceList, LayoutNavEntry::Interfaces, LayoutNavEntry::MainPage, LayoutNavEntry::Modules, LayoutNavEntry::NamespaceList, LayoutNavEntry::NamespaceMembers, LayoutNavEntry::Namespaces, LayoutNavEntry::Pages, renderQuickLinksAsTabs(), renderQuickLinksAsTree(), LayoutDocManager::rootNavEntry(), LayoutNavEntry::StructIndex, LayoutNavEntry::StructList, LayoutNavEntry::Structs, theTranslator, Translator::trSearch(), TRUE , 以及 LayoutNavEntry::UserGroup.
被这些函数引用 HtmlGenerator::writeExternalSearchPage(), HtmlGenerator::writeQuickLinks() , 以及 HtmlGenerator::writeSearchPage().
◆ writeServerSearchBox()
static void writeServerSearchBox |
( |
TextStream & |
t, |
|
|
const QCString & |
relPath, |
|
|
bool |
highlightSearch |
|
) |
| |
|
static |
在文件 htmlgen.cpp 第 90 行定义.
93 t <<
" <div id=\"MSearchBox\" class=\"MSearchBoxInactive\">\n";
94 t <<
" <div class=\"left\">\n";
95 t <<
" <form id=\"FSearchBox\" action=\"" << relPath;
104 t <<
"\" method=\"get\">\n";
105 t <<
" <img id=\"MSearchSelect\" src=\"" << relPath <<
"search/mag.svg\" alt=\"\"/>\n";
106 if (!highlightSearch)
108 t <<
" <input type=\"text\" id=\"MSearchField\" name=\"query\" value=\""
110 t <<
" onfocus=\"searchBox.OnSearchFieldFocus(true)\" \n";
111 t <<
" onblur=\"searchBox.OnSearchFieldFocus(false)\"/>\n";
113 t <<
" </div><div class=\"right\"></div>\n";
引用了 Config_getBool, Doxygen::htmlFileExtension, theTranslator , 以及 Translator::trSearch().
被这些函数引用 getSearchBox() , 以及 renderQuickLinksAsTabs().
◆ g_footer
◆ g_header
◆ g_indexLock
◆ g_latex_macro
◆ g_mathjax_code
◆ hex
const char* hex ="0123456789ABCDEF" |
|
static |
QCString selectBlock(const QCString &s, const QCString &name, bool enable, OutputGenerator::OutputType o)
std::vector< std::string > StringVector
Base class for the layout of a navigation item at the top of the HTML pages.
virtual QCString trGeneratedBy()=0
LayoutNavEntry * rootNavEntry() const
returns the (invisible) root of the navigation tree.
#define Config_getEnum(name)
static void writeServerSearchBox(TextStream &t, const QCString &relPath, bool highlightSearch)
int documentedClassMembers[CMHL_Total]
uint length() const
Returns the length of the string, not counting the 0-terminator.
bool isEmpty() const
Returns TRUE iff the string is empty
LayoutNavEntry * find(LayoutNavEntry::Kind k, const QCString &file=QCString()) const
int documentedFileMembers[FMHL_Total]
QCString correctURL(const QCString &url, const QCString &relPath)
Corrects URL url according to the relative path relPath.
Text streaming class that buffers data.
int qstrncmp(const char *str1, const char *str2, size_t len)
void warn(const QCString &file, int line, const char *fmt,...)
@ HLI_AnnotatedExceptions
Class representing a string buffer optimised for growing.
static void renderQuickLinksAsTree(TextStream &t, const QCString &relPath, LayoutNavEntry *root)
virtual QCString trGeneratedAt(const QCString &date, const QCString &projName)=0
QCString dateToString(bool includeTime)
QCString removeEmptyLines(const QCString &s)
static void startQuickIndexList(TextStream &t, bool compact, bool topLevel=TRUE)
QCString left(size_t len) const
static void writeClientSearchBox(TextStream &t, const QCString &relPath)
static void startQuickIndexItem(TextStream &t, const QCString &l, bool hl, bool, const QCString &relPath)
static void endQuickIndexList(TextStream &t, bool compact)
Translator * theTranslator
#define Config_getEnumAsString(name)
QCString stripPath(const QCString &s)
QCString fileToString(const QCString &name, bool filter, bool isSourceCode)
static bool quickLinkVisible(LayoutNavEntry::Kind kind)
@ HLI_AnnotatedInterfaces
std::string str() const
Return the contents of the buffer as a std::string object
virtual QCString trSearch()=0
static void renderQuickLinksAsTabs(TextStream &t, const QCString &relPath, LayoutNavEntry *hlEntry, LayoutNavEntry::Kind kind, bool highlightParent, bool highlightSearch)
static QCString g_mathjax_code
static QCString getSearchBox(bool serverSide, QCString relPath, bool highlightSearch)
QCString fixSpaces(const QCString &s)
QCString substitute(const QCString &s, const QCString &src, const QCString &dst)
substitute all occurrences of src in s by dst
static QCString g_latex_macro
static void endQuickIndexItem(TextStream &t, const QCString &l)
QCString substituteKeywords(const QCString &s, const QCString &title, const QCString &projName, const QCString &projNum, const QCString &projBrief)
#define Config_getBool(name)
static QCString htmlFileExtension
static LayoutDocManager & instance()
Returns a reference to this singleton.
Minimal replacement for QFileInfo.
std::string absFilePath() const
#define Config_getString(name)
int documentedNamespaceMembers[NMHL_Total]
const char * data() const
Returns a pointer to the contents of the string in the form of a 0-terminated C string
const LayoutNavEntryList & children() const
QCString & prepend(const char *s)
QCString convertToHtml(const QCString &s, bool keepEntities)
LayoutNavEntry * parent() const
#define Config_getList(name)
static PageLinkedMap * exampleLinkedMap
This is an alternative implementation of QCString.