浏览该文件的文档.
52 #define MAX_ITEMS_BEFORE_MULTIPAGE_INDEX 200
53 #define MAX_ITEMS_BEFORE_QUICK_INDEX 30
79 static void countFiles(
int &htmlFiles,
int &files);
156 auto it = map.find(letter);
159 it->second.push_back(md);
163 map.insert(std::make_pair(letter,std::vector<const MemberDef*>({md})));
177 ol.
writeString(
" <div id=\"navrow4\" class=\"tabs3\">\n");
181 ol.
writeString(
" <div id=\"navrow3\" class=\"tabs2\">\n");
193 bool hl,
bool compact,
bool &first)
246 if (!additionalIndices)
263 if (generateTreeView)
278 if (generateTreeView)
313 for (
const auto &emd : enumList)
315 if (!hideUndocMembers || emd->hasDocumentation())
320 emd->name(),emd->getReference(),emd->getOutputFileBase(),emd->anchor(),
FALSE,addToIndex && emd->getGroupDef()==
nullptr);
340 bool addToIndex=
TRUE,
bool preventSeparateIndex=
FALSE,
344 bool hasMembers = !def->getMemberLists().empty() || !def->getMemberGroups().empty();
346 def->getReference(),def->getOutputFileBase(),anchor,
347 hasMembers && !preventSeparateIndex,
351 for (
const auto &cd : def->getClasses())
353 if (cd->isLinkable()) numClasses++;
358 for (
const auto &cd : *concepts)
360 if (cd->isLinkable()) numConcepts++;
364 if (hasMembers || numClasses>0 || numConcepts>0)
369 auto kind = lde->kind();
376 for (
const auto &md : *ml)
378 if (md->visibleInIndex())
390 for (
const auto &cd : def->getClasses())
392 if (cd->isLinkable() && (cd->partOfGroups().empty() || def->definitionType()==
Definition::TypeGroup))
394 static bool inlineSimpleStructs =
Config_getBool(INLINE_SIMPLE_STRUCTS);
397 addToIndex && (isNestedClass || (cd->isSimple() && inlineSimpleStructs)),
398 preventSeparateIndex || cd->isEmbeddedInOuterScope());
404 for (
const auto &cd : *concepts)
406 if (cd->isLinkable() && (cd->partOfGroups().empty() || def->definitionType()==
Definition::TypeGroup))
409 cd->getReference(),cd->getOutputFileBase(),
QCString(),
428 if (bcl.empty())
return;
430 for (
const auto &bcd : bcl)
465 bool hasChildren = visitedClasses.find(cd)==visitedClasses.end() &&
513 visitedClasses.insert(cd);
546 for (
const auto &fd : dd->
getFiles())
559 for(
const auto &subdd : dd->
subDirs())
575 "maximum nesting level exceeded for directory %s: "
576 "check for possible recursive directory relation!\n",
qPrint(dd->
name())
586 static bool tocExpand =
TRUE;
587 bool isDir = !dd->
subDirs().empty() ||
619 for(
const auto &subdd : dd->
subDirs())
629 for (
const auto &fd : dd->
getFiles())
641 else if (genSourceFile)
649 for (
const auto &fd : dd->
getFiles())
657 reference = fd->getReference();
658 outputBase = fd->getOutputFileBase();
667 if (ftv && (src || doc))
671 reference,outputBase,
680 if (tocExpand && addToIndex)
685 for (
const auto &fd : dd->
getFiles())
740 for (
const auto &fd : *fn)
742 if (!fullPathNames || fd->getDirDef()==0)
749 reference = fd->getReference();
750 outputBase = fd->getOutputFileBase();
789 for (
const auto &cd : cl)
805 else if (sliceOpt && cd->compoundType() != ct)
816 if (cd->isVisibleInHierarchy())
828 bool hasChildren = visitedClasses.find(cd.get())==visitedClasses.end() &&
831 if (cd->isLinkable())
837 ol.
endIndexItem(cd->getReference(),cd->getOutputFileBase());
838 if (cd->isReference())
851 ftv->
addContentsItem(hasChildren,cd->displayName(),cd->getReference(),cd->getOutputFileBase(),cd->anchor(),
FALSE,
FALSE,cd.get());
871 visitedClasses.insert(cd.get());
873 else if (hasChildren)
876 visitedClasses.insert(cd.get());
915 for (
const auto &cd : cl)
917 if (sliceOpt && cd->compoundType() != ct)
923 if (cd->isVisibleInHierarchy())
925 if (!cd->subClasses().empty())
955 bool addToIndex = lne==0 || lne->
visible();
1062 bool addToIndex = lne==0 || lne->
visible();
1168 bool addToIndex = lne==0 || lne->
visible();
1273 for (
const auto &fd: *fn)
1381 bool addToIndex = lne==0 || lne->
visible();
1414 std::unordered_map<std::string,size_t> pathMap;
1415 std::vector<FilesInDir> outputFiles;
1420 for (
const auto &fd : *fn)
1423 if (path.
isEmpty()) path=
"[external]";
1424 auto it = pathMap.
find(path.
str());
1425 if (it!=pathMap.end())
1427 outputFiles.at(it->second).files.push_back(fd.get());
1431 pathMap.insert(std::make_pair(path.
str(),outputFiles.size()));
1432 outputFiles.emplace_back(path);
1433 outputFiles.back().files.push_back(fd.get());
1439 std::sort(outputFiles.begin(),
1441 [](
const auto &fp1,
const auto &fp2) { return qstricmp(fp1.path,fp2.path)<0; });
1443 for (
auto &fp : outputFiles)
1448 for (
const auto &fp : outputFiles)
1450 for (
const auto &fd : fp.files)
1460 for (
const auto &fd : *fn)
1502 if (nd->isLinkableInProject()) count++;
1513 if (cd->isLinkableInProject()) count++;
1524 template<
class ListType>
1528 for (
const auto &cdi : cl)
1560 if (ccd->isLinkableInProject() && ccd->templateMaster()==0)
1602 for (
const auto &md : *ml)
1604 if (md->visibleInIndex())
1625 for (
const auto &md : *ml)
1628 if (md->visibleInIndex())
1640 bool rootOnly,
bool addToIndex);
1643 bool rootOnly,
bool addToIndex)
1669 bool isDir = hasChildren || visibleMembers>0;
1670 if ((isLinkable) || isDir)
1679 if (addToIndex && isDir)
1693 if (addToIndex && isDir)
1702 bool rootOnly,
bool addToIndex)
1704 for (
const auto &nd : nsLinkedMap)
1711 bool rootOnly,
bool addToIndex)
1713 for (
const auto &nd : nsLinkedMap)
1797 for (
const auto &nd : nsLinkedMap)
1806 for (
const auto &nd : nsLinkedMap)
1821 bool addToIndex = lne==0 || lne->
visible();
1841 if (nd->isLinkableInProject())
1860 bool hasBrief = !nd->briefDescription().isEmpty();
1866 nd->briefFile(),nd->briefLine(),
1868 nd->briefDescription(
TRUE),
1926 if (sliceOpt && cd->compoundType() != ct)
1930 if (cd->isLinkableInProject() && cd->templateMaster()==0)
1932 if (!cd->isEmbeddedInOuterScope())
1967 if (sliceOpt && cd->compoundType() != ct)
1973 if (cd->isEmbeddedInOuterScope())
1979 if (cd->isLinkableInProject() && cd->templateMaster()==0)
1990 bool hasBrief = !cd->briefDescription().isEmpty();
1995 cd->briefFile(),cd->briefLine(),
1997 cd->briefDescription(
TRUE),
2020 return (c<127 && c>31);
2025 if (startLetter.
isEmpty())
return startLetter;
2026 const char *p = startLetter.
data();
2036 const char hex[]=
"0123456789abcdef";
2039 result+=
hex[((
unsigned char)c)>>4];
2040 result+=
hex[((
unsigned char)c)&0xf];
2082 if (sliceOpt && cd->compoundType() != ct)
2084 if (cd->isLinkableInProject() && cd->templateMaster()==0)
2091 std::string letter =
getUTF8CharAt(cd->className().str(),index);
2092 if (!letter.empty())
2100 QCString alphaLinks =
"<div class=\"qindex\">";
2102 for (
const auto &letter : indexLettersUsed)
2104 if (!first) alphaLinks +=
" | ";
2107 alphaLinks +=
"<a class=\"qindex\" href=\"#letter_" +
2111 alphaLinks +=
"</div>\n";
2114 std::map<std::string, std::vector<const ClassDef*> > classesByLetter;
2121 if (sliceOpt && cd->compoundType() != ct)
2126 if (cd->isLinkableInProject() && cd->templateMaster()==0)
2128 QCString className = cd->className();
2131 if (!letter.empty())
2134 auto it = classesByLetter.find(letter);
2135 if (it!=classesByLetter.end())
2137 it->second.push_back(cd.get());
2141 classesByLetter.insert(
2142 std::make_pair(letter, std::vector<const ClassDef*>({ cd.get() })));
2149 for (
auto &kv : classesByLetter)
2151 std::sort(kv.second.begin(), kv.second.end(),
2152 [](
const auto &c1,
const auto &c2)
2154 QCString n1 = c1->className();
2155 QCString n2 = c2->className();
2156 return qstricmp(n1.data()+getPrefixIndex(n1), n2.data()+getPrefixIndex(n2))<0;
2161 if (!classesByLetter.empty())
2165 for (
const auto &cl : classesByLetter)
2167 QCString parity = (counter++%2)==0 ?
"even" :
"odd";
2168 ol.
writeString(
"<dl class=\"classindex " + parity +
"\">\n");
2183 for (
const auto &cd : cl.second)
2202 cd->getOutputFileBase(),cd->anchor(),cname);
2236 bool addToIndex = lne==0 || lne->
visible();
2265 bool addToIndex = lne==0 || lne->
visible();
2294 bool addToIndex = lne==0 || lne->
visible();
2323 bool addToIndex = lne==0 || lne->
visible();
2386 bool addToIndex = lne==0 || lne->
visible();
2466 "annotatedinterfaces",
2494 "annotatedexceptions",
2518 if (fd && prevFileName!=fd->
name())
2524 prevFileName = fd->
name();
2546 int index = (int)type;
2553 static writeLinkForMember_t writeLinkForMemberMap[3] =
2562 bool firstSection=
TRUE;
2563 bool firstItem=
TRUE;
2566 for (
const auto &kv : memberIndexMap)
2570 auto it = memberIndexMap.find(page);
2571 if (it != memberIndexMap.end())
2582 if (mil==0 || mil->empty())
continue;
2583 for (
const auto &md : *mil)
2586 bool isFunc=!md->isObjCMethod() &&
2587 (md->isFunction() || md->isSlot() || md->isSignal());
2590 if (name.
data()+startIndex!=prevName)
2593 tolower(name.
at(startIndex))!=tolower(prevName.
at(0))) &&
2596 if (!firstItem) ol.endItemListItem();
2597 if (!firstSection) ol.endItemList();
2608 else if (!useSections && first)
2615 if (!firstItem) ol.endItemListItem();
2616 ol.startItemListItem();
2619 if (isFunc) ol.docify(
"()");
2624 sep =
" : ";
2625 prevName = name.
data()+startIndex;
2635 writeLinkForMemberMap[index](ol,md,sep,prevDefName);
2643 if (!firstItem) ol.endItemListItem();
2661 static bool hideFriendCompounds =
Config_getBool(HIDE_FRIEND_COMPOUNDS);
2672 if (!letter.empty())
2675 bool isFriendToHide = hideFriendCompounds &&
2679 if (!(md->
isFriend() && isFriendToHide) &&
2722 (md->
isFriend() && !isFriendToHide))
2751 if (!letter.empty())
2819 if (!letter.empty())
2876 for (
auto &kv : map)
2878 std::sort(kv.second.begin(),kv.second.end(),
2881 int result = qstricmp(md1->name(),md2->name());
2882 return result==0 ? qstricmp(md1->qualifiedName(),md2->qualifiedName())<0 : result<0;
2911 for (
const auto &kv : map)
2920 anchor=fullName+extension+
"#index_";
2922 anchor=fullName+
"_"+is+extension+
"#index_";
2960 return &cmhlInfo[hl];
2969 bool multiPageIndex=
FALSE;
2972 multiPageIndex=
TRUE;
2982 bool addToIndex = lne==0 || lne->
visible();
2994 std::string page = kv.first;
3070 multiPageIndex ? page : std::string(),
3085 bool addToIndex = lne==0 || lne->
visible();
3138 return &fmhlInfo[hl];
3147 bool multiPageIndex=
FALSE;
3150 multiPageIndex=
TRUE;
3159 bool addToIndex = lne==0 || lne->
visible();
3171 std::string page = kv.first;
3244 multiPageIndex ? page : std::string(),
3257 bool addToIndex = lne==0 || lne->
visible();
3308 return &nmhlInfo[hl];
3321 bool multiPageIndex=
FALSE;
3324 multiPageIndex=
TRUE;
3333 bool addToIndex = lne==0 || lne->
visible();
3345 std::string page = kv.first;
3418 multiPageIndex ? page : std::string(),
3431 bool addToIndex = lne==0 || lne->
visible();
3465 bool addToIndex = lne==0 || lne->
visible();
3489 QCString n=pd->getOutputFileBase();
3490 if (!pd->title().isEmpty())
3524 docPages=indexPages=0;
3527 if (pd->visibleInIndex())
3531 if (pd->documentedPage())
3555 bool addToIndex = lne==0 || lne->
visible();
3556 if (!addToIndex)
return;
3566 pageTitle=pd->
name();
3574 hasSubPages,pageTitle,
3581 hasSubPages || hasSections,pageTitle,
3587 bool doIndent = (hasSections || hasSubPages) &&
3595 const_cast<PageDef*
>(pd)->addSectionsToIndex();
3631 if ((pd->getOuterScope()==0 ||
3659 if (!gd->isReference())
3675 if (dd->isLinkableInProject())
3695 bool stripCommentsStateRef =
Config_getBool(STRIP_CODE_COMMENTS);
3696 bool oldStripCommentsState = stripCommentsStateRef;
3698 bool oldCreateSubdirs = createSubdirs;
3710 int s = legendDocs.
find(
"<center>");
3711 int e = legendDocs.
find(
"</center>");
3713 if (imgExt==
"svg" && s!=-1 && e!=-1)
3715 legendDocs = legendDocs.
left(s+8) +
"[!-- SVG 0 --]\n" + legendDocs.
mid(e);
3744 "maximum nesting level exceeded for group %s: check for possible recursive group relation!\n",
qPrint(gd->
name())
3760 size_t numSubItems = 0;
3767 numSubItems += ml->size();
3772 numSubItems += gd->
getFiles().size();
3774 numSubItems += gd->
getDirs().size();
3778 bool isDir = hasSubGroups || hasSubPages || numSubItems>0;
3805 ol.
docify(
" [external]");
3817 for (
const auto &md : *ml)
3820 isDir = !enumList.
empty() && md->isEnumerate();
3821 if (md->isVisible() && !md->isAnonymous())
3824 md->qualifiedName(),md->getReference(),
3825 md->getOutputFileBase(),md->anchor(),
FALSE,addToIndex);
3830 for (
const auto &emd : enumList)
3832 if (emd->isVisible())
3835 emd->qualifiedName(),emd->getReference(),emd->getOutputFileBase(),
3836 emd->anchor(),
FALSE,addToIndex);
3852 if (cd->isVisible() )
3867 if (nd->isVisible())
3870 nd->displayName(),nd->getReference(),
3879 if (cd->isVisible())
3882 cd->displayName(),cd->getReference(),
3889 for (
const auto &fd : gd->
getFiles())
3891 if (fd->isVisible())
3894 fd->displayName(),fd->getReference(),
3901 for (
const auto &dd : gd->
getDirs())
3903 if (dd->isVisible())
3906 dd->shortName(),dd->getReference(),
3913 for (
const auto &pd : gd->
getPages())
3917 hasSubPages = pd->hasSubPages();
3918 bool hasSections = pd->hasSections();
3920 hasSubPages || hasSections,
3925 hasSubPages || hasSections,
3927 if (hasSections || hasSubPages)
3933 const_cast<PageDef*
>(pd)->addSectionsToIndex();
3936 if (hasSections || hasSubPages)
4000 bool addToIndex = lne==0 || lne->
visible();
4062 for (
const auto &cd : concepts)
4065 cd->getOutputFileBase(),
QCString(),
false,cd->partOfGroups().empty(),cd);
4069 cd->getOutputFileBase(),
QCString(),
false,cd->partOfGroups().empty());
4075 bool rootOnly,
bool addToIndex);
4078 bool rootOnly,
bool addToIndex)
4080 for (
const auto &nd : nsLinkedMap)
4088 bool rootOnly,
bool addToIndex)
4142 if (cd->getOuterScope()==0 ||
4147 false,cd->localName(),cd->getReference(),cd->getOutputFileBase(),
4148 QCString(),
false,cd->partOfGroups().empty(),cd.get());
4152 false,cd->localName(),cd->getReference(),cd->getOutputFileBase(),
4153 QCString(),
false,cd->partOfGroups().empty(),cd.get());
4168 bool addToIndex = lne==0 || lne->
visible();
4189 if (cd->isLinkableInProject())
4201 bool hasBrief = !cd->briefDescription().isEmpty();
4207 cd->briefFile(),cd->briefLine(),
4209 cd->briefDescription(
TRUE),
4277 for (
const auto &entry: lne->
children())
4279 if (entry->visible()) count++;
4284 for (
const auto &entry: lne->
children())
4286 if (entry->visible())
4288 ol.
writeString(
"<li><a href=\""+entry->url()+
"\"><span>"+
4289 fixSpaces(entry->title())+
"</span></a></li>\n");
4313 projPrefix=projectName+
" ";
4361 bool headerWritten=
FALSE;
4383 headerWritten =
TRUE;
4393 headerWritten =
TRUE;
4485 if (!pd->getGroupDef() && !pd->isReference() &&
4486 (!pd->hasParentPage() ||
4490 bool isCitationPage = pd->name()==
"citelist";
4497 title = pd->title();
4498 if (title.
isEmpty()) title=pd->name();
4694 for (
const auto &lne : entries)
4702 size_t newSize = index+1;
4707 bool addToIndex=lne->visible();
4708 bool needsClosing=
FALSE;
4714 msg(
"Generating index page...\n");
4718 msg(
"Generating page index...\n");
4722 msg(
"Generating module index...\n");
4738 msg(
"Generating namespace index...\n");
4749 msg(
"Generating namespace index...\n");
4755 msg(
"Generating namespace member index...\n");
4767 msg(
"Generating annotated compound index...\n");
4772 msg(
"Generating concept index...\n");
4776 msg(
"Generating annotated compound index...\n");
4780 msg(
"Generating alphabetical compound index...\n");
4784 msg(
"Generating hierarchical class index...\n");
4788 msg(
"Generating graphical class hierarchy...\n");
4795 msg(
"Generating member index...\n");
4810 msg(
"Generating annotated interface index...\n");
4817 msg(
"Generating alphabetical interface index...\n");
4824 msg(
"Generating hierarchical interface index...\n");
4828 msg(
"Generating graphical interface hierarchy...\n");
4844 msg(
"Generating annotated struct index...\n");
4851 msg(
"Generating alphabetical struct index...\n");
4866 msg(
"Generating annotated exception index...\n");
4873 msg(
"Generating alphabetical exception index...\n");
4880 msg(
"Generating hierarchical exception index...\n");
4884 msg(
"Generating graphical exception hierarchy...\n");
4899 msg(
"Generating file index...\n");
4905 msg(
"Generating file index...\n");
4909 msg(
"Generating file member index...\n");
4913 msg(
"Generating example index...\n");
4920 bool isRelative=url.
at(0)==
'!';
4921 if (!url.
isEmpty() && !isRelative)
4925 bool isRef = lne->baseFile().
left(4)==
"@ref" || lne->baseFile().
left(4)==
"\\ref";
4941 bool isRelative=url.
at(0)==
'!';
4946 bool isRef = lne->baseFile().
left(4)==
"@ref" || lne->baseFile().
left(4)==
"\\ref";
5029 template<
class T,std::
size_t total>
5031 const int *numDocumented,
5032 const std::array<MemberIndexMap,total> &memberLists,
5033 const T *(*getInfo)(
size_t hl))
5036 bool firstMember=
TRUE;
5037 for (std::size_t i=0;i<total;i++)
5039 if (numDocumented[i]>0)
5055 bool multiPageIndex=
FALSE;
5058 multiPageIndex=
TRUE;
5060 t <<
",children:[\n";
5061 bool firstLetter=
TRUE;
5062 for (
const auto &kv : memberLists[i])
5064 if (!firstLetter) t <<
",\n";
5065 std::string letter = kv.first;
5070 QCString fullName = getInfo(i)->fname;
5071 if (!multiPageIndex || firstLetter)
5072 anchor=fullName+extension+
"#index_";
5074 anchor=fullName+
"_"+is+extension+
"#index_";
5093 for (
const auto &entry : root->
children())
5099 bool firstChild =
TRUE;
5100 if (!first) t <<
",";
5101 t <<
"children:[\n";
5102 for (
const auto &entry : root->
children())
5106 if (!firstChild) t <<
",\n";
5111 bool hasChildren=
FALSE;
5131 if (hasChildren) t <<
"]";
5144 std::ofstream t(outputDir.
str()+
"/menudata.js",std::ofstream::out | std::ofstream::binary);
5148 t <<
"var menudata={";
5150 if (hasChildren) t <<
"]";
std::map< std::string, MemberIndexList > MemberIndexMap
QCString getDotImageExtension()
void disableAllBut(OutputGenerator::OutputType o)
static void writeAlphabeticalClassList(OutputList &ol, ClassDef::CompoundType ct, int annotatedCount)
virtual QCString trConstants()=0
int annotatedClassesPrinted
static void writeAlphabeticalStructIndex(OutputList &ol)
void startTitle(OutputList &ol, const QCString &fileName, const DefinitionMutable *def)
virtual void writeSummaryLinks(OutputList &) const =0
virtual bool isTypedef() const =0
bool namespaceHasNestedConcept(const NamespaceDef *nd)
virtual const ConceptLinkedRefMap & getConcepts() const =0
static void writeAnnotatedExceptionIndex(OutputList &ol)
bool hasVisibleRoot(const BaseClassList &bcl)
virtual QCString getOutputFileBase() const =0
Base class for the layout of a navigation item at the top of the HTML pages.
void endIndexValue(const QCString &name, bool b)
virtual QCString trClassHierarchyDescription()=0
virtual QCString trCompoundMembers()=0
const LayoutNavEntry::Kind fallbackKind
virtual QCString trModulesDescription()=0
virtual QCString trSubprograms()=0
FmhlInfo(const char *fn, const QCString &t)
virtual QCString getSourceFileBase() const =0
static void writeAnnotatedClassList(OutputList &ol, ClassDef::CompoundType ct)
static void writeConceptIndex(OutputList &ol)
virtual QCString trGeneratedBy()=0
static void writeFileIndex(OutputList &ol)
void endTitle(OutputList &ol, const QCString &fileName, const QCString &name)
NmhlInfo(const char *fn, const QCString &t)
QCString & replace(size_t index, size_t len, const char *s)
LayoutNavEntry * rootNavEntry() const
returns the (invisible) root of the navigation tree.
static std::unique_ptr< PageDef > mainPage
Helper class representing a namespace member in the navigation menu.
const HighlightedItem hiItem
virtual bool generateSourceFile() const =0
virtual QCString trLegendDocs()=0
virtual QCString trFileMembersDescription(bool extractAll)=0
std::string convertUTF8ToLower(const std::string &input)
Converts the input string into a lower case version, also taking into account non-ASCII characters th...
virtual QCString trNamespaceDocumentation()=0
The common base class of all entity definitions found in the sources.
virtual QCString trFunctionAndProc()=0
static void writeClassLinkForMember(OutputList &ol, const MemberDef *md, const QCString &separator, QCString &prevClassName)
virtual bool isSignal() const =0
int documentedClassMembers[CMHL_Total]
virtual QCString localName() const =0
static QCString getProtectionName(int prot)
An abstract interface of a namespace symbol.
static int countNamespaces()
void startIndexItem(const QCString &ref, const QCString &file)
virtual QCString trFileList()=0
virtual QCString getOutputFileBase() const =0
static int countClassHierarchy(ClassDef::CompoundType ct)
virtual const ClassLinkedRefMap & getClasses() const =0
virtual QCString trClassDocumentation()=0
static void writeUserGroupStubPage(OutputList &ol, LayoutNavEntry *lne)
void docify(const QCString &s)
void addClassMemberNameToIndex(const MemberDef *md)
static void writeConceptList(const ConceptLinkedRefMap &concepts, FTVHelp *ftv, bool addToIndex)
static const NmhlInfo * getNmhlInfo(size_t hl)
static void writeClassTreeInsideNamespaceElement(const NamespaceDef *nd, FTVHelp *ftv, bool rootOnly, bool addToIndex, ClassDef::CompoundType ct)
static ClassLinkedMap * hiddenClassLinkedMap
uint length() const
Returns the length of the string, not counting the 0-terminator.
void endTitleHead(const QCString &fileName, const QCString &name)
virtual ClassLinkedRefMap getExceptions() const =0
int annotatedInterfacesPrinted
static ConceptLinkedMap * conceptLinkedMap
static void writeIndex(OutputList &ol)
static void writeDirHierarchy(OutputList &ol, FTVHelp *ftv, bool addToIndex)
static void writeIndexHierarchyEntries(OutputList &ol, const LayoutNavEntryList &entries)
static void writeNamespaceTree(const NamespaceLinkedRefMap &nsLinkedMap, FTVHelp *ftv, bool rootOnly, bool addToIndex)
virtual QCString trSequences()=0
virtual int getDefLine() const =0
A model of a directory symbol.
static void endQuickIndexList(OutputList &ol)
static void writeNamespaceLinkForMember(OutputList &ol, const MemberDef *md, const QCString &separator, QCString &prevNamespaceName)
QCString filterTitle(const QCString &title)
bool isEmpty() const
Returns TRUE iff the string is empty
LayoutNavEntry * find(LayoutNavEntry::Kind k, const QCString &file=QCString()) const
bool classHasVisibleChildren(const ClassDef *cd)
static void writeClassTreeToOutput(OutputList &ol, const BaseClassList &bcl, int level, FTVHelp *ftv, bool addToIndex, ClassDefSet &visitedClasses)
void initFileMemberIndices()
virtual QCString trConceptDocumentation()=0
virtual QCString trModules()=0
static PageLinkedMap * pageLinkedMap
static IndexList * indexList
virtual QCString groupTitle() const =0
static void writeExampleIndex(OutputList &ol)
CompoundType
The various compound types
int documentedFileMembers[FMHL_Total]
void writeSplitBar(const QCString &name)
bool namespaceHasNestedClass(const NamespaceDef *nd, bool filterClasses, ClassDef::CompoundType ct)
void writeString(const QCString &text)
static void writeDirTreeNode(OutputList &ol, const DirDef *dd, int level, FTVHelp *ftv, bool addToIndex)
virtual ClassLinkedRefMap getInterfaces() const =0
virtual const PageLinkedRefMap & getSubPages() const =0
virtual const FileList & getFiles() const =0
virtual MemberList * getMemberList(MemberListType lt) const =0
SrcLangExt
Language as given by extension
virtual QCString trTypeDocumentation()=0
void addContentsItem(bool isDir, const QCString &name, const QCString &ref, const QCString &file, const QCString &anchor, bool separateIndex, bool addToNavIndex, const Definition *def)
static void writeGraphicalClassHierarchy(OutputList &ol)
const QCString listDefaultIntroText
static NamespaceDefMutable * globalScope
bool namespaceHasNestedNamespace(const NamespaceDef *nd)
AnnotatedIndexContext(int numAnno, int numPrint, LayoutNavEntry::Kind lk, LayoutNavEntry::Kind fk, const QCString &title, const QCString &intro, ClassDef::CompoundType ct, const QCString &fn, HighlightedItem hi)
virtual QCString trExceptionHierarchyDescription()=0
std::unique_ptr< ClassDef > Ptr
virtual QCString trNamespaceMemberDescription(bool extractAll)=0
void MemberIndexMap_add(MemberIndexMap &map, const std::string &letter, const MemberDef *md)
virtual QCString trRelatedPages()=0
static void startQuickIndexList(OutputList &ol, bool letterTabs=FALSE)
virtual bool isLinkableInProject() const =0
returns TRUE iff a link is possible to this item within this project.
void writeGraphicalHierarchy(DotGfxHierarchyTable &g)
void generateTreeViewInline(TextStream &t)
QCString correctURL(const QCString &url, const QCString &relPath)
Corrects URL url according to the relative path relPath.
virtual QCString trDocumentation()=0
virtual QCString trEnumerationValues()=0
virtual QCString trEvents()=0
virtual QCString trConceptIndex()=0
virtual QCString trEnumerations()=0
virtual bool isLinkableInProject() const =0
static void countRelatedPages(int &docPages, int &indexPages)
virtual bool isVisibleInHierarchy() const =0
the class is visible in a class diagram, or class hierarchy
virtual const GroupList & getSubGroups() const =0
virtual QCString trInterfaceHierarchy()=0
char & at(size_t i)
Returns a reference to the character at index i.
Text streaming class that buffers data.
static DirLinkedMap * dirLinkedMap
virtual Protection protection() const =0
Return the protection level (Public,Protected,Private) in which this compound was found.
int find(char c, int index=0, bool cs=TRUE) const
static void endQuickIndexItem(OutputList &ol)
static std::array< MemberIndexMap, NMHL_Total > g_namespaceIndexLetterUsed
virtual QCString trRelatedPagesDescription()=0
static const CmhlInfo * getCmhlInfo(size_t hl)
virtual int briefLine() const =0
virtual bool isDictionary() const =0
static void writeAnnotatedStructIndex(OutputList &ol)
NamespaceDef * getResolvedNamespace(const QCString &name)
virtual bool isProperty() const =0
void endFileWithNavPath(const Definition *d, OutputList &ol)
virtual bool isSimple() const =0
virtual QCString trGotoGraphicalHierarchy()=0
virtual bool isASubGroup() const =0
virtual QCString getReference() const =0
virtual QCString trFileDocumentation()=0
const QCString fileBaseName
virtual bool hasSubPages() const =0
void warn(const QCString &file, int line, const char *fmt,...)
static void writeConceptRootList(FTVHelp *ftv, bool addToIndex)
virtual SrcLangExt getLanguage() const =0
Returns the programming language this definition was written in.
std::string letter() const
@ HLI_AnnotatedExceptions
virtual QCString trInterfaceDocumentation()=0
virtual bool isSequence() const =0
void endTextBlock(bool paraBreak=FALSE)
static void writeMemberToIndex(const Definition *def, const MemberDef *md, bool addToIndex)
static int countClassesInTreeList(const ClassLinkedMap &cl, ClassDef::CompoundType ct)
static void writeFileLinkForMember(OutputList &ol, const MemberDef *md, const QCString &separator, QCString &prevFileName)
virtual const ClassDef * templateMaster() const =0
Returns the template master of which this class is an instance.
A model of a page symbol.
A model of a group of symbols.
static FileNameLinkedMap * inputNameLinkedMap
virtual QCString trExceptionList()=0
static void writeFileMemberIndex(OutputList &ol)
virtual QCString includeName() const =0
bool classVisibleInIndex(const ClassDef *cd)
virtual bool isLinkableInProject() const =0
virtual QCString anchor() const =0
static void writeClassTreeInsideNamespace(const NamespaceLinkedRefMap &nsLinkedMap, FTVHelp *ftv, bool rootOnly, bool addToIndex, ClassDef::CompoundType ct)
virtual QCString getOutputFileBase() const =0
Class representing a list of output generators that are written to in parallel.
virtual void setClassName(const QCString &name)=0
static void writeAnnotatedIndexGeneric(OutputList &ol, const AnnotatedIndexContext ctx)
Represents of a member definition list with configurable title.
A model of a class/file/namespace member symbol.
static void writeClassTree(const ListType &cl, FTVHelp *ftv, bool addToIndex, bool globalOnly, ClassDef::CompoundType ct)
static void writeAnnotatedIndex(OutputList &ol)
virtual const QCString shortName() const =0
static void writeGraphicalExceptionHierarchy(OutputList &ol)
virtual const DirList & getDirs() const =0
FileDef * createFileDef(const QCString &p, const QCString &n, const QCString &ref, const QCString &dn)
virtual QCString trExceptionHierarchy()=0
@ isNamespaceDocumentation
A abstract class representing of a compound symbol.
virtual bool isFriend() const =0
#define MAX_ITEMS_BEFORE_QUICK_INDEX
static void writeNamespaceTreeElement(const NamespaceDef *nd, FTVHelp *ftv, bool rootOnly, bool addToIndex)
void startTextBlock(bool dense=FALSE)
void disable(OutputGenerator::OutputType o)
void addNamespaceMemberNameToIndex(const MemberDef *md)
QCString left(size_t len) const
virtual QCString trVariables()=0
bool fileVisibleInIndex(const FileDef *fd, bool &genSourceFile)
virtual QCString name() const =0
virtual bool isDefine() const =0
virtual QCString trStructListDescription()=0
void addContentsItem(bool isDir, const QCString &name, const QCString &ref, const QCString &file, const QCString &anchor, bool separateIndex=FALSE, bool addToNavIndex=FALSE, const Definition *def=0)
virtual bool hasSections() const =0
virtual bool isVariable() const =0
virtual const MemberVector & enumFieldList() const =0
#define MAX_ITEMS_BEFORE_MULTIPAGE_INDEX
virtual bool isAnonymous() const =0
virtual QCString trCode()=0
void writeAnchor(const QCString &fileName, const QCString &name)
virtual QCString trExamplesDescription()=0
static QCString letterToLabel(const QCString &startLetter)
virtual QCString getOutputFileBase() const =0
Returns the unique base name (without extension) of the class's file on disk
std::set< std::string > UsedIndexLetters
static void startQuickIndexItem(OutputList &ol, const QCString &l, bool hl, bool compact, bool &first)
std::vector< std::unique_ptr< LayoutNavEntry > > LayoutNavEntryList
virtual const BaseClassList & baseClasses() const =0
Returns the list of base classes from which this class directly inherits.
static void writeGraphicalInterfaceHierarchy(OutputList &ol)
const ClassDef * get_pointer(const Ptr &p)
virtual bool isSlot() const =0
virtual QCString trClassHierarchy()=0
void startHeaderSection()
virtual ClassLinkedRefMap getClasses() const =0
static void writeQuickMemberIndex(OutputList &ol, const MemberIndexMap &map, const std::string &page, QCString fullName, bool multiPage)
virtual QCString displayName(bool=TRUE) const =0
virtual bool isVisible() const =0
void sortMemberIndexLists()
int qstricmp(const char *str1, const char *str2)
Translator * theTranslator
virtual bool isReference() const =0
static void sortMemberIndexList(MemberIndexMap &map)
static void writeClassMemberIndexFiltered(OutputList &ol, ClassMemberHighlight hl)
virtual QCString name() const =0
static GroupLinkedMap * groupLinkedMap
virtual QCString trInterfaceList()=0
virtual QCString trFileListDescription(bool extractAll)=0
virtual ClassLinkedRefMap getClasses() const =0
returns the classes nested into this class
const LayoutNavEntry::Kind listKind
const QCString listDefaultTitleText
const char * JAVASCRIPT_LICENSE_TEXT
Class representing a cell in the alphabetical class index.
virtual const ClassDef * getClassDef() const =0
std::string getUTF8CharAt(const std::string &input, size_t pos)
Returns the UTF8 character found at byte position pos in the input string.
virtual QCString trInterfaceHierarchyDescription()=0
void startIndexSection(IndexSections is)
static void writeMemberList(OutputList &ol, bool useSections, const std::string &page, const MemberIndexMap &memberIndexMap, Definition::DefType type)
void renderMemberIndicesAsJs(std::ostream &t, const int *numDocumented, const std::array< MemberIndexMap, total > &memberLists, const T *(*getInfo)(size_t hl))
static void writePageIndex(OutputList &ol)
QCString getLanguageSpecificSeparator(SrcLangExt lang, bool classScope)
Returns the scope separator to use given the programming language lang
virtual QCString trMainPage()=0
void countDataStructures()
virtual bool isFunction() const =0
void startFile(OutputList &ol, const QCString &name, const QCString &manName, const QCString &title, HighlightedItem hli, bool additionalIndices, const QCString &altSidebarName)
virtual MemberList * getMemberList(MemberListType lt) const =0
static void writeFileMemberIndexFiltered(OutputList &ol, FileMemberHighlight hl)
virtual QCString briefDescription(bool abbreviate=FALSE) const =0
virtual QCString getOutputFileBase() const =0
virtual const NamespaceLinkedRefMap & getNamespaces() const =0
A vector of MemberDef object
virtual const NamespaceDef * getNamespaceDef() const =0
static void writeClassTreeForList(OutputList &ol, const ClassLinkedMap &cl, bool &started, FTVHelp *ftv, bool addToIndex, ClassDef::CompoundType ct, ClassDefSet &visitedClasses)
void startProjectNumber()
static void writeGroupIndex(OutputList &ol)
@ HLI_AnnotatedInterfaces
static void writeNamespaceMemberIndexFiltered(OutputList &ol, NamespaceMemberHighlight hl)
#define Config_updateBool(name, value)
CmhlInfo(const char *fn, const QCString &t)
virtual QCString getPath() const =0
virtual QCString trConceptList()=0
static bool renderQuickLinksAsJs(std::ostream &t, LayoutNavEntry *root, bool first)
virtual QCString navigationPathAsString() const =0
const T * find(const std::string &key) const
Find an object given the key.
std::string str() const
Return the contents of the buffer as a std::string object
virtual const GroupList & partOfGroups() const =0
int countVisibleMembers(const NamespaceDef *nd)
virtual NamespaceLinkedRefMap getNamespaces() const =0
virtual QCString trTypedefs()=0
static const FmhlInfo * getFmhlInfo(size_t hl)
void addFileMemberNameToIndex(const MemberDef *md)
virtual bool isStrong() const =0
void startIndexValue(bool b)
static bool mainPageHasOwnTitle()
virtual QCString trConceptListDescription(bool extractAll)=0
virtual DefType definitionType() const =0
virtual const BaseClassList & subClasses() const =0
Returns the list of sub classes that directly derive from this class
void writeQuickLinks(bool compact, HighlightedItem hli, const QCString &file)
static bool dirHasVisibleChildren(const DirDef *dd)
Representation of a legend explaining the meaning of boxes, arrows, and colors
virtual QCString briefFile() const =0
void startTextLink(const QCString &file, const QCString &anchor)
static void writeAlphabeticalInterfaceIndex(OutputList &ol)
static void writeSingleFileIndex(OutputList &ol, const FileDef *fd)
virtual bool isForeign() const =0
virtual QCString trExceptionListDescription()=0
virtual const MemberLists & getMemberLists() const =0
virtual CompoundType compoundType() const =0
Returns the type of compound this is, i.e.
int getPrefixIndex(const QCString &name)
virtual QCString trCompoundListDescription()=0
virtual const PageLinkedRefMap & getPages() const =0
Various UTF8 related helper functions.
virtual QCString getReference() const =0
virtual QCString trProperties()=0
QCString fixSpaces(const QCString &s)
bool compareFileDefs(const FileDef *fd1, const FileDef *fd2)
static int countAnnotatedClasses(int *cp, ClassDef::CompoundType ct)
static void writeGroupHierarchy(OutputList &ol, FTVHelp *ftv, bool addToIndex)
virtual QCString trGotoTextualHierarchy()=0
QCString mid(size_t index, size_t len=static_cast< size_t >(-1)) const
QCString substitute(const QCString &s, const QCString &src, const QCString &dst)
substitute all occurrences of src in s by dst
void initNamespaceMemberIndices()
static void writeHierarchicalIndex(OutputList &ol)
virtual bool isLinkableInProject() const =0
virtual QCString trExceptionIndex()=0
void extractNamespaceName(const QCString &scopeName, QCString &className, QCString &namespaceName, bool allowEmptyClass)
virtual QCString getOutputFileBase() const =0
virtual ConceptLinkedRefMap getConcepts() const =0
virtual QCString trModuleDocumentation()=0
static void writeAlphabeticalIndex(OutputList &ol)
static void writeMenuData()
static std::vector< bool > indexWritten
virtual bool isLinkable() const =0
virtual bool isDocumentationFile() const =0
static void writeHierarchicalInterfaceIndex(OutputList &ol)
void startTitleHead(const QCString &fileName)
#define Config_getBool(name)
virtual QCString getOutputFileBase() const =0
void endIndexItem(const QCString &ref, const QCString &file)
static void endIndexHierarchy(OutputList &ol, int level)
virtual QCString trDefines()=0
const ClassDef * classDef() const
static QCString htmlFileExtension
virtual const MemberDef * getEnumScope() const =0
virtual bool hasDocumentation() const =0
static SectionManager & instance()
returns a reference to the singleton
static void writeGroupTreeNode(OutputList &ol, const GroupDef *gd, int level, FTVHelp *ftv, bool addToIndex)
virtual bool isEnumerate() const =0
virtual QCString getReference() const =0
If this class originated from a tagfile, this will return the tag file reference
void msg(const char *fmt,...)
@ MemberListType_documentationLists
void writeGraphInfo(OutputList &ol)
static LayoutDocManager & instance()
Returns a reference to this singleton.
virtual QCString trNamespaceList()=0
virtual bool isReference() const =0
Returns TRUE if this class is imported via a tag file
virtual QCString trCompoundList()=0
void writeIndexHierarchy(OutputList &ol)
void endIndexSection(IndexSections is)
virtual Definition * getOuterScope() const =0
static std::array< MemberIndexMap, CMHL_Total > g_classIndexLetterUsed
virtual QCString trModulesIndex()=0
virtual bool isEnumValue() const =0
virtual QCString trLegendTitle()=0
void parseText(const QCString &textStr)
virtual QCString trAll()=0
static void writeAlphabeticalExceptionIndex(OutputList &ol)
virtual QCString trExampleDocumentation()=0
const char * qPrint(const char *s)
virtual QCString trNamespaceListDescription(bool extractAll)=0
virtual const FileDef * getFileDef() const =0
#define Config_getString(name)
void writeGraph(const QCString &path)
int documentedNamespaceMembers[NMHL_Total]
AlphaIndexTableCell(int row, int col, const std::string &letter, const ClassDef *cd)
virtual QCString getDefFileName() const =0
class that provide information about a section.
void generateDoc(const QCString &fileName, int startLine, const Definition *ctx, const MemberDef *md, const QCString &docStr, bool indexWords, bool isExample, const QCString &exampleName, bool singleLine, bool linkFromIndex, bool markdownSupport)
static bool insideMainPage
static void writeClassHierarchy(OutputList &ol, FTVHelp *ftv, bool addToIndex, ClassDef::CompoundType ct)
const ClassDef::CompoundType compoundType
Helper class representing a class member in the navigation menu.
virtual QCString trCompoundMembersDescription(bool extractAll)=0
static void writeNamespaceMembers(const NamespaceDef *nd, bool addToIndex)
static NamespaceLinkedMap * namespaceLinkedMap
virtual QCString trStructIndex()=0
virtual QCString displayName(bool includeScope=TRUE) const =0
Returns the name as it is appears in the documentation
static bool quickLinkVisible(LayoutNavEntry::Kind kind)
void pushGeneratorState()
const char * data() const
Returns a pointer to the contents of the string in the form of a 0-terminated C string
void initClassMemberIndices()
virtual const FileList & getFiles() const =0
Helper class representing a file member in the navigation menu.
A model of a file symbol.
QCString convertToJSString(const QCString &s)
virtual QCString title() const =0
static std::array< MemberIndexMap, FMHL_Total > g_fileIndexLetterUsed
static void writeNamespaceMemberIndex(OutputList &ol)
virtual QCString trNamespaceMembers()=0
virtual QCString trReferenceManual()=0
virtual QCString trFunctions()=0
virtual QCString trDictionaries()=0
void writeFooter(const QCString &navPath)
static void writePages(const PageDef *pd, FTVHelp *ftv)
static QCString stripFromPath(const QCString &path, const StringVector &l)
void startPageDoc(const QCString &pageTitle)
static void writeNamespaceIndex(OutputList &ol)
void startIndexListItem()
virtual QCString trStructList()=0
int annotatedExceptionsPrinted
static void countFiles(int &htmlFiles, int &files)
static void writeHierarchicalExceptionIndex(OutputList &ol)
A class that generates a dynamic tree view side panel.
virtual QCString trDesignUnitIndex()=0
int annotatedStructsPrinted
void writeObjectLink(const QCString &ref, const QCString &file, const QCString &anchor, const QCString &name)
Represents a graphical class hierarchy
static void writeConceptTreeInsideNamespace(const NamespaceLinkedRefMap &nsLinkedMap, FTVHelp *ftv, bool rootOnly, bool addToIndex)
ClassDefMutable * toClassDefMutable(Definition *d)
virtual QCString trExceptionDocumentation()=0
static void writeAnnotatedInterfaceIndex(OutputList &ol)
static void writeClassMemberIndex(OutputList &ol)
virtual ClassLinkedRefMap getStructs() const =0
virtual const DirList & subDirs() const =0
std::string convertUTF8ToUpper(const std::string &input)
Converts the input string into a upper case version, also taking into account non-ASCII characters th...
virtual QCString trInterfaceListDescription()=0
std::vector< const MemberDef * > MemberIndexList
virtual QCString trInterfaceIndex()=0
virtual QCString trExamples()=0
virtual QCString trCompoundIndexFortran()=0
static ClassLinkedMap * classLinkedMap
void startFile(const QCString &name, const QCString &manName, const QCString &title)
static void writeConceptTreeInsideNamespaceElement(const NamespaceDef *nd, FTVHelp *ftv, bool rootOnly, bool addToIndex)
virtual QCString getOutputFileBase() const =0
virtual bool isRelated() const =0
virtual QCString trNamespaceIndex()=0
A bunch of utility functions.
const LayoutNavEntryList & children() const
QCString baseFile() const
virtual QCString typeString() const =0
virtual QCString trStructDocumentation()=0
std::vector< BaseClassDef > BaseClassList
virtual QCString trFileIndex()=0
void enable(OutputGenerator::OutputType o)
virtual QCString trModuleIndex()=0
static void startIndexHierarchy(OutputList &ol, int level)
static int countConcepts()
virtual bool visibleInIndex() const =0
virtual bool isLinkable() const =0
return TRUE iff a link to this class is possible (either within this project, or as a cross-reference...
QCString convertToId(const QCString &s)
virtual QCString trFileMembers()=0
virtual QCString trRelatedFunctions()=0
A list of MemberDef objects as shown in documentation sections.
QCString & prepend(const char *s)
void writePageLink(const QCString &name, bool first)
virtual QCString trCompoundIndex()=0
virtual bool isEvent() const =0
uint qstrlen(const char *str)
void startParagraph(const QCString &classDef=QCString())
std::set< const ClassDef * > ClassDefSet
virtual const GroupDef * getGroupDef() const =0
void endFile(OutputList &ol, bool skipNavIndex, bool skipEndContents, const QCString &navPath)
const int maxItemsBeforeQuickIndex
virtual QCString trHierarchicalIndex()=0
static PageLinkedMap * exampleLinkedMap
virtual QCString anchor() const =0
void addMembersToIndex(T *def, LayoutDocManager::LayoutPart part, const QCString &name, const QCString &anchor, bool addToIndex=TRUE, bool preventSeparateIndex=FALSE, const ConceptLinkedRefMap *concepts=nullptr)
This is an alternative implementation of QCString.