My Project
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Classes | Macros | Functions | Variables
index.cpp File Reference

This file contains functions for the various index pages. More...

#include <stdlib.h>
#include <qtextstream.h>
#include <qdatetime.h>
#include <qdir.h>
#include <qregexp.h>
#include "message.h"
#include "index.h"
#include "doxygen.h"
#include "config.h"
#include "filedef.h"
#include "outputlist.h"
#include "util.h"
#include "groupdef.h"
#include "language.h"
#include "htmlgen.h"
#include "htmlhelp.h"
#include "ftvhelp.h"
#include "dot.h"
#include "pagedef.h"
#include "dirdef.h"
#include "vhdldocgen.h"
#include "layout.h"
#include "memberlist.h"
#include "classlist.h"
#include "namespacedef.h"
#include "filename.h"

Go to the source code of this file.

Classes

class  MemberIndexList
 
class  PrefixIgnoreClassList
 
class  AlphaIndexTableCell
 
class  AlphaIndexTableRows
 
class  AlphaIndexTableRowsIterator
 
class  AlphaIndexTableColumns
 
class  UsedIndexLetters
 
struct  CmhlInfo
 
struct  FmhlInfo
 
struct  NmhlInfo
 

Macros

#define MAX_ITEMS_BEFORE_MULTIPAGE_INDEX   200
 
#define MAX_ITEMS_BEFORE_QUICK_INDEX   30
 
#define NEXT_ROW()
 

Functions

static int countClassHierarchy ()
 
static void countFiles (int &htmlFiles, int &files)
 
static int countGroups ()
 
static int countDirs ()
 
static int countNamespaces ()
 
static int countAnnotatedClasses (int *cp)
 
static void countRelatedPages (int &docPages, int &indexPages)
 
void countDataStructures ()
 
static void startIndexHierarchy (OutputList &ol, int level)
 
static void endIndexHierarchy (OutputList &ol, int level)
 
static void startQuickIndexList (OutputList &ol, bool letterTabs=FALSE)
 
static void endQuickIndexList (OutputList &ol)
 
static void startQuickIndexItem (OutputList &ol, const char *l, bool hl, bool compact, bool &first)
 
static void endQuickIndexItem (OutputList &ol)
 
QCString fixSpaces (const QCString &s)
 
void startTitle (OutputList &ol, const char *fileName, Definition *def)
 
void endTitle (OutputList &ol, const char *fileName, const char *name)
 
void startFile (OutputList &ol, const char *name, const char *manName, const char *title, HighlightedItem hli, bool additionalIndices, const char *altSidebarName)
 
void endFile (OutputList &ol, bool skipNavIndex, bool skipEndContents, const QCString &navPath)
 
void endFileWithNavPath (Definition *d, OutputList &ol)
 
template<class T >
void addMembersToIndex (T *def, LayoutDocManager::LayoutPart part, const QCString &name, const QCString &anchor, bool addToIndex=TRUE, bool preventSeparateIndex=FALSE)
 
static void writeClassTree (OutputList &ol, const BaseClassList *bcl, bool hideSuper, int level, FTVHelp *ftv, bool addToIndex)
 
static bool dirHasVisibleChildren (DirDef *dd)
 
static void writeDirTreeNode (OutputList &ol, DirDef *dd, int level, FTVHelp *ftv, bool addToIndex)
 
static void writeDirHierarchy (OutputList &ol, FTVHelp *ftv, bool addToIndex)
 
static void writeClassTreeForList (OutputList &ol, ClassSDict *cl, bool &started, FTVHelp *ftv, bool addToIndex)
 
static void writeClassHierarchy (OutputList &ol, FTVHelp *ftv, bool addToIndex)
 
static int countClassesInTreeList (const ClassSDict &cl)
 
static void writeHierarchicalIndex (OutputList &ol)
 
static void writeGraphicalClassHierarchy (OutputList &ol)
 
static void writeSingleFileIndex (OutputList &ol, FileDef *fd)
 
static void writeFileIndex (OutputList &ol)
 
void writeClassTree (ClassSDict *clDict, FTVHelp *ftv, bool addToIndex, bool globalOnly)
 
static void writeNamespaceTree (NamespaceSDict *nsDict, FTVHelp *ftv, bool rootOnly, bool showClasses, bool addToIndex)
 
static void writeNamespaceIndex (OutputList &ol)
 
static void writeAnnotatedClassList (OutputList &ol)
 
static QCString letterToLabel (uint startLetter)
 
static void writeAlphabeticalClassList (OutputList &ol)
 
static void writeAlphabeticalIndex (OutputList &ol)
 
static void writeAnnotatedIndex (OutputList &ol)
 
static void writeClassLinkForMember (OutputList &ol, MemberDef *md, const char *separator, QCString &prevClassName)
 
static void writeFileLinkForMember (OutputList &ol, MemberDef *md, const char *separator, QCString &prevFileName)
 
static void writeNamespaceLinkForMember (OutputList &ol, MemberDef *md, const char *separator, QCString &prevNamespaceName)
 
static void writeMemberList (OutputList &ol, bool useSections, int page, const LetterToIndexMap< MemberIndexList > &memberLists, DefinitionIntf::DefType type)
 
void initClassMemberIndices ()
 
void addClassMemberNameToIndex (MemberDef *md)
 
void initNamespaceMemberIndices ()
 
void addNamespaceMemberNameToIndex (MemberDef *md)
 
void initFileMemberIndices ()
 
void addFileMemberNameToIndex (MemberDef *md)
 
static void writeQuickMemberIndex (OutputList &ol, const LetterToIndexMap< MemberIndexList > &charUsed, uint page, QCString fullName, bool multiPage)
 
static const CmhlInfogetCmhlInfo (int hl)
 
static void writeClassMemberIndexFiltered (OutputList &ol, ClassMemberHighlight hl)
 
static void writeClassMemberIndex (OutputList &ol)
 
static const FmhlInfogetFmhlInfo (int hl)
 
static void writeFileMemberIndexFiltered (OutputList &ol, FileMemberHighlight hl)
 
static void writeFileMemberIndex (OutputList &ol)
 
static const NmhlInfogetNmhlInfo (int hl)
 
static void writeNamespaceMemberIndexFiltered (OutputList &ol, NamespaceMemberHighlight hl)
 
static void writeNamespaceMemberIndex (OutputList &ol)
 
static void writeExampleIndex (OutputList &ol)
 
static bool mainPageHasOwnTitle ()
 
static void writePages (PageDef *pd, FTVHelp *ftv)
 
static void writePageIndex (OutputList &ol)
 
void writeGraphInfo (OutputList &ol)
 
static void writeGroupTreeNode (OutputList &ol, GroupDef *gd, int level, FTVHelp *ftv, bool addToIndex)
 
static void writeGroupHierarchy (OutputList &ol, FTVHelp *ftv, bool addToIndex)
 
static void writeGroupIndex (OutputList &ol)
 
static void writeUserGroupStubPage (OutputList &ol, LayoutNavEntry *lne)
 
static void writeIndex (OutputList &ol)
 
static void writeIndexHierarchyEntries (OutputList &ol, const QList< LayoutNavEntry > &entries)
 
static bool quickLinkVisible (LayoutNavEntry::Kind kind)
 
template<class T >
void renderMemberIndicesAsJs (FTextStream &t, int total, const int *numDocumented, const LetterToIndexMap< MemberIndexList > *memberLists, const T *(*getInfo)(int hl))
 
static bool renderQuickLinksAsJs (FTextStream &t, LayoutNavEntry *root, bool first)
 
static void writeMenuData ()
 
void writeIndexHierarchy (OutputList &ol)
 

Variables

int annotatedClasses
 
int annotatedClassesPrinted
 
int hierarchyClasses
 
int documentedFiles
 
int documentedGroups
 
int documentedNamespaces
 
int indexedPages
 
int documentedClassMembers [CMHL_Total]
 
int documentedFileMembers [FMHL_Total]
 
int documentedNamespaceMembers [NMHL_Total]
 
int documentedHtmlFiles
 
int documentedPages
 
int documentedDirs
 
static LetterToIndexMap
< MemberIndexList
g_memberIndexLetterUsed [CMHL_Total]
 
static LetterToIndexMap
< MemberIndexList
g_fileIndexLetterUsed [FMHL_Total]
 
static LetterToIndexMap
< MemberIndexList
g_namespaceIndexLetterUsed [NMHL_Total]
 
const int maxItemsBeforeQuickIndex = MAX_ITEMS_BEFORE_QUICK_INDEX
 
static QArray< bool > indexWritten
 

Detailed Description

This file contains functions for the various index pages.

Definition in file index.cpp.

Macro Definition Documentation

#define MAX_ITEMS_BEFORE_MULTIPAGE_INDEX   200
#define MAX_ITEMS_BEFORE_QUICK_INDEX   30

Definition at line 52 of file index.cpp.

#define NEXT_ROW ( )
Value:
do \
{ \
if (row>maxRows) maxRows=row; \
if (row>=rows && col<columns) \
{ \
col++; \
row=0; \
tableRows = new AlphaIndexTableRows; \
tableColumns.append(tableRows); \
} \
} \
while(0) \

Referenced by writeAlphabeticalClassList().

Function Documentation

void addClassMemberNameToIndex ( MemberDef md)

Definition at line 2265 of file index.cpp.

References LetterToIndexMap< T >::append(), CMHL_All, CMHL_Enums, CMHL_EnumValues, CMHL_Events, CMHL_Functions, CMHL_Properties, CMHL_Related, CMHL_Typedefs, CMHL_Variables, Config_getBool, documentedClassMembers, MemberDef::getClassDef(), MemberDef::getEnumScope(), getPrefixIndex(), getUtf8CodeToLower(), MemberDef::isEnumerate(), MemberDef::isEnumValue(), MemberDef::isEvent(), MemberDef::isForeign(), MemberDef::isFriend(), MemberDef::isFunction(), ClassDef::isLinkableInProject(), MemberDef::isLinkableInProject(), MemberDef::isProperty(), MemberDef::isRelated(), MemberDef::isSignal(), MemberDef::isSlot(), MemberDef::isStrong(), MemberDef::isTypedef(), MemberDef::isVariable(), Definition::name(), ClassDef::templateMaster(), and MemberDef::typeString().

Referenced by addMembersToIndex().

{
static bool hideFriendCompounds = Config_getBool(HIDE_FRIEND_COMPOUNDS);
ClassDef *cd=0;
if (md->isLinkableInProject() &&
(cd=md->getClassDef()) &&
cd->templateMaster()==0)
{
QCString n = md->name();
int index = getPrefixIndex(n);
uint letter = getUtf8CodeToLower(n,index);
if (!n.isEmpty())
{
bool isFriendToHide = hideFriendCompounds &&
(QCString(md->typeString())=="friend class" ||
QCString(md->typeString())=="friend struct" ||
QCString(md->typeString())=="friend union");
if (!(md->isFriend() && isFriendToHide) &&
(!md->isEnumValue() || (md->getEnumScope() && !md->getEnumScope()->isStrong()))
)
{
g_memberIndexLetterUsed[CMHL_All].append(letter,md);
}
if (md->isFunction() || md->isSlot() || md->isSignal())
{
}
else if (md->isVariable())
{
}
else if (md->isTypedef())
{
}
else if (md->isEnumerate())
{
g_memberIndexLetterUsed[CMHL_Enums].append(letter,md);
}
else if (md->isEnumValue() && md->getEnumScope() && !md->getEnumScope()->isStrong())
{
}
else if (md->isProperty())
{
}
else if (md->isEvent())
{
}
else if (md->isRelated() || md->isForeign() ||
(md->isFriend() && !isFriendToHide))
{
}
}
}
}
void addFileMemberNameToIndex ( MemberDef md)

Definition at line 2407 of file index.cpp.

References LetterToIndexMap< T >::append(), documentedFileMembers, FMHL_All, FMHL_Defines, FMHL_Enums, FMHL_EnumValues, FMHL_Functions, FMHL_Typedefs, FMHL_Variables, MemberDef::getEnumScope(), MemberDef::getFileDef(), getPrefixIndex(), getUtf8CodeToLower(), MemberDef::isDefine(), MemberDef::isEnumerate(), MemberDef::isEnumValue(), MemberDef::isFunction(), FileDef::isLinkableInProject(), MemberDef::isLinkableInProject(), MemberDef::isStrong(), MemberDef::isTypedef(), MemberDef::isVariable(), and Definition::name().

Referenced by addMembersToIndex().

{
FileDef *fd=md->getFileDef();
if (fd && fd->isLinkableInProject() && md->isLinkableInProject())
{
QCString n = md->name();
int index = getPrefixIndex(n);
uint letter = getUtf8CodeToLower(n,index);
if (!n.isEmpty())
{
if (!md->isEnumValue() || (md->getEnumScope() && !md->getEnumScope()->isStrong()))
{
g_fileIndexLetterUsed[FMHL_All].append(letter,md);
}
if (md->isFunction())
{
}
else if (md->isVariable())
{
}
else if (md->isTypedef())
{
}
else if (md->isEnumerate())
{
g_fileIndexLetterUsed[FMHL_Enums].append(letter,md);
}
else if (md->isEnumValue() && md->getEnumScope() && !md->getEnumScope()->isStrong())
{
}
else if (md->isDefine())
{
g_fileIndexLetterUsed[FMHL_Defines].append(letter,md);
}
}
}
}
template<class T >
void addMembersToIndex ( T *  def,
LayoutDocManager::LayoutPart  part,
const QCString &  name,
const QCString &  anchor,
bool  addToIndex = TRUE,
bool  preventSeparateIndex = FALSE 
)

Definition at line 300 of file index.cpp.

References IndexList::addContentsItem(), MemberDef::anchor(), ClassDef::anchor(), LayoutDocManager::Class, LayoutDocEntry::ClassNestedClasses, Config_getBool, IndexList::decContentsDepth(), ClassDef::displayName(), MemberDef::enumFieldList(), LayoutDocEntry::FileClasses, Definition::getOuterScope(), MemberDef::getOutputFileBase(), MemberDef::getReference(), Doxygen::globalScope, MemberDef::hasDocumentation(), IndexList::incContentsDepth(), Doxygen::indexList, LayoutDocManager::instance(), ClassDef::isEmbeddedInOuterScope(), MemberDef::isEnumerate(), ClassDef::isLinkable(), ClassDef::isSimple(), MemberDef::isStatic(), SDict< ClassDef >::Iterator, LayoutDocEntry::kind(), LayoutDocEntry::MemberDef, Definition::name(), LayoutDocEntry::NamespaceClasses, Definition::partOfGroups(), LayoutDocEntryMemberDef::type, DefinitionIntf::TypeClass, and DefinitionIntf::TypeGroup.

Referenced by writeClassTree(), writeDirHierarchy(), writeDirTreeNode(), and writeGroupTreeNode().

{
bool hasMembers = def->getMemberLists().count()>0 || def->getMemberGroupSDict()!=0;
def->getReference(),def->getOutputFileBase(),anchor,
hasMembers && !preventSeparateIndex,
addToIndex,
def);
int numClasses=0;
ClassSDict *classes = def->getClassSDict();
if (classes)
{
ClassDef *cd;
ClassSDict::Iterator it(*classes);
for (;(cd=it.current());++it)
{
if (cd->isLinkable()) numClasses++;
}
}
//printf("addMembersToIndex(def=%s hasMembers=%d numClasses=%d)\n",def->name().data(),hasMembers,numClasses);
if (hasMembers || numClasses>0)
{
QListIterator<LayoutDocEntry> eli(LayoutDocManager::instance().docEntries(part));
for (eli.toFirst();(lde=eli.current());++eli)
{
{
MemberList *ml = def->getMemberList(lmd->type);
if (ml)
{
MemberDef *md;
for (mi.toFirst();(md=mi.current());++mi)
{
MemberList *enumList = md->enumFieldList();
bool isDir = enumList!=0 && md->isEnumerate();
bool isAnonymous = md->name().find('@')!=-1;
static bool hideUndocMembers = Config_getBool(HIDE_UNDOC_MEMBERS);
static bool extractStatic = Config_getBool(EXTRACT_STATIC);
if (!isAnonymous &&
(!hideUndocMembers || md->hasDocumentation()) &&
(!md->isStatic() || extractStatic)
)
{
{
md->name(),md->getReference(),md->getOutputFileBase(),md->anchor(),FALSE,addToIndex);
}
else // inherited member
{
md->name(),def->getReference(),def->getOutputFileBase(),md->anchor(),FALSE,addToIndex);
}
}
if (isDir)
{
if (!isAnonymous)
{
}
MemberListIterator emli(*enumList);
MemberDef *emd;
for (emli.toFirst();(emd=emli.current());++emli)
{
if (!hideUndocMembers || emd->hasDocumentation())
{
if (emd->getOuterScope()==def || emd->getOuterScope()==Doxygen::globalScope)
{
emd->name(),emd->getReference(),emd->getOutputFileBase(),emd->anchor(),FALSE,addToIndex);
}
else // inherited member
{
emd->name(),def->getReference(),def->getOutputFileBase(),emd->anchor(),FALSE,addToIndex);
}
}
}
if (!isAnonymous)
{
}
}
}
}
}
)
{
if (classes)
{
ClassDef *cd;
ClassSDict::Iterator it(*classes);
for (;(cd=it.current());++it)
{
if (cd->isLinkable() && (cd->partOfGroups()==0 || def->definitionType()==Definition::TypeGroup))
{
static bool inlineSimpleStructs = Config_getBool(INLINE_SIMPLE_STRUCTS);
bool isNestedClass = def->definitionType()==Definition::TypeClass;
addToIndex && (isNestedClass || (cd->isSimple() && inlineSimpleStructs)),
preventSeparateIndex || cd->isEmbeddedInOuterScope());
}
}
}
}
}
}
}
void addNamespaceMemberNameToIndex ( MemberDef md)

Definition at line 2350 of file index.cpp.

References LetterToIndexMap< T >::append(), documentedNamespaceMembers, MemberDef::getEnumScope(), MemberDef::getNamespaceDef(), getPrefixIndex(), getUtf8CodeToLower(), MemberDef::isEnumerate(), MemberDef::isEnumValue(), MemberDef::isFunction(), NamespaceDef::isLinkableInProject(), MemberDef::isLinkableInProject(), MemberDef::isStrong(), MemberDef::isTypedef(), MemberDef::isVariable(), Definition::name(), NMHL_All, NMHL_Enums, NMHL_EnumValues, NMHL_Functions, NMHL_Typedefs, and NMHL_Variables.

Referenced by addMembersToIndex().

{
if (nd && nd->isLinkableInProject() && md->isLinkableInProject())
{
QCString n = md->name();
int index = getPrefixIndex(n);
uint letter = getUtf8CodeToLower(n,index);
if (!n.isEmpty())
{
if (!md->isEnumValue() || (md->getEnumScope() && !md->getEnumScope()->isStrong()))
{
}
if (md->isFunction())
{
}
else if (md->isVariable())
{
}
else if (md->isTypedef())
{
}
else if (md->isEnumerate())
{
}
else if (md->isEnumValue() && md->getEnumScope() && !md->getEnumScope()->isStrong())
{
}
}
}
}
static int countAnnotatedClasses ( int *  cp)
static

Definition at line 1556 of file index.cpp.

References Doxygen::classSDict, ClassDef::isEmbeddedInOuterScope(), ClassDef::isLinkableInProject(), SDict< ClassDef >::Iterator, and ClassDef::templateMaster().

Referenced by countDataStructures().

{
int count=0;
int countPrinted=0;
ClassDef *cd;
for (;(cd=cli.current());++cli)
{
if (cd->isLinkableInProject() && cd->templateMaster()==0)
{
{
countPrinted++;
}
count++;
}
}
*cp = countPrinted;
return count;
}
static int countClassesInTreeList ( const ClassSDict cl)
static

Definition at line 923 of file index.cpp.

References ClassDef::baseClasses(), hasVisibleRoot(), ClassDef::isVisibleInHierarchy(), SDict< ClassDef >::Iterator, and ClassDef::subClasses().

Referenced by countClassHierarchy().

{
int count=0;
ClassDef *cd;
for (;(cd=cli.current());++cli)
{
if (!hasVisibleRoot(cd->baseClasses())) // filter on root classes
{
if (cd->isVisibleInHierarchy()) // should it be visible
{
if (cd->subClasses()) // should have sub classes
{
count++;
}
}
}
}
return count;
}
static int countClassHierarchy ( )
static
void countDataStructures ( )
static int countDirs ( )
static

Definition at line 3232 of file index.cpp.

References Doxygen::directories, DirDef::isLinkableInProject(), and DirDef::visited.

Referenced by countDataStructures().

{
int count=0;
DirDef *dd;
for (dli.toFirst();(dd=dli.current());++dli)
{
{
dd->visited=FALSE;
count++;
}
}
return count;
}
static void countFiles ( int &  htmlFiles,
int &  files 
)
static

Definition at line 1063 of file index.cpp.

References doc, fileVisibleInIndex(), and Doxygen::inputNameList.

Referenced by countDataStructures().

{
htmlFiles=0;
files=0;
FileName *fn;
for (;(fn=fnli.current());++fnli)
{
FileNameIterator fni(*fn);
FileDef *fd;
for (;(fd=fni.current());++fni)
{
bool doc,src;
doc = fileVisibleInIndex(fd,src);
if (doc || src)
{
htmlFiles++;
}
if (doc)
{
files++;
}
}
}
}
static int countGroups ( )
static

Definition at line 3214 of file index.cpp.

References Doxygen::groupSDict, Definition::isReference(), SDict< GroupDef >::Iterator, and GroupDef::visited.

Referenced by countDataStructures().

{
int count=0;
GroupDef *gd;
for (gli.toFirst();(gd=gli.current());++gli)
{
if (!gd->isReference())
{
gd->visited=FALSE;
count++;
}
}
return count;
}
static int countNamespaces ( )
static

Definition at line 1306 of file index.cpp.

References NamespaceDef::isLinkableInProject(), SDict< NamespaceDef >::Iterator, and Doxygen::namespaceSDict.

Referenced by countDataStructures().

{
int count=0;
for (;(nd=nli.current());++nli)
{
if (nd->isLinkableInProject()) count++;
}
return count;
}
static void countRelatedPages ( int &  docPages,
int &  indexPages 
)
static

Definition at line 3071 of file index.cpp.

References PageDef::documentedPage(), SDict< PageDef >::Iterator, Doxygen::pageSDict, and PageDef::visibleInIndex().

Referenced by countDataStructures().

{
docPages=indexPages=0;
PageDef *pd=0;
for (pdi.toFirst();(pd=pdi.current());++pdi)
{
if ( pd->visibleInIndex())
{
indexPages++;
}
if ( pd->documentedPage())
{
docPages++;
}
}
}
static bool dirHasVisibleChildren ( DirDef dd)
static

Definition at line 541 of file index.cpp.

References fileVisibleInIndex(), DirDef::getFiles(), Definition::hasDocumentation(), and DirDef::subDirs().

Referenced by writeDirTreeNode().

{
if (dd->hasDocumentation()) return TRUE;
QListIterator<FileDef> fli(*dd->getFiles());
FileDef *fd;
for (fli.toFirst();(fd=fli.current());++fli)
{
bool genSourceFile;
if (fileVisibleInIndex(fd,genSourceFile))
{
return TRUE;
}
if (genSourceFile)
{
return TRUE;
}
}
QListIterator<DirDef> dli(dd->subDirs());
DirDef *subdd;
for (dli.toFirst();(subdd=dli.current());++dli)
{
{
return TRUE;
}
}
return FALSE;
}
void endFile ( OutputList ol,
bool  skipNavIndex,
bool  skipEndContents,
const QCString &  navPath 
)
void endFileWithNavPath ( Definition d,
OutputList ol 
)
static void endIndexHierarchy ( OutputList ol,
int  level 
)
static
static void endQuickIndexItem ( OutputList ol)
static

Definition at line 213 of file index.cpp.

References OutputList::writeString().

Referenced by writeClassMemberIndexFiltered(), writeFileMemberIndexFiltered(), writeNamespaceMemberIndexFiltered(), and writeQuickMemberIndex().

{
bool fancyTabs=TRUE;
if (fancyTabs) ol.writeString("</span>");
ol.writeString("</a>");
if (fancyTabs) ol.writeString("</li>\n");
}
static void endQuickIndexList ( OutputList ol)
static

Definition at line 170 of file index.cpp.

References OutputList::writeString().

Referenced by writeClassMemberIndexFiltered(), writeFileMemberIndexFiltered(), writeNamespaceMemberIndexFiltered(), and writeQuickMemberIndex().

{
bool fancyTabs = TRUE;
if (fancyTabs)
{
ol.writeString(" </ul>\n");
}
ol.writeString(" </div>\n");
}
void endTitle ( OutputList ol,
const char *  fileName,
const char *  name 
)
QCString fixSpaces ( const QCString &  s)
static const CmhlInfo* getCmhlInfo ( int  hl)
static

Definition at line 2498 of file index.cpp.

References Config_getBool, theTranslator, Translator::trAll(), Translator::trEnumerations(), Translator::trEnumerationValues(), Translator::trEvents(), VhdlDocGen::trFunctionAndProc(), Translator::trFunctions(), Translator::trProperties(), Translator::trRelatedFunctions(), Translator::trSubprograms(), Translator::trTypedefs(), and Translator::trVariables().

Referenced by renderQuickLinksAsJs(), and writeClassMemberIndexFiltered().

{
static bool fortranOpt = Config_getBool(OPTIMIZE_FOR_FORTRAN);
static bool vhdlOpt = Config_getBool(OPTIMIZE_OUTPUT_VHDL);
static CmhlInfo cmhlInfo[] =
{
CmhlInfo("functions", theTranslator->trAll()),
CmhlInfo("functions_func",
fortranOpt ? theTranslator->trSubprograms() :
theTranslator->trFunctions()),
CmhlInfo("functions_vars",theTranslator->trVariables()),
CmhlInfo("functions_type",theTranslator->trTypedefs()),
CmhlInfo("functions_enum",theTranslator->trEnumerations()),
CmhlInfo("functions_eval",theTranslator->trEnumerationValues()),
CmhlInfo("functions_prop",theTranslator->trProperties()),
CmhlInfo("functions_evnt",theTranslator->trEvents()),
CmhlInfo("functions_rela",theTranslator->trRelatedFunctions())
};
return &cmhlInfo[hl];
}
static const FmhlInfo* getFmhlInfo ( int  hl)
static

Definition at line 2675 of file index.cpp.

References Config_getBool, theTranslator, Translator::trAll(), Translator::trDefines(), Translator::trEnumerations(), Translator::trEnumerationValues(), VhdlDocGen::trFunctionAndProc(), Translator::trFunctions(), Translator::trSubprograms(), Translator::trTypedefs(), and Translator::trVariables().

Referenced by renderQuickLinksAsJs(), and writeFileMemberIndexFiltered().

{
static bool fortranOpt = Config_getBool(OPTIMIZE_FOR_FORTRAN);
static bool vhdlOpt = Config_getBool(OPTIMIZE_OUTPUT_VHDL);
static FmhlInfo fmhlInfo[] =
{
FmhlInfo("globals", theTranslator->trAll()),
FmhlInfo("globals_func",
fortranOpt ? theTranslator->trSubprograms() :
theTranslator->trFunctions()),
FmhlInfo("globals_vars",theTranslator->trVariables()),
FmhlInfo("globals_type",theTranslator->trTypedefs()),
FmhlInfo("globals_enum",theTranslator->trEnumerations()),
FmhlInfo("globals_eval",theTranslator->trEnumerationValues()),
FmhlInfo("globals_defs",theTranslator->trDefines())
};
return &fmhlInfo[hl];
}
static const NmhlInfo* getNmhlInfo ( int  hl)
static

Definition at line 2842 of file index.cpp.

References Config_getBool, theTranslator, Translator::trAll(), Translator::trEnumerations(), Translator::trEnumerationValues(), VhdlDocGen::trFunctionAndProc(), Translator::trFunctions(), Translator::trSubprograms(), Translator::trTypedefs(), and Translator::trVariables().

Referenced by renderQuickLinksAsJs(), and writeNamespaceMemberIndexFiltered().

{
static bool fortranOpt = Config_getBool(OPTIMIZE_FOR_FORTRAN);
static bool vhdlOpt = Config_getBool(OPTIMIZE_OUTPUT_VHDL);
static NmhlInfo nmhlInfo[] =
{
NmhlInfo("namespacemembers", theTranslator->trAll()),
NmhlInfo("namespacemembers_func",
fortranOpt ? theTranslator->trSubprograms() :
theTranslator->trFunctions()),
NmhlInfo("namespacemembers_vars",theTranslator->trVariables()),
NmhlInfo("namespacemembers_type",theTranslator->trTypedefs()),
NmhlInfo("namespacemembers_enum",theTranslator->trEnumerations()),
NmhlInfo("namespacemembers_eval",theTranslator->trEnumerationValues())
};
return &nmhlInfo[hl];
}
void initClassMemberIndices ( )

Definition at line 2255 of file index.cpp.

References SIntDict< T >::clear(), CMHL_Total, and documentedClassMembers.

Referenced by initDoxygen().

{
int j=0;
for (j=0;j<CMHL_Total;j++)
{
}
}
void initFileMemberIndices ( )

Definition at line 2397 of file index.cpp.

References SIntDict< T >::clear(), documentedFileMembers, and NMHL_Total.

Referenced by initDoxygen().

{
int j=0;
for (j=0;j<NMHL_Total;j++)
{
}
}
void initNamespaceMemberIndices ( )

Definition at line 2340 of file index.cpp.

References SIntDict< T >::clear(), documentedNamespaceMembers, and NMHL_Total.

Referenced by initDoxygen().

{
int j=0;
for (j=0;j<NMHL_Total;j++)
{
}
}
static QCString letterToLabel ( uint  startLetter)
static

Definition at line 1641 of file index.cpp.

References isId().

Referenced by renderMemberIndicesAsJs(), writeAlphabeticalClassList(), writeClassMemberIndexFiltered(), writeFileMemberIndexFiltered(), writeMemberList(), writeNamespaceMemberIndexFiltered(), and writeQuickMemberIndex().

{
char s[11]; // max 0x12345678 + '\0'
if (isId(startLetter)) // printable ASCII character
{
s[0]=(char)startLetter;
s[1]=0;
}
else
{
const char hex[]="0123456789abcdef";
int i=0;
s[i++]='0';
s[i++]='x';
if (startLetter>(1<<24)) // 4 byte character
{
s[i++]=hex[(startLetter>>28)&0xf];
s[i++]=hex[(startLetter>>24)&0xf];
}
if (startLetter>(1<<16)) // 3 byte character
{
s[i++]=hex[(startLetter>>20)&0xf];
s[i++]=hex[(startLetter>>16)&0xf];
}
if (startLetter>(1<<8)) // 2 byte character
{
s[i++]=hex[(startLetter>>12)&0xf];
s[i++]=hex[(startLetter>>8)&0xf];
}
// one byte character
s[i++]=hex[(startLetter>>4)&0xf];
s[i++]=hex[(startLetter>>0)&0xf];
s[i++]=0;
}
return s;
}
static bool mainPageHasOwnTitle ( )
static

Definition at line 3091 of file index.cpp.

References Config_getString, filterTitle(), Doxygen::mainPage, and mainPageHasTitle().

Referenced by writePages().

{
static QCString projectName = Config_getString(PROJECT_NAME);
QCString title;
{
title = filterTitle(Doxygen::mainPage->title());
}
return !projectName.isEmpty() && mainPageHasTitle() && qstricmp(title,projectName)!=0;
}
static bool quickLinkVisible ( LayoutNavEntry::Kind  kind)
static

Definition at line 4285 of file index.cpp.

References annotatedClasses, LayoutNavEntry::Classes, LayoutNavEntry::ClassHierarchy, LayoutNavEntry::ClassIndex, LayoutNavEntry::ClassList, LayoutNavEntry::ClassMembers, CMHL_All, Config_getBool, SDict< T >::count(), documentedClassMembers, documentedFileMembers, documentedGroups, documentedHtmlFiles, documentedNamespaceMembers, documentedNamespaces, LayoutNavEntry::Examples, Doxygen::exampleSDict, LayoutNavEntry::FileGlobals, LayoutNavEntry::FileList, LayoutNavEntry::Files, FMHL_All, hierarchyClasses, indexedPages, LayoutNavEntry::MainPage, LayoutNavEntry::Modules, LayoutNavEntry::NamespaceList, LayoutNavEntry::NamespaceMembers, LayoutNavEntry::Namespaces, NMHL_All, LayoutNavEntry::Pages, LayoutNavEntry::User, and LayoutNavEntry::UserGroup.

Referenced by renderQuickLinksAsJs().

{
static bool showFiles = Config_getBool(SHOW_FILES);
static bool showNamespaces = Config_getBool(SHOW_NAMESPACES);
switch (kind)
{
case LayoutNavEntry::MainPage: return TRUE;
case LayoutNavEntry::User: return TRUE;
case LayoutNavEntry::UserGroup: return TRUE;
case LayoutNavEntry::Namespaces: return documentedNamespaces>0 && showNamespaces;
case LayoutNavEntry::NamespaceList: return documentedNamespaces>0 && showNamespaces;
case LayoutNavEntry::Files: return documentedHtmlFiles>0 && showFiles;
case LayoutNavEntry::FileList: return documentedHtmlFiles>0 && showFiles;
//case LayoutNavEntry::Dirs: return documentedDirs>0;
}
return FALSE;
}
template<class T >
void renderMemberIndicesAsJs ( FTextStream t,
int  total,
const int *  numDocumented,
const LetterToIndexMap< MemberIndexList > *  memberLists,
const T *(*)(int hl)  getInfo 
)

Definition at line 4314 of file index.cpp.

References convertToJSString(), SIntDict< T >::Iterator::current(), endl(), Doxygen::htmlFileExtension, MemberIndexList::letter(), letterToLabel(), MAX_ITEMS_BEFORE_MULTIPAGE_INDEX, maxItemsBeforeQuickIndex, and SIntDict< T >::Iterator::toFirst().

Referenced by renderQuickLinksAsJs().

{
// index items per category member lists
bool firstMember=TRUE;
for (int i=0;i<total;i++)
{
if (numDocumented[i]>0)
{
t << ",";
if (firstMember)
{
t << "children:[";
firstMember=FALSE;
}
t << endl << "{text:'" << convertToJSString(getInfo(i)->title) << "',url:'"
<< convertToJSString(getInfo(i)->fname+Doxygen::htmlFileExtension) << "'";
// Check if we have many members, then add sub entries per letter...
// quick alphabetical index
bool quickIndex = numDocumented[i]>maxItemsBeforeQuickIndex;
if (quickIndex)
{
bool multiPageIndex=FALSE;
if (numDocumented[i]>MAX_ITEMS_BEFORE_MULTIPAGE_INDEX)
{
multiPageIndex=TRUE;
}
t << ",children:[" << endl;
bool firstLetter=TRUE;
for (it.toFirst();(ml=it.current());++it)
{
if (!firstLetter) t << "," << endl;
uint letter = ml->letter();
QCString is = letterToLabel(letter);
QCString ci = QString(QChar(letter)).utf8();
QCString anchor;
QCString extension=Doxygen::htmlFileExtension;
QCString fullName = getInfo(i)->fname;
if (!multiPageIndex || firstLetter)
anchor=fullName+extension+"#index_";
else // other pages of multi page index
anchor=fullName+"_"+is+extension+"#index_";
t << "{text:'" << convertToJSString(ci) << "',url:'"
<< convertToJSString(anchor+is) << "'}";
firstLetter=FALSE;
}
t << "]";
}
t << "}";
}
}
if (!firstMember)
{
t << "]";
}
}
static bool renderQuickLinksAsJs ( FTextStream t,
LayoutNavEntry root,
bool  first 
)
static

Definition at line 4375 of file index.cpp.

References LayoutNavEntry::children(), LayoutNavEntry::ClassMembers, CMHL_Total, convertToJSString(), documentedClassMembers, documentedFileMembers, documentedNamespaceMembers, endl(), LayoutNavEntry::FileGlobals, FMHL_Total, getCmhlInfo(), getFmhlInfo(), getNmhlInfo(), LayoutNavEntry::NamespaceMembers, NMHL_Total, quickLinkVisible(), and renderMemberIndicesAsJs().

Referenced by writeMenuData().

{
QListIterator<LayoutNavEntry> li(root->children());
int count=0;
for (li.toFirst();(entry=li.current());++li)
{
if (entry->visible() && quickLinkVisible(entry->kind())) count++;
}
if (count>0) // at least one item is visible
{
bool firstChild = TRUE;
if (!first) t << ",";
t << "children:[" << endl;
for (li.toFirst();(entry=li.current());++li)
{
if (entry->visible() && quickLinkVisible(entry->kind()))
{
if (!firstChild) t << "," << endl;
firstChild=FALSE;
QCString url = entry->url();
t << "{text:'" << convertToJSString(entry->title()) << "',url:'"
<< convertToJSString(url) << "'";
bool hasChildren=FALSE;
{
}
else if (entry->kind()==LayoutNavEntry::ClassMembers)
{
}
else if (entry->kind()==LayoutNavEntry::FileGlobals)
{
}
else // recursive into child list
{
hasChildren = renderQuickLinksAsJs(t,entry,FALSE);
}
if (hasChildren) t << "]";
t << "}";
}
}
}
return count>0;
}
void startFile ( OutputList ol,
const char *  name,
const char *  manName,
const char *  title,
HighlightedItem  hli,
bool  additionalIndices,
const char *  altSidebarName 
)
static void startIndexHierarchy ( OutputList ol,
int  level 
)
static
static void startQuickIndexItem ( OutputList ol,
const char *  l,
bool  hl,
bool  compact,
bool &  first 
)
static

Definition at line 180 of file index.cpp.

References OutputList::writeString().

Referenced by writeClassMemberIndexFiltered(), writeFileMemberIndexFiltered(), writeNamespaceMemberIndexFiltered(), and writeQuickMemberIndex().

{
bool fancyTabs = TRUE;
if (!first && compact && !fancyTabs) ol.writeString(" | ");
first=FALSE;
if (fancyTabs)
{
ol.writeString(" <li");
if (hl) ol.writeString(" class=\"current\"");
ol.writeString("><a ");
}
else
{
if (!compact) ol.writeString("<li>");
if (hl && compact)
{
ol.writeString("<a class=\"qindexHL\" ");
}
else
{
ol.writeString("<a class=\"qindex\" ");
}
}
ol.writeString("href=\"");
ol.writeString(l);
ol.writeString("\">");
if (fancyTabs)
{
ol.writeString("<span>");
}
}
static void startQuickIndexList ( OutputList ol,
bool  letterTabs = FALSE 
)
static

Definition at line 149 of file index.cpp.

References OutputList::writeString().

Referenced by writeClassMemberIndexFiltered(), writeFileMemberIndexFiltered(), writeNamespaceMemberIndexFiltered(), and writeQuickMemberIndex().

{
bool fancyTabs = TRUE;
if (fancyTabs)
{
if (letterTabs)
{
ol.writeString(" <div id=\"navrow4\" class=\"tabs3\">\n");
}
else
{
ol.writeString(" <div id=\"navrow3\" class=\"tabs2\">\n");
}
ol.writeString(" <ul class=\"tablist\">\n");
}
else
{
ol.writeString(" <div class=\"qindex\">");
}
}
void startTitle ( OutputList ol,
const char *  fileName,
Definition def 
)
static void writeAlphabeticalClassList ( OutputList ol)
static

Definition at line 1761 of file index.cpp.

References UsedIndexLetters::add(), ClassDef::anchor(), annotatedClasses, LetterToIndexMap< T >::append(), AlphaIndexTableCell::classDef(), ClassDef::className(), Doxygen::classSDict, Config_getInt, SIntDict< T >::Iterator::current(), OutputList::docify(), VhdlDocGen::ENTITYCLASS, extractNamespaceName(), Definition::getLanguage(), getLanguageSpecificSeparator(), NamespaceDef::getOutputFileBase(), ClassDef::getOutputFileBase(), getPrefixIndex(), ClassDef::getReference(), Definition::getReference(), getResolvedNamespace(), getUtf8CodeToLower(), NamespaceDef::isLinkable(), ClassDef::isLinkableInProject(), SDict< ClassDef >::Iterator, PrefixIgnoreClassList::letter(), AlphaIndexTableCell::letter(), letterToLabel(), Definition::name(), NEXT_ROW, ClassDef::protection(), AlphaIndexTableCell::row(), SIntDict< T >::sort(), SrcLangExt_VHDL, substitute(), ClassDef::templateMaster(), SIntDict< T >::Iterator::toFirst(), OutputList::writeNonBreakableSpace(), OutputList::writeObjectLink(), and OutputList::writeString().

Referenced by writeAlphabeticalIndex().

{
// What starting letters are used
UsedIndexLetters indexLettersUsed;
// first count the number of headers
ClassDef *cd;
uint startLetter=0;
int headerItems=0;
for (;(cd=cli.current());++cli)
{
if (cd->isLinkableInProject() && cd->templateMaster()==0)
{
continue;
int index = getPrefixIndex(cd->className());
//printf("name=%s index=%d %d\n",cd->className().data(),index,cd->protection());
startLetter=getUtf8CodeToLower(cd->className(),index);
indexLettersUsed.add(startLetter);
}
}
indexLettersUsed.sort();
// write quick link index (row of letters)
QCString alphaLinks = "<div class=\"qindex\">";
SIntDict<uint>::Iterator it(indexLettersUsed);
uint *pLetter;
for (it.toFirst();(pLetter=it.current());++it)
{
if (headerItems) alphaLinks += "&#160;|&#160;";
headerItems++;
QCString li = letterToLabel(*pLetter);
QCString ls = QString(QChar(*pLetter)).utf8();
alphaLinks += (QCString)"<a class=\"qindex\" href=\"#letter_" +
li + "\">" +
ls + "</a>";
}
alphaLinks += "</div>\n";
ol.writeString(alphaLinks);
// the number of columns in the table
const int columns = Config_getInt(COLS_IN_ALPHA_INDEX);
int i,j;
int totalItems = headerItems*2 + annotatedClasses; // number of items in the table (headers span 2 items)
int rows = (totalItems + columns - 1)/columns; // number of rows in the table
//printf("headerItems=%d totalItems=%d columns=%d rows=%d itemsInLastRow=%d\n",
// headerItems,totalItems,columns,rows,itemsInLastRow);
// Keep a list of classes for each starting letter
AlphaIndexTableColumns tableColumns;
// fill the columns with the class list (row elements in each column,
// expect for the columns with number >= itemsInLastRow, which get one
// item less.
//int icount=0;
startLetter=0;
for (cli.toFirst();(cd=cli.current());++cli)
{
continue;
if (cd->isLinkableInProject() && cd->templateMaster()==0)
{
int index = getPrefixIndex(cd->className());
startLetter=getUtf8CodeToLower(cd->className(),index);
// Do some sorting again, since the classes are sorted by name with
// prefix, which should be ignored really.
{
{
classesByLetter.append(startLetter,cd);
}
}
else
{
classesByLetter.append(startLetter,cd);
}
}
}
#define NEXT_ROW() \
do \
{ \
if (row>maxRows) maxRows=row; \
if (row>=rows && col<columns) \
{ \
col++; \
row=0; \
tableRows = new AlphaIndexTableRows; \
tableColumns.append(tableRows); \
} \
} \
while(0) \
tableColumns.append(tableRows);
int col=0,row=0,maxRows=0;
for (lit.toFirst();(cl=lit.current());++lit)
{
uint l = cl->letter();
// add special header cell
tableRows->append(new AlphaIndexTableCell(row,col,l,(ClassDef*)0x8));
row++;
tableRows->append(new AlphaIndexTableCell(row,col,0,(ClassDef*)0x8));
row++;
cit.toFirst();
ClassDef *cd = cit.current();
++cit;
tableRows->append(new AlphaIndexTableCell(row,col,0,cd));
row++;
for (;(cd=cit.current()); ++cit)
{
// add normal cell
tableRows->append(new AlphaIndexTableCell(row,col,0,cd));
row++;
}
}
// create row iterators for each column
for (i=0;i<columns;i++)
{
if (i<(int)tableColumns.count())
{
colIterators[i] = new AlphaIndexTableRowsIterator(*tableColumns.at(i));
}
else // empty column
{
colIterators[i] = 0;
}
}
ol.writeString("<table class=\"classindex\">\n");
// generate table
for (i=0;i<=maxRows;i++) // foreach table row
{
//printf("writing row %d\n",i);
//ol.nextTableRow();
ol.writeString("<tr>");
// the last column may contain less items then the others
//int colsInRow = (i<rows-1) ? columns : itemsInLastRow;
//printf("row [%d]\n",i);
for (j=0;j<columns;j++) // foreach table column
{
if (colIterators[j])
{
AlphaIndexTableCell *cell = colIterators[j]->current();
if (cell)
{
if (cell->row()==i)
{
if (cell->letter()!=0)
{
QCString s = letterToLabel(cell->letter());
ol.writeString("<td rowspan=\"2\" valign=\"bottom\">");
ol.writeString("<a name=\"letter_");
ol.writeString(s);
ol.writeString("\"></a>");
ol.writeString("<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">"
"<tr>"
"<td><div class=\"ah\">&#160;&#160;");
ol.writeString(QString(QChar(cell->letter())).utf8());
ol.writeString( "&#160;&#160;</div>"
"</td>"
"</tr>"
"</table>\n");
}
else if (cell->classDef()!=(ClassDef*)0x8)
{
cd = cell->classDef();
ol.writeString("<td valign=\"top\">");
QCString namesp,cname;
//if (cd->getNamespaceDef()) namesp=cd->getNamespaceDef()->displayName();
//QCString cname=cd->className();
extractNamespaceName(cd->name(),cname,namesp);
QCString nsDispName;
SrcLangExt lang = cd->getLanguage();
QCString sep = getLanguageSpecificSeparator(lang);
if (sep!="::")
{
nsDispName=substitute(namesp,"::",sep);
cname=substitute(cname,"::",sep);
}
else
{
nsDispName=namesp;
}
cd->getOutputFileBase(),cd->anchor(),cname);
if (!namesp.isEmpty())
{
ol.docify(" (");
if (nd && nd->isLinkable())
{
nd->getOutputFileBase(),0,nsDispName);
}
else
{
ol.docify(nsDispName);
}
ol.docify(")");
}
}
++(*colIterators[j]);
if (cell->letter()!=0 || cell->classDef()!=(ClassDef*)0x8)
{
ol.writeString("</td>");
}
}
}
else
{
ol.writeString("<td></td>");
}
}
}
ol.writeString("</tr>\n");
}
ol.writeString("</table>\n");
ol.writeString(alphaLinks);
// release the temporary memory
for (i=0;i<columns;i++)
{
delete colIterators[i];
}
delete[] colIterators;
}
static void writeAlphabeticalIndex ( OutputList ol)
static
static void writeAnnotatedClassList ( OutputList ol)
static

Definition at line 1578 of file index.cpp.

References ClassDef::anchor(), Definition::briefDescription(), Definition::briefFile(), Definition::briefLine(), Doxygen::classSDict, OutputList::disable(), ClassDef::displayName(), OutputList::docify(), OutputList::endIndexKey(), OutputList::endIndexList(), OutputList::endIndexValue(), OutputList::generateDoc(), Definition::getLanguage(), ClassDef::getOutputFileBase(), VhdlDocGen::getProtectionName(), ClassDef::isEmbeddedInOuterScope(), ClassDef::isLinkableInProject(), SDict< ClassDef >::Iterator, OutputGenerator::Latex, VhdlDocGen::PACKAGECLASS, VhdlDocGen::PACKBODYCLASS, OutputList::popGeneratorState(), ClassDef::protection(), OutputList::pushGeneratorState(), OutputGenerator::RTF, SrcLangExt_VHDL, OutputList::startIndexKey(), OutputList::startIndexList(), OutputList::startIndexValue(), ClassDef::templateMaster(), OutputList::writeObjectLink(), and OutputList::writeString().

Referenced by writeAnnotatedIndex().

{
//LayoutNavEntry *lne = LayoutDocManager::instance().rootNavEntry()->find(LayoutNavEntry::ClassList);
//bool addToIndex = lne==0 || lne->visible();
ClassDef *cd;
for (cli.toFirst();(cd=cli.current());++cli)
{
) // no architecture
{
continue;
}
{
}
if (cd->isLinkableInProject() && cd->templateMaster()==0)
{
{
ol.docify(prot.data());
ol.writeString(" ");
}
bool hasBrief = !cd->briefDescription().isEmpty();
ol.startIndexValue(hasBrief);
if (hasBrief)
{
cd->briefFile(),cd->briefLine(),
cd,0,
cd->briefDescription(TRUE),
FALSE, // indexWords
FALSE, // isExample
0, // example name
TRUE, // single line
TRUE // link from index
);
}
ol.endIndexValue(cd->getOutputFileBase(),hasBrief);
//if (addToIndex)
//{
// addMembersToIndex(cd,LayoutDocManager::Class,cd->displayName(),cd->anchor());
//}
}
}
}
static void writeAnnotatedIndex ( OutputList ol)
static

Definition at line 2038 of file index.cpp.

References IndexList::addContentsItem(), annotatedClasses, annotatedClassesPrinted, LayoutNavEntry::Classes, LayoutNavEntry::ClassList, Doxygen::classSDict, IndexList::decContentsDepth(), OutputList::disable(), IndexList::disable(), OutputList::disableAllBut(), IndexList::enable(), endFile(), OutputList::endTextBlock(), endTitle(), LayoutNavEntry::find(), FTVHelp::generateTreeViewInline(), HLI_Annotated, OutputGenerator::Html, IndexList::incContentsDepth(), Doxygen::indexList, LayoutDocManager::instance(), LayoutNavEntry::intro(), OutputGenerator::Latex, OutputGenerator::Man, Doxygen::namespaceSDict, OutputList::parseText(), OutputList::popGeneratorState(), OutputList::pushGeneratorState(), LayoutDocManager::rootNavEntry(), OutputGenerator::RTF, OutputList::startContents(), startFile(), OutputList::startTextBlock(), startTitle(), theTranslator, LayoutNavEntry::title(), Translator::trCompoundList(), Translator::trCompoundListDescription(), LayoutNavEntry::visible(), writeAnnotatedClassList(), writeClassTree(), writeNamespaceTree(), and OutputList::writeString().

Referenced by writeIndexHierarchyEntries().

{
//printf("writeAnnotatedIndex: count=%d printed=%d\n",
// annotatedClasses,annotatedClassesPrinted);
if (annotatedClasses==0) return;
{
}
QCString title = lne ? lne->title() : theTranslator->trCompoundList();
bool addToIndex = lne==0 || lne->visible();
startFile(ol,"annotated",0,title,HLI_Annotated);
startTitle(ol,0);
ol.parseText(title);
endTitle(ol,0,0);
// ---------------
// Linear class index for Latex/RTF
// ---------------
// ---------------
// Hierarchical class index for HTML
// ---------------
{
if (addToIndex)
{
Doxygen::indexList->addContentsItem(TRUE,title,0,"annotated",0,TRUE,TRUE);
}
FTVHelp* ftv = new FTVHelp(FALSE);
writeNamespaceTree(Doxygen::namespaceSDict,ftv,TRUE,TRUE,addToIndex);
writeClassTree(Doxygen::classSDict,ftv,addToIndex,TRUE);
QGString outStr;
FTextStream t(&outStr);
ol.writeString(outStr);
delete ftv;
if (addToIndex)
{
}
}
// ------
endFile(ol); // contains ol.endContents()
}
static void writeClassHierarchy ( OutputList ol,
FTVHelp ftv,
bool  addToIndex 
)
static
static void writeClassLinkForMember ( OutputList ol,
MemberDef md,
const char *  separator,
QCString &  prevClassName 
)
static
static void writeClassMemberIndex ( OutputList ol)
static

Definition at line 2639 of file index.cpp.

References IndexList::addContentsItem(), LayoutNavEntry::ClassMembers, CMHL_All, CMHL_Enums, CMHL_EnumValues, CMHL_Events, CMHL_Functions, CMHL_Properties, CMHL_Related, CMHL_Typedefs, CMHL_Variables, IndexList::decContentsDepth(), documentedClassMembers, LayoutNavEntry::find(), IndexList::incContentsDepth(), Doxygen::indexList, LayoutDocManager::instance(), LayoutDocManager::rootNavEntry(), theTranslator, LayoutNavEntry::title(), Translator::trCompoundMembers(), LayoutNavEntry::visible(), and writeClassMemberIndexFiltered().

Referenced by writeIndexHierarchyEntries().

static void writeClassMemberIndexFiltered ( OutputList ol,
ClassMemberHighlight  hl 
)
static

Definition at line 2520 of file index.cpp.

References IndexList::addContentsItem(), LayoutNavEntry::ClassMembers, CMHL_All, CMHL_Total, Config_getBool, SIntDict< T >::Iterator::current(), IndexList::decContentsDepth(), OutputList::disableAllBut(), documentedClassMembers, endFile(), endQuickIndexItem(), endQuickIndexList(), OutputList::endQuickIndices(), OutputList::endTextBlock(), LayoutNavEntry::find(), fixSpaces(), CmhlInfo::fname, getCmhlInfo(), HLI_Functions, OutputGenerator::Html, Doxygen::htmlFileExtension, IndexList::incContentsDepth(), Doxygen::indexList, LayoutDocManager::instance(), LayoutNavEntry::intro(), MemberIndexList::letter(), letterToLabel(), MAX_ITEMS_BEFORE_MULTIPAGE_INDEX, maxItemsBeforeQuickIndex, OutputList::parseText(), OutputList::popGeneratorState(), OutputList::pushGeneratorState(), LayoutDocManager::rootNavEntry(), OutputList::startContents(), OutputList::startFile(), startQuickIndexItem(), startQuickIndexList(), OutputList::startQuickIndices(), OutputList::startTextBlock(), theTranslator, LayoutNavEntry::title(), CmhlInfo::title, SIntDict< T >::Iterator::toFirst(), Translator::trCompoundMembers(), Translator::trCompoundMembersDescription(), DefinitionIntf::TypeClass, LayoutNavEntry::visible(), writeMemberList(), OutputList::writeQuickLinks(), writeQuickMemberIndex(), OutputList::writeSearchInfo(), OutputList::writeSplitBar(), and OutputList::writeString().

Referenced by writeClassMemberIndex().

{
if (documentedClassMembers[hl]==0) return;
static bool disableIndex = Config_getBool(DISABLE_INDEX);
bool multiPageIndex=FALSE;
{
multiPageIndex=TRUE;
}
QCString extension=Doxygen::htmlFileExtension;
QCString title = lne ? lne->title() : theTranslator->trCompoundMembers();
if (hl!=CMHL_All) title+=(QCString)" - "+getCmhlInfo(hl)->title;
bool addToIndex = lne==0 || lne->visible();
if (addToIndex)
{
Doxygen::indexList->addContentsItem(multiPageIndex,getCmhlInfo(hl)->title,0,
getCmhlInfo(hl)->fname,0,multiPageIndex,TRUE);
if (multiPageIndex) Doxygen::indexList->incContentsDepth();
}
bool first=TRUE;
for (it.toFirst();(ml=it.current());++it)
{
uint page = ml->letter();
QCString fileName = getCmhlInfo(hl)->fname;
if (multiPageIndex)
{
if (!first)
{
fileName+="_"+letterToLabel(page);
}
QCString cs = QString(QChar(page)).utf8();
if (addToIndex)
{
Doxygen::indexList->addContentsItem(FALSE,cs,0,fileName,0,FALSE,TRUE);
}
}
ol.startFile(fileName+extension,0,title);
if (!disableIndex)
{
#if 0
// index item for global member list
getCmhlInfo(0)->fname+Doxygen::htmlFileExtension,hl==CMHL_All,TRUE,first);
int i;
// index items per category member lists
for (i=1;i<CMHL_Total;i++)
{
{
//printf("multiPageIndex=%d first=%d fileName=%s file=%s title=%s\n",
// multiPageIndex,first,fileName.data(),getCmhlInfo(i)->fname,getCmhlInfo(i)->title.data());
}
}
// quick alphabetical index
if (quickIndex)
{
getCmhlInfo(hl)->fname,multiPageIndex);
}
#endif
}
ol.writeSplitBar(fileName);
if (hl==CMHL_All)
{
}
else
{
// hack to work around a mozilla bug, which refuses to switch to
// normal lists otherwise
ol.writeString("&#160;");
}
writeMemberList(ol,quickIndex,
multiPageIndex?page:-1,
endFile(ol);
first=FALSE;
}
if (multiPageIndex && addToIndex) Doxygen::indexList->decContentsDepth();
}
static void writeClassTree ( OutputList ol,
const BaseClassList bcl,
bool  hideSuper,
int  level,
FTVHelp ftv,
bool  addToIndex 
)
static

Generates HTML Help tree of classes

Definition at line 424 of file index.cpp.

References FTVHelp::addContentsItem(), IndexList::addContentsItem(), ClassDef::anchor(), ClassDef::baseClasses(), classHasVisibleChildren(), FTVHelp::decContentsDepth(), IndexList::decContentsDepth(), ClassDef::displayName(), OutputList::docify(), endIndexHierarchy(), OutputList::endIndexItem(), OutputList::endIndexListItem(), OutputList::endTypewriter(), VhdlDocGen::ENTITYCLASS, Definition::getLanguage(), ClassDef::getOutputFileBase(), ClassDef::getReference(), hasVisibleRoot(), FTVHelp::incContentsDepth(), IndexList::incContentsDepth(), Doxygen::indexList, ClassDef::isLinkable(), ClassDef::isReference(), ClassDef::isVisibleInHierarchy(), Definition::name(), OutputList::parseText(), ClassDef::protection(), SrcLangExt_VHDL, startIndexHierarchy(), OutputList::startIndexItem(), OutputList::startIndexListItem(), OutputList::startTypewriter(), ClassDef::subClasses(), and ClassDef::visited.

Referenced by writeAnnotatedIndex(), writeClassTree(), writeClassTreeForList(), and writeNamespaceTree().

{
if (bcl==0) return;
bool started=FALSE;
for ( ; bcli.current() ; ++bcli)
{
ClassDef *cd=bcli.current()->classDef;
{
continue;
}
bool b;
{
}
else
{
}
if (cd->isVisibleInHierarchy() && b) // hasVisibleRoot(cd->baseClasses()))
{
if (!started)
{
if (addToIndex)
{
}
if (ftv)
{
}
started=TRUE;
}
//printf("Passed...\n");
bool hasChildren = !cd->visited && !hideSuper && classHasVisibleChildren(cd);
//printf("tree4: Has children %s: %d\n",cd->name().data(),hasChildren);
if (cd->isLinkable())
{
//printf("Writing class %s\n",cd->displayName().data());
if (cd->isReference())
{
ol.docify(" [external]");
}
if (addToIndex)
{
}
if (ftv)
{
{
ftv->addContentsItem(hasChildren,bcli.current()->usedName,cd->getReference(),cd->getOutputFileBase(),cd->anchor(),FALSE,FALSE,cd);
}
else
{
ftv->addContentsItem(hasChildren,cd->displayName(),cd->getReference(),cd->getOutputFileBase(),cd->anchor(),FALSE,FALSE,cd);
}
}
}
else
{
ol.startIndexItem(0,0);
ol.parseText(cd->name());
ol.endIndexItem(0,0);
if (addToIndex)
{
Doxygen::indexList->addContentsItem(hasChildren,cd->displayName(),0,0,0);
}
if (ftv)
{
ftv->addContentsItem(hasChildren,cd->displayName(),0,0,0,FALSE,FALSE,cd);
}
}
if (hasChildren)
{
//printf("Class %s at %p visited=%d\n",cd->name().data(),cd,cd->visited);
bool wasVisited=cd->visited;
cd->visited=TRUE;
{
writeClassTree(ol,cd->baseClasses(),wasVisited,level+1,ftv,addToIndex);
}
else
{
writeClassTree(ol,cd->subClasses(),wasVisited,level+1,ftv,addToIndex);
}
}
}
}
if (started)
{
endIndexHierarchy(ol,level);
if (addToIndex)
{
}
if (ftv)
{
}
}
}
void writeClassTree ( ClassSDict clDict,
FTVHelp ftv,
bool  addToIndex,
bool  globalOnly 
)

Definition at line 1320 of file index.cpp.

References FTVHelp::addContentsItem(), addMembersToIndex(), ClassDef::anchor(), VhdlDocGen::ARCHITECTURECLASS, LayoutDocManager::Class, classVisibleInIndex(), FTVHelp::decContentsDepth(), DefinitionIntf::definitionType(), ClassDef::displayName(), ClassDef::getClassSDict(), Definition::getLanguage(), Definition::getOuterScope(), ClassDef::getOutputFileBase(), ClassDef::getReference(), Doxygen::globalScope, FTVHelp::incContentsDepth(), ClassDef::isSimple(), SDict< ClassDef >::Iterator, Definition::name(), VhdlDocGen::PACKAGECLASS, VhdlDocGen::PACKBODYCLASS, Definition::partOfGroups(), ClassDef::protection(), ClassDef::setClassName(), SrcLangExt_VHDL, ClassDef::templateMaster(), DefinitionIntf::TypeClass, and writeClassTree().

{
if (clDict)
{
ClassSDict::Iterator cli(*clDict);
ClassDef *cd;
for (;(cd=cli.current());++cli)
{
{
)// no architecture
{
continue;
}
{
QCString n=cd->name();
cd->setClassName(n.data());
}
}
if (!globalOnly ||
cd->getOuterScope()==0 ||
)
{
int count=0;
if (cd->getClassSDict())
{
ClassDef *ccd;
for (;(ccd=ccit.current());++ccit)
{
if (ccd->isLinkableInProject() && ccd->templateMaster()==0)
{
count++;
}
}
}
if (classVisibleInIndex(cd) && cd->templateMaster()==0)
{
ftv->addContentsItem(count>0,cd->displayName(FALSE),cd->getReference(),
cd->getOutputFileBase(),cd->anchor(),FALSE,TRUE,cd);
if (addToIndex &&
/*cd->partOfGroups()==0 &&*/
(cd->getOuterScope()==0 ||
)
)
{
cd->displayName(FALSE),
cd->anchor(),
cd->partOfGroups()==0 && !cd->isSimple());
}
if (count>0)
{
writeClassTree(cd->getClassSDict(),ftv,addToIndex,FALSE);
}
}
}
}
}
}
static void writeClassTreeForList ( OutputList ol,
ClassSDict cl,
bool &  started,
FTVHelp ftv,
bool  addToIndex 
)
static

Definition at line 801 of file index.cpp.

References FTVHelp::addContentsItem(), IndexList::addContentsItem(), ClassDef::anchor(), ClassDef::baseClasses(), classHasVisibleChildren(), ClassDef::displayName(), OutputList::docify(), OutputList::endIndexItem(), OutputList::endIndexListItem(), OutputList::endTypewriter(), VhdlDocGen::ENTITYCLASS, Definition::getLanguage(), ClassDef::getOutputFileBase(), ClassDef::getReference(), hasVisibleRoot(), IndexList::incContentsDepth(), Doxygen::indexList, ClassDef::isLinkable(), ClassDef::isReference(), ClassDef::isVisibleInHierarchy(), SDict< ClassDef >::Iterator, OutputList::parseText(), ClassDef::protection(), SrcLangExt_VHDL, startIndexHierarchy(), OutputList::startIndexItem(), OutputList::startIndexListItem(), OutputList::startTypewriter(), ClassDef::subClasses(), ClassDef::visited, and writeClassTree().

Referenced by writeClassHierarchy().

{
ClassDef *cd;
for (;(cd=cli.current());++cli)
{
//printf("class %s hasVisibleRoot=%d isVisibleInHierarchy=%d\n",
// cd->name().data(),
// hasVisibleRoot(cd->baseClasses()),
// cd->isVisibleInHierarchy()
// );
bool b;
{
{
continue;
}
}
else
{
}
if (b) //filter on root classes
{
if (cd->isVisibleInHierarchy()) // should it be visible
{
if (!started)
{
if (addToIndex)
{
}
started=TRUE;
}
bool hasChildren = !cd->visited && classHasVisibleChildren(cd);
//printf("list: Has children %s: %d\n",cd->name().data(),hasChildren);
if (cd->isLinkable())
{
//printf("Writing class %s isLinkable()=%d isLinkableInProject()=%d cd->templateMaster()=%p\n",
// cd->displayName().data(),cd->isLinkable(),cd->isLinkableInProject(),cd->templateMaster());
if (cd->isReference())
{
ol.docify(" [external]");
}
if (addToIndex)
{
if (cd->getLanguage()!=SrcLangExt_VHDL) // prevents double insertion in Design Unit List
Doxygen::indexList->addContentsItem(hasChildren,cd->displayName(),cd->getReference(),cd->getOutputFileBase(),cd->anchor(),FALSE,FALSE);
}
if (ftv)
{
ftv->addContentsItem(hasChildren,cd->displayName(),cd->getReference(),cd->getOutputFileBase(),cd->anchor(),FALSE,FALSE,cd);
}
}
else
{
ol.startIndexItem(0,0);
ol.endIndexItem(0,0);
if (addToIndex)
{
Doxygen::indexList->addContentsItem(hasChildren,cd->displayName(),0,0,0,FALSE,FALSE);
}
if (ftv)
{
ftv->addContentsItem(hasChildren,cd->displayName(),0,0,0,FALSE,FALSE,cd);
}
}
if (cd->getLanguage()==SrcLangExt_VHDL && hasChildren)
{
writeClassTree(ol,cd->baseClasses(),cd->visited,1,ftv,addToIndex);
cd->visited=TRUE;
}
else if (hasChildren)
{
writeClassTree(ol,cd->subClasses(),cd->visited,1,ftv,addToIndex);
cd->visited=TRUE;
}
}
}
}
}
static void writeDirHierarchy ( OutputList ol,
FTVHelp ftv,
bool  addToIndex 
)
static

Definition at line 726 of file index.cpp.

References FTVHelp::addContentsItem(), IndexList::addContentsItem(), addMembersToIndex(), Config_getBool, convertToHtml(), Doxygen::directories, OutputList::disable(), FileDef::displayName(), doc, endIndexHierarchy(), LayoutDocManager::File, fileVisibleInIndex(), FileDef::getDirDef(), Definition::getOuterScope(), FileDef::getOutputFileBase(), Definition::getReference(), FileDef::getSourceFileBase(), Doxygen::globalScope, OutputGenerator::Html, Doxygen::indexList, Doxygen::inputNameList, FileDef::name(), OutputList::popGeneratorState(), OutputList::pushGeneratorState(), startIndexHierarchy(), and writeDirTreeNode().

Referenced by writeFileIndex().

{
if (ftv)
{
}
static bool fullPathNames = Config_getBool(FULL_PATH_NAMES);
if (fullPathNames)
{
DirDef *dd;
for (dli.toFirst();(dd=dli.current());++dli)
{
{
writeDirTreeNode(ol,dd,0,ftv,addToIndex);
}
}
}
if (ftv)
{
FileName *fn;
for (fnli.toFirst();(fn=fnli.current());++fnli)
{
FileNameIterator fni(*fn);
FileDef *fd;
for (;(fd=fni.current());++fni)
{
static bool fullPathNames = Config_getBool(FULL_PATH_NAMES);
if (!fullPathNames || fd->getDirDef()==0) // top level file
{
bool doc,src;
doc = fileVisibleInIndex(fd,src);
QCString reference, outputBase;
if (doc)
{
reference = fd->getReference();
outputBase = fd->getOutputFileBase();
}
if (doc || src)
{
ftv->addContentsItem(FALSE,fd->displayName(),
reference, outputBase, 0,
FALSE,FALSE,fd);
}
if (addToIndex)
{
if (doc)
{
}
else if (src)
{
FALSE, convertToHtml(fd->name(),TRUE), 0,
fd->getSourceFileBase(), 0, FALSE, TRUE, fd);
}
}
}
}
}
}
if (ftv)
{
}
}
static void writeDirTreeNode ( OutputList ol,
DirDef dd,
int  level,
FTVHelp ftv,
bool  addToIndex 
)
static

Definition at line 573 of file index.cpp.

References FTVHelp::addContentsItem(), IndexList::addContentsItem(), addMembersToIndex(), convertToHtml(), FTVHelp::decContentsDepth(), IndexList::decContentsDepth(), dirHasVisibleChildren(), FileDef::displayName(), doc, OutputList::docify(), endIndexHierarchy(), OutputList::endIndexItem(), OutputList::endIndexListItem(), OutputList::endTypewriter(), LayoutDocManager::File, fileVisibleInIndex(), Definition::getDefFileName(), Definition::getDefLine(), DirDef::getFiles(), DirDef::getOutputFileBase(), FileDef::getOutputFileBase(), Definition::getReference(), FileDef::getSourceFileBase(), FTVHelp::incContentsDepth(), IndexList::incContentsDepth(), Doxygen::indexList, Definition::isReference(), FileDef::name(), Definition::name(), OutputList::parseText(), DirDef::shortName(), startIndexHierarchy(), OutputList::startIndexItem(), OutputList::startIndexListItem(), OutputList::startTypewriter(), DirDef::subDirs(), and warn().

Referenced by writeDirHierarchy().

{
if (level>20)
{
"maximum nesting level exceeded for directory %s: "
"check for possible recursive directory relation!\n",dd->name().data()
);
return;
}
{
return;
}
static bool tocExpand = TRUE; //Config_getBool(TOC_EXPAND);
bool isDir = dd->subDirs().count()>0 || // there are subdirs
(tocExpand && // or toc expand and
dd->getFiles() && dd->getFiles()->count()>0 // there are files
);
//printf("gd=`%s': pageDict=%d\n",gd->name().data(),gd->pageDict->count());
if (addToIndex)
{
}
if (ftv)
{
ftv->addContentsItem(isDir,dd->shortName(),dd->getReference(),
dd->getOutputFileBase(),0,FALSE,TRUE,dd);
}
ol.parseText(dd->shortName());
if (dd->isReference())
{
ol.docify(" [external]");
}
// write sub directories
if (dd->subDirs().count()>0)
{
startIndexHierarchy(ol,level+1);
QListIterator<DirDef> dli(dd->subDirs());
DirDef *subdd = 0;
for (dli.toFirst();(subdd=dli.current());++dli)
{
writeDirTreeNode(ol,subdd,level+1,ftv,addToIndex);
}
endIndexHierarchy(ol,level+1);
}
FileList *fileList=dd->getFiles();
int fileCount=0;
if (fileList && fileList->count()>0)
{
QListIterator<FileDef> it(*fileList);
FileDef *fd;
for (;(fd=it.current());++it)
{
//static bool allExternals = Config_getBool(ALLEXTERNALS);
//if ((allExternals && fd->isLinkable()) || fd->isLinkableInProject())
//{
// fileCount++;
//}
bool genSourceFile;
if (fileVisibleInIndex(fd,genSourceFile))
{
fileCount++;
}
else if (genSourceFile)
{
fileCount++;
}
}
if (fileCount>0)
{
startIndexHierarchy(ol,level+1);
for (it.toFirst();(fd=it.current());++it)
{
bool doc,src;
doc = fileVisibleInIndex(fd,src);
QCString reference;
QCString outputBase;
if (doc)
{
reference = fd->getReference();
outputBase = fd->getOutputFileBase();
}
if (doc || src)
{
ol.startIndexItem(reference,outputBase);
ol.endIndexItem(reference,outputBase);
if (ftv && (src || doc))
{
ftv->addContentsItem(FALSE,
fd->displayName(),
reference,outputBase,
0,FALSE,FALSE,fd);
}
}
}
endIndexHierarchy(ol,level+1);
}
}
if (tocExpand && addToIndex)
{
// write files of this directory
if (fileCount>0)
{
QListIterator<FileDef> it(*fileList);
FileDef *fd;
for (;(fd=it.current());++it)
{
//static bool allExternals = Config_getBool(ALLEXTERNALS);
//if ((allExternals && fd->isLinkable()) || fd->isLinkableInProject())
bool doc,src;
doc = fileVisibleInIndex(fd,src);
if (doc)
{
}
else if (src)
{
FALSE, convertToHtml(fd->name(),TRUE), 0,
fd->getSourceFileBase(), 0, FALSE, TRUE, fd);
}
}
}
}
if (addToIndex)
{
}
if (ftv)
{
}
}
static void writeExampleIndex ( OutputList ol)
static

Definition at line 3005 of file index.cpp.

References IndexList::addContentsItem(), IndexList::decContentsDepth(), OutputList::disable(), endFile(), OutputList::endItemList(), OutputList::endItemListItem(), OutputList::endTextBlock(), endTitle(), LayoutNavEntry::Examples, Doxygen::exampleSDict, filterTitle(), LayoutNavEntry::find(), PageDef::getOutputFileBase(), Definition::getReference(), HLI_Examples, IndexList::incContentsDepth(), Doxygen::indexList, LayoutDocManager::instance(), LayoutNavEntry::intro(), SDict< PageDef >::Iterator, OutputGenerator::Man, Definition::name(), OutputList::parseText(), OutputList::popGeneratorState(), OutputList::pushGeneratorState(), LayoutDocManager::rootNavEntry(), OutputList::startContents(), startFile(), OutputList::startItemList(), OutputList::startItemListItem(), OutputList::startTextBlock(), startTitle(), theTranslator, PageDef::title(), LayoutNavEntry::title(), Translator::trExamples(), Translator::trExamplesDescription(), LayoutNavEntry::visible(), OutputList::writeObjectLink(), and OutputList::writeString().

Referenced by writeIndexHierarchyEntries().

{
if (Doxygen::exampleSDict->count()==0) return;
QCString title = lne ? lne->title() : theTranslator->trExamples();
bool addToIndex = lne==0 || lne->visible();
startFile(ol,"examples",0,title,HLI_Examples);
startTitle(ol,0);
ol.parseText(title);
endTitle(ol,0,0);
if (addToIndex)
{
Doxygen::indexList->addContentsItem(TRUE,title,0,"examples",0,TRUE,TRUE);
}
PageDef *pd=0;
for (pdi.toFirst();(pd=pdi.current());++pdi)
{
QCString n=pd->getOutputFileBase();
if (!pd->title().isEmpty())
{
ol.writeObjectLink(0,n,0,pd->title());
if (addToIndex)
{
Doxygen::indexList->addContentsItem(FALSE,filterTitle(pd->title()),pd->getReference(),n,0,FALSE,TRUE);
}
}
else
{
ol.writeObjectLink(0,n,0,pd->name());
if (addToIndex)
{
Doxygen::indexList->addContentsItem(FALSE,pd->name(),pd->getReference(),n,0,FALSE,TRUE);
}
}
ol.writeString("\n");
}
if (addToIndex)
{
}
endFile(ol);
}
static void writeFileIndex ( OutputList ol)
static

Definition at line 1167 of file index.cpp.

References IndexList::addContentsItem(), Config_getBool, IndexList::decContentsDepth(), OutputList::disable(), OutputList::disableAllBut(), documentedFiles, documentedHtmlFiles, endFile(), OutputList::endIndexList(), OutputList::endTextBlock(), endTitle(), LayoutNavEntry::FileList, LayoutNavEntry::Files, LayoutNavEntry::find(), FTVHelp::generateTreeViewInline(), FileDef::getPath(), HLI_Files, OutputGenerator::Html, IndexList::incContentsDepth(), Doxygen::indexList, Doxygen::inputNameList, LayoutDocManager::instance(), LayoutNavEntry::intro(), OutputGenerator::Man, OutputList::parseText(), OutputList::popGeneratorState(), OutputList::pushGeneratorState(), LayoutDocManager::rootNavEntry(), OutputList::startContents(), startFile(), OutputList::startIndexList(), OutputList::startTextBlock(), startTitle(), theTranslator, LayoutNavEntry::title(), Translator::trFileList(), Translator::trFileListDescription(), LayoutNavEntry::visible(), writeDirHierarchy(), writeSingleFileIndex(), and OutputList::writeString().

Referenced by writeIndexHierarchyEntries().

{
if (documentedHtmlFiles==0) return;
if (lne==0) lne = LayoutDocManager::instance().rootNavEntry()->find(LayoutNavEntry::Files); // fall back
QCString title = lne ? lne->title() : theTranslator->trFileList();
bool addToIndex = lne==0 || lne->visible();
startFile(ol,"files",0,title,HLI_Files);
startTitle(ol,0);
//if (!Config_getString(PROJECT_NAME).isEmpty())
//{
// title.prepend(Config_getString(PROJECT_NAME)+" ");
//}
ol.parseText(title);
endTitle(ol,0,0);
if (addToIndex)
{
Doxygen::indexList->addContentsItem(TRUE,title,0,"files",0,TRUE,TRUE);
}
// ---------------
// Flat file index
// ---------------
// 1. {
OutputNameDict outputNameDict(1009);
OutputNameList outputNameList;
outputNameList.setAutoDelete(TRUE);
if (Config_getBool(FULL_PATH_NAMES))
{
// re-sort input files in (dir,file) output order instead of (file,dir) input order
FileName *fn;
for (fnli.toFirst();(fn=fnli.current());++fnli)
{
FileNameIterator fni(*fn);
FileDef *fd;
for (;(fd=fni.current());++fni)
{
QCString path=fd->getPath();
if (path.isEmpty()) path="[external]";
FileList *fl = outputNameDict.find(path);
if (fl)
{
fl->append(fd);
//printf("+ inserting %s---%s\n",fd->getPath().data(),fd->name().data());
}
else
{
//printf("o inserting %s---%s\n",fd->getPath().data(),fd->name().data());
fl = new FileList(path);
fl->append(fd);
outputNameList.append(fl);
outputNameDict.insert(path,fl);
}
}
}
}
if (Config_getBool(FULL_PATH_NAMES))
{
outputNameList.sort();
QListIterator<FileList> fnli(outputNameList);
FileList *fl;
for (fnli.toFirst();(fl=fnli.current());++fnli)
{
fl->sort();
QListIterator<FileDef> it(*fl);
FileDef *fd;
for (;(fd=it.current());++it)
{
}
}
}
else
{
FileName *fn;
for (fnli.toFirst();(fn=fnli.current());++fnli)
{
FileNameIterator fni(*fn);
FileDef *fd;
for (;(fd=fni.current());++fni)
{
}
}
}
// 1. }
// ---------------
// Hierarchical file index for HTML
// ---------------
FTVHelp* ftv = new FTVHelp(FALSE);
writeDirHierarchy(ol,ftv,addToIndex);
QGString outStr;
FTextStream t(&outStr);
ol.writeString(outStr);
delete ftv;
// ------
if (addToIndex)
{
}
endFile(ol);
}
static void writeFileLinkForMember ( OutputList ol,
MemberDef md,
const char *  separator,
QCString &  prevFileName 
)
static

Definition at line 2129 of file index.cpp.

References MemberDef::anchor(), OutputList::docify(), MemberDef::getFileDef(), MemberDef::getOutputFileBase(), MemberDef::getReference(), FileDef::name(), OutputList::writeObjectLink(), and OutputList::writeString().

Referenced by writeMemberList().

{
FileDef *fd=md->getFileDef();
if (fd && prevFileName!=fd->name())
{
ol.docify(separator);
fd->name());
ol.writeString("\n");
prevFileName = fd->name();
}
}
static void writeFileMemberIndex ( OutputList ol)
static
static void writeFileMemberIndexFiltered ( OutputList ol,
FileMemberHighlight  hl 
)
static

Definition at line 2695 of file index.cpp.

References IndexList::addContentsItem(), Config_getBool, SIntDict< T >::Iterator::current(), IndexList::decContentsDepth(), OutputList::disableAllBut(), documentedFileMembers, endFile(), endQuickIndexItem(), endQuickIndexList(), OutputList::endQuickIndices(), OutputList::endTextBlock(), LayoutNavEntry::FileGlobals, LayoutNavEntry::find(), fixSpaces(), FMHL_All, FMHL_Total, FmhlInfo::fname, getFmhlInfo(), HLI_Globals, OutputGenerator::Html, Doxygen::htmlFileExtension, IndexList::incContentsDepth(), Doxygen::indexList, LayoutDocManager::instance(), LayoutNavEntry::intro(), MemberIndexList::letter(), letterToLabel(), MAX_ITEMS_BEFORE_MULTIPAGE_INDEX, maxItemsBeforeQuickIndex, OutputList::parseText(), OutputList::popGeneratorState(), OutputList::pushGeneratorState(), LayoutDocManager::rootNavEntry(), OutputList::startContents(), OutputList::startFile(), startQuickIndexItem(), startQuickIndexList(), OutputList::startQuickIndices(), OutputList::startTextBlock(), theTranslator, LayoutNavEntry::title(), SIntDict< T >::Iterator::toFirst(), Translator::trFileMembers(), Translator::trFileMembersDescription(), DefinitionIntf::TypeFile, LayoutNavEntry::visible(), writeMemberList(), OutputList::writeQuickLinks(), writeQuickMemberIndex(), OutputList::writeSearchInfo(), OutputList::writeSplitBar(), and OutputList::writeString().

Referenced by writeFileMemberIndex().

{
if (documentedFileMembers[hl]==0) return;
static bool disableIndex = Config_getBool(DISABLE_INDEX);
bool multiPageIndex=FALSE;
{
multiPageIndex=TRUE;
}
QCString extension=Doxygen::htmlFileExtension;
QCString title = lne ? lne->title() : theTranslator->trFileMembers();
bool addToIndex = lne==0 || lne->visible();
if (addToIndex)
{
Doxygen::indexList->addContentsItem(multiPageIndex,getFmhlInfo(hl)->title,0,
getFmhlInfo(hl)->fname,0,multiPageIndex,TRUE);
if (multiPageIndex) Doxygen::indexList->incContentsDepth();
}
bool first=TRUE;
for (it.toFirst();(ml=it.current());++it)
{
uint page = ml->letter();
QCString fileName = getFmhlInfo(hl)->fname;
if (multiPageIndex)
{
if (!first)
{
fileName+="_"+letterToLabel(page);
}
QCString cs = QString(QChar(page)).utf8();
if (addToIndex)
{
Doxygen::indexList->addContentsItem(FALSE,cs,0,fileName,0,FALSE,TRUE);
}
}
ol.startFile(fileName+extension,0,title);
if (!disableIndex)
{
#if 0
// index item for all file member lists
getFmhlInfo(0)->fname+Doxygen::htmlFileExtension,hl==FMHL_All,TRUE,first);
int i;
// index items for per category member lists
for (i=1;i<FMHL_Total;i++)
{
{
getFmhlInfo(i)->fname+Doxygen::htmlFileExtension,hl==i,TRUE,first);
}
}
if (quickIndex)
{
getFmhlInfo(hl)->fname,multiPageIndex);
}
#endif
}
ol.writeSplitBar(fileName);
if (hl==FMHL_All)
{
}
else
{
// hack to work around a mozilla bug, which refuses to switch to
// normal lists otherwise
ol.writeString("&#160;");
}
writeMemberList(ol,quickIndex,
multiPageIndex?page:-1,
endFile(ol);
first=FALSE;
}
if (multiPageIndex && addToIndex) Doxygen::indexList->decContentsDepth();
}
static void writeGraphicalClassHierarchy ( OutputList ol)
static
void writeGraphInfo ( OutputList ol)

Definition at line 3251 of file index.cpp.

References Config_getBool, Config_getString, OutputList::disableAllBut(), endFile(), endTitle(), OutputList::generateDoc(), generateGraphLegend(), getDotImageExtension(), OutputGenerator::Html, OutputList::parseText(), OutputList::popGeneratorState(), OutputList::pushGeneratorState(), OutputList::startContents(), startFile(), startTitle(), theTranslator, Translator::trLegendDocs(), and Translator::trLegendTitle().

Referenced by generateOutput().

{
if (!Config_getBool(HAVE_DOT) || !Config_getBool(GENERATE_HTML)) return;
bool &stripCommentsStateRef = Config_getBool(STRIP_CODE_COMMENTS);
bool oldStripCommentsState = stripCommentsStateRef;
bool &createSubdirs = Config_getBool(CREATE_SUBDIRS);
bool oldCreateSubdirs = createSubdirs;
// temporarily disable the stripping of comments for our own code example!
stripCommentsStateRef = FALSE;
// temporarily disable create subdirs for linking to our example
createSubdirs = FALSE;
startFile(ol,"graph_legend",0,theTranslator->trLegendTitle().data());
startTitle(ol,0);
endTitle(ol,0,0);
QCString legendDocs = theTranslator->trLegendDocs();
int s = legendDocs.find("<center>");
int e = legendDocs.find("</center>");
QCString imgExt = getDotImageExtension();
if (imgExt=="svg" && s!=-1 && e!=-1)
{
legendDocs = legendDocs.left(s+8) + "[!-- SVG 0 --]\n" + legendDocs.mid(e);
//printf("legendDocs=%s\n",legendDocs.data());
}
FileDef fd("","graph_legend");
ol.generateDoc("graph_legend",1,&fd,0,legendDocs,FALSE,FALSE);
// restore config settings
stripCommentsStateRef = oldStripCommentsState;
createSubdirs = oldCreateSubdirs;
endFile(ol);
}
static void writeGroupHierarchy ( OutputList ol,
FTVHelp ftv,
bool  addToIndex 
)
static
static void writeGroupIndex ( OutputList ol)
static

Definition at line 3603 of file index.cpp.

References IndexList::addContentsItem(), IndexList::decContentsDepth(), OutputList::disable(), IndexList::disable(), OutputList::disableAllBut(), documentedGroups, IndexList::enable(), endFile(), OutputList::endTextBlock(), endTitle(), LayoutNavEntry::find(), FTVHelp::generateTreeViewInline(), HLI_Modules, OutputGenerator::Html, IndexList::incContentsDepth(), Doxygen::indexList, LayoutDocManager::instance(), LayoutNavEntry::intro(), OutputGenerator::Man, LayoutNavEntry::Modules, OutputList::parseText(), OutputList::popGeneratorState(), OutputList::pushGeneratorState(), LayoutDocManager::rootNavEntry(), OutputList::startContents(), startFile(), OutputList::startTextBlock(), startTitle(), theTranslator, LayoutNavEntry::title(), Translator::trModules(), Translator::trModulesDescription(), LayoutNavEntry::visible(), writeGroupHierarchy(), and OutputList::writeString().

Referenced by writeIndexHierarchyEntries().

{
if (documentedGroups==0) return;
// 1.{
QCString title = lne ? lne->title() : theTranslator->trModules();
bool addToIndex = lne==0 || lne->visible();
startFile(ol,"modules",0,title,HLI_Modules);
startTitle(ol,0);
ol.parseText(title);
endTitle(ol,0,0);
// ---------------
// Normal group index for Latex/RTF
// ---------------
// 2.{
writeGroupHierarchy(ol,0,FALSE);
// 2.}
// ---------------
// interactive group index for HTML
// ---------------
// 2.{
{
if (addToIndex)
{
Doxygen::indexList->addContentsItem(TRUE,title,0,"modules",0,TRUE,TRUE);
}
FTVHelp* ftv = new FTVHelp(FALSE);
writeGroupHierarchy(ol,ftv,addToIndex);
QGString outStr;
FTextStream t(&outStr);
ol.writeString(outStr);
delete ftv;
if (addToIndex)
{
}
}
// 2.}
endFile(ol);
// 1.}
}
static void writeGroupTreeNode ( OutputList ol,
GroupDef gd,
int  level,
FTVHelp ftv,
bool  addToIndex 
)
static

write groups as hierarchical trees

gd->visited &&

Definition at line 3298 of file index.cpp.

References FTVHelp::addContentsItem(), IndexList::addContentsItem(), addMembersToIndex(), MemberDef::anchor(), LayoutDocManager::Class, Config_getBool, convertToHtml(), MemberList::count(), SDict< T >::count(), FTVHelp::decContentsDepth(), IndexList::decContentsDepth(), OutputList::docify(), endIndexHierarchy(), OutputList::endIndexItem(), OutputList::endIndexListItem(), OutputList::endTypewriter(), MemberDef::enumFieldList(), GroupDef::getClasses(), Definition::getDefFileName(), Definition::getDefLine(), GroupDef::getDirs(), GroupDef::getFiles(), GroupDef::getMemberList(), GroupDef::getMemberLists(), GroupDef::getNamespaces(), GroupDef::getOutputFileBase(), MemberDef::getOutputFileBase(), GroupDef::getPages(), MemberDef::getReference(), Definition::getReference(), GroupDef::getSubGroups(), LayoutDocManager::Group, LayoutDocEntry::GroupClasses, LayoutDocEntry::GroupDirs, LayoutDocEntry::GroupFiles, LayoutDocEntry::GroupNamespaces, LayoutDocEntry::GroupNestedGroups, LayoutDocEntry::GroupPageDocs, GroupDef::groupTitle(), FTVHelp::incContentsDepth(), IndexList::incContentsDepth(), Doxygen::indexList, LayoutDocManager::instance(), GroupDef::isASubGroup(), MemberDef::isEnumerate(), Definition::isReference(), Definition::isVisible(), SDict< ClassDef >::Iterator, SDict< NamespaceDef >::Iterator, LayoutDocEntry::kind(), SectionInfo::label, LayoutDocEntry::MemberDef, MemberListType_documentationLists, Definition::name(), OutputList::parseText(), Doxygen::sectionDict, startIndexHierarchy(), OutputList::startIndexItem(), OutputList::startIndexListItem(), OutputList::startTypewriter(), LayoutDocEntryMemberDef::type, warn(), and writePages().

Referenced by writeGroupHierarchy().

{
//bool fortranOpt = Config_getBool(OPTIMIZE_FOR_FORTRAN);
//bool vhdlOpt = Config_getBool(OPTIMIZE_OUTPUT_VHDL);
if (level>20)
{
"maximum nesting level exceeded for group %s: check for possible recursive group relation!\n",gd->name().data()
);
return;
}
/* Some groups should appear twice under different parent-groups.
* That is why we should not check if it was visited
*/
if ( (!gd->isASubGroup() || level>0) &&
gd->isVisible() &&
(!gd->isReference() || Config_getBool(EXTERNAL_GROUPS)) // hide external groups by default
)
{
//printf("gd->name()=%s #members=%d\n",gd->name().data(),gd->countMembers());
// write group info
bool hasSubGroups = gd->getSubGroups()->count()>0;
bool hasSubPages = gd->getPages()->count()>0;
int numSubItems = 0;
if (1 /*Config_getBool(TOC_EXPAND)*/)
{
QListIterator<MemberList> mli(gd->getMemberLists());
for (mli.toFirst();(ml=mli.current());++mli)
{
{
numSubItems += ml->count();
}
}
numSubItems += gd->getNamespaces()->count();
numSubItems += gd->getClasses()->count();
numSubItems += gd->getFiles()->count();
numSubItems += gd->getDirs()->count();
numSubItems += gd->getPages()->count();
}
bool isDir = hasSubGroups || hasSubPages || numSubItems>0;
//printf("gd=`%s': pageDict=%d\n",gd->name().data(),gd->pageDict->count());
if (addToIndex)
{
}
if (ftv)
{
ftv->addContentsItem(hasSubGroups,gd->groupTitle(),
FALSE,FALSE,gd);
}
//ol.writeListItem();
//ol.startTextLink(gd->getOutputFileBase(),0);
//parseText(ol,gd->groupTitle());
//ol.endTextLink();
ol.parseText(gd->groupTitle());
if (gd->isReference())
{
ol.docify(" [external]");
}
QListIterator<LayoutDocEntry> eli(LayoutDocManager::instance().docEntries(LayoutDocManager::Group));
for (eli.toFirst();(lde=eli.current());++eli)
{
if (lde->kind()==LayoutDocEntry::MemberDef && addToIndex)
{
MemberList *ml = gd->getMemberList(lmd->type);
if (ml)
{
MemberDef *md;
for (mi.toFirst();(md=mi.current());++mi)
{
MemberList *enumList = md->enumFieldList();
bool isDir = enumList!=0 && md->isEnumerate();
if (md->isVisible() && md->name().find('@')==-1)
{
md->name(),md->getReference(),
md->getOutputFileBase(),md->anchor(),FALSE,addToIndex);
}
if (isDir)
{
MemberListIterator emli(*enumList);
MemberDef *emd;
for (emli.toFirst();(emd=emli.current());++emli)
{
if (emd->isVisible())
{
emd->name(),emd->getReference(),emd->getOutputFileBase(),
emd->anchor(),FALSE,addToIndex);
}
}
}
}
}
}
else if (lde->kind()==LayoutDocEntry::GroupClasses && addToIndex)
{
ClassDef *cd;
for (;(cd=it.current());++it)
{
//bool nestedClassInSameGroup =
// cd->getOuterScope() && cd->getOuterScope()->definitionType()==Definition::TypeClass &&
// cd->getOuterScope()->partOfGroups()!=0 && cd->getOuterScope()->partOfGroups()->contains(gd);
//printf("===== GroupClasses: %s visible=%d nestedClassInSameGroup=%d\n",cd->name().data(),cd->isVisible(),nestedClassInSameGroup);
if (cd->isVisible() /*&& !nestedClassInSameGroup*/)
{
//if (cd->isEmbeddedInOuterScope())
//{
//printf("add class & members %d\n",addToIndex);
addMembersToIndex(cd,LayoutDocManager::Class,cd->displayName(FALSE),cd->anchor(),addToIndex,TRUE);
//}
//else // only index the class, not its members
//{
// printf("%s: add class only\n",cd->name().data());
// Doxygen::indexList->addContentsItem(FALSE,
// cd->displayName(TRUE),cd->getReference(),
// cd->getOutputFileBase(),cd->anchor(),addToIndex,TRUE);
//}
}
}
}
else if (lde->kind()==LayoutDocEntry::GroupNamespaces && addToIndex)
{
for (;(nd=it.current());++it)
{
if (nd->isVisible())
{
nd->localName(),nd->getReference(),
nd->getOutputFileBase(),0,FALSE,FALSE);
}
}
}
else if (lde->kind()==LayoutDocEntry::GroupFiles && addToIndex)
{
QListIterator<FileDef> it(*gd->getFiles());
FileDef *fd;
for (;(fd=it.current());++it)
{
if (fd->isVisible())
{
fd->displayName(),fd->getReference(),
fd->getOutputFileBase(),0,FALSE,FALSE);
}
}
}
else if (lde->kind()==LayoutDocEntry::GroupDirs && addToIndex)
{
QListIterator<DirDef> it(*gd->getDirs());
DirDef *dd;
for (;(dd=it.current());++it)
{
if (dd->isVisible())
{
dd->shortName(),dd->getReference(),
dd->getOutputFileBase(),0,FALSE,FALSE);
}
}
}
else if (lde->kind()==LayoutDocEntry::GroupPageDocs && addToIndex)
{
PageDef *pd;
for (;(pd=it.current());++it)
{
SectionInfo *si=0;
if (!pd->name().isEmpty()) si=Doxygen::sectionDict->find(pd->name());
bool hasSubPages = pd->hasSubPages();
bool hasSections = pd->hasSections();
hasSubPages || hasSections,
convertToHtml(pd->title(),TRUE),
gd->getReference(),
si ? si->label.data() : 0,
hasSubPages || hasSections,
TRUE); // addToNavIndex
if (hasSections || hasSubPages)
{
}
if (hasSections)
{
pd->addSectionsToIndex();
}
writePages(pd,0);
if (hasSections || hasSubPages)
{
}
}
}
{
if (gd->getSubGroups()->count()>0)
{
startIndexHierarchy(ol,level+1);
QListIterator<GroupDef> gli(*gd->getSubGroups());
GroupDef *subgd = 0;
for (gli.toFirst();(subgd=gli.current());++gli)
{
writeGroupTreeNode(ol,subgd,level+1,ftv,addToIndex);
}
endIndexHierarchy(ol,level+1);
}
}
}
if (addToIndex)
{
}
if (ftv)
{
}
//gd->visited=TRUE;
}
}
static void writeHierarchicalIndex ( OutputList ol)
static

Definition at line 956 of file index.cpp.

References IndexList::addContentsItem(), LayoutNavEntry::ClassHierarchy, Config_getBool, OutputList::disable(), IndexList::disable(), OutputList::disableAllBut(), OutputList::enable(), IndexList::enable(), endFile(), OutputList::endParagraph(), OutputList::endTextBlock(), OutputList::endTextLink(), endTitle(), LayoutNavEntry::find(), FTVHelp::generateTreeViewInline(), hierarchyClasses, HLI_Hierarchy, OutputGenerator::Html, Doxygen::indexList, LayoutDocManager::instance(), LayoutNavEntry::intro(), OutputGenerator::Latex, OutputGenerator::Man, OutputList::parseText(), OutputList::popGeneratorState(), OutputList::pushGeneratorState(), LayoutDocManager::rootNavEntry(), OutputGenerator::RTF, OutputList::startContents(), startFile(), OutputList::startParagraph(), OutputList::startTextBlock(), OutputList::startTextLink(), startTitle(), theTranslator, LayoutNavEntry::title(), Translator::trClassHierarchy(), Translator::trClassHierarchyDescription(), Translator::trGotoGraphicalHierarchy(), LayoutNavEntry::visible(), writeClassHierarchy(), and OutputList::writeString().

Referenced by writeIndexHierarchyEntries().

{
if (hierarchyClasses==0) return;
//1.{
QCString title = lne ? lne->title() : theTranslator->trClassHierarchy();
bool addToIndex = lne==0 || lne->visible();
startFile(ol,"hierarchy",0, title, HLI_Hierarchy);
startTitle(ol,0);
ol.parseText(title);
endTitle(ol,0,0);
if (Config_getBool(HAVE_DOT) && Config_getBool(GRAPHICAL_HIERARCHY))
{
ol.startTextLink("inherits",0);
}
// ---------------
// Static class hierarchy for Latex/RTF
// ---------------
//2.{
writeClassHierarchy(ol,0,addToIndex);
//2.}
// ---------------
// Dynamic class hierarchical index for HTML
// ---------------
//2.{
{
if (addToIndex)
{
Doxygen::indexList->addContentsItem(TRUE,title,0,"hierarchy",0,TRUE,TRUE);
}
FTVHelp* ftv = new FTVHelp(FALSE);
writeClassHierarchy(ol,ftv,addToIndex);
QGString outStr;
FTextStream t(&outStr);
ol.writeString(outStr);
delete ftv;
}
//2.}
// ------
endFile(ol);
//1.}
}
static void writeIndex ( OutputList ol)
static

Definition at line 3767 of file index.cpp.

References IndexList::addContentsItem(), annotatedClassesPrinted, Config_getBool, Config_getString, OutputList::disable(), OutputList::disableAllBut(), Definition::docFile(), Definition::docLine(), documentedFiles, documentedGroups, documentedNamespaces, documentedPages, OutputList::enable(), endFile(), OutputList::endHeaderSection(), OutputList::endIndexSection(), OutputList::endProjectNumber(), OutputList::endQuickIndices(), OutputList::endTextBlock(), OutputList::endTitleHead(), Doxygen::exampleSDict, filterTitle(), OutputList::generateDoc(), PageDef::getGroupDef(), Definition::getOuterScope(), PageDef::getOutputFileBase(), PageDef::hasParentPage(), hierarchyClasses, HLI_Main, OutputGenerator::Html, Doxygen::indexList, Doxygen::insideMainPage, isClassDocumentation, isClassHierarchyIndex, isCompoundIndex, isEndIndex, isExampleDocumentation, isFileDocumentation, isFileIndex, isMainPage, isModuleDocumentation, isModuleIndex, isNamespaceDocumentation, isNamespaceIndex, isPageDocumentation, isPageDocumentation2, Definition::isReference(), isTitlePageAuthor, isTitlePageStart, SDict< PageDef >::Iterator, OutputList::lastIndexPage(), OutputGenerator::Latex, Doxygen::mainPage, mainPageHasTitle(), OutputGenerator::Man, Definition::name(), Doxygen::pageSDict, OutputList::parseText(), OutputList::popGeneratorState(), OutputList::pushGeneratorState(), OutputGenerator::RTF, OutputList::startContents(), OutputList::startFile(), startFile(), OutputList::startHeaderSection(), OutputList::startIndexSection(), OutputList::startProjectNumber(), OutputList::startQuickIndices(), OutputList::startTextBlock(), OutputList::startTitleHead(), theTranslator, PageDef::title(), Translator::trClassDocumentation(), Translator::trCompoundIndex(), Translator::trCompoundIndexFortran(), VhdlDocGen::trDesignUnitIndex(), Translator::trDocumentation(), Translator::trExampleDocumentation(), Translator::trFileDocumentation(), Translator::trFileIndex(), Translator::trGeneratedBy(), Translator::trHierarchicalIndex(), Translator::trMainPage(), Translator::trModuleDocumentation(), Translator::trModuleIndex(), Translator::trModulesIndex(), Translator::trNamespaceDocumentation(), Translator::trNamespaceIndex(), Translator::trReferenceManual(), Translator::trTypeDocumentation(), OutputList::writeAnchor(), OutputList::writePageLink(), writePages(), OutputList::writeQuickLinks(), OutputList::writeSearchInfo(), OutputList::writeSplitBar(), and Definition::writeToc().

Referenced by writeIndexHierarchyEntries().

{
static bool fortranOpt = Config_getBool(OPTIMIZE_FOR_FORTRAN);
static bool vhdlOpt = Config_getBool(OPTIMIZE_OUTPUT_VHDL);
static QCString projectName = Config_getString(PROJECT_NAME);
// save old generator state
QCString projPrefix;
if (!projectName.isEmpty())
{
projPrefix=projectName+" ";
}
//--------------------------------------------------------------------
// write HTML index
//--------------------------------------------------------------------
QCString defFileName =
Doxygen::mainPage ? Doxygen::mainPage->docFile().data() : "[generated]";
int defLine =
QCString title;
{
}
{
title = filterTitle(Doxygen::mainPage->title());
}
QCString indexName="index";
ol.startFile(indexName,0,title);
{
if (
(!projectName.isEmpty() && mainPageHasTitle() && qstricmp(title,projectName)!=0)
) // to avoid duplicate entries in the treeview
{
Doxygen::indexList->addContentsItem(Doxygen::mainPage->hasSubPages(),title,0,indexName,0,Doxygen::mainPage->hasSubPages(),TRUE);
}
if (Doxygen::mainPage->hasSubPages() || Doxygen::mainPage->hasSections())
{
}
}
if (!Config_getBool(DISABLE_INDEX))
{
}
ol.writeSplitBar(indexName);
bool headerWritten=FALSE;
if (Doxygen::mainPage && !Doxygen::mainPage->title().isEmpty())
{
if (Doxygen::mainPage->title().lower()!="notitle")
{
TRUE,FALSE,0,TRUE,FALSE);
headerWritten = TRUE;
}
}
else
{
if (!projectName.isEmpty())
{
headerWritten = TRUE;
}
}
if (headerWritten)
{
ol.endTitleHead(0,0);
}
if (Config_getBool(DISABLE_INDEX) && Doxygen::mainPage==0)
{
}
{
if (Doxygen::mainPage->showToc() && Doxygen::mainPage->hasSections())
{
}
ol.generateDoc(defFileName,defLine,Doxygen::mainPage,0,
Doxygen::mainPage->documentation(),TRUE,FALSE
/*,Doxygen::mainPage->sectionDict*/);
}
endFile(ol);
//--------------------------------------------------------------------
// write LaTeX/RTF index
//--------------------------------------------------------------------
ol.startFile("refman",0,0);
if (!Config_getString(LATEX_HEADER).isEmpty())
{
}
if (projPrefix.isEmpty())
{
}
else
{
ol.parseText(projPrefix);
}
if (!Config_getString(PROJECT_NUMBER).isEmpty())
{
ol.generateDoc(defFileName,defLine,Doxygen::mainPage,0,Config_getString(PROJECT_NUMBER),FALSE,FALSE);
}
{
{
}
else
{
ol.parseText(/*projPrefix+*/theTranslator->trMainPage());
}
}
{
//ol.parseText(projPrefix+theTranslator->trPageDocumentation());
//ol.endIndexSection(isPageDocumentation);
PageDef *pd=pdi.toFirst();
bool first=Doxygen::mainPage==0;
for (pdi.toFirst();(pd=pdi.current());++pdi)
{
if (!pd->getGroupDef() && !pd->isReference() &&
(!pd->hasParentPage() || // not inside other page
(Doxygen::mainPage==pd->getOuterScope())) // or inside main page
)
{
bool isCitationPage = pd->name()=="citelist";
if (isCitationPage)
{
// For LaTeX the bibliograph is already written by \bibliography
}
QCString title = pd->title();
if (title.isEmpty()) title=pd->name();
ol.parseText(title);
ol.pushGeneratorState(); // write TOC title (RTF only)
ol.parseText(title);
first=FALSE;
if (isCitationPage)
{
}
}
}
}
if (!Config_getBool(LATEX_HIDE_INDICES))
{
//if (indexedPages>0)
//{
// ol.startIndexSection(isPageIndex);
// ol.parseText(/*projPrefix+*/ theTranslator->trPageIndex());
// ol.endIndexSection(isPageIndex);
//}
{
ol.parseText(/*projPrefix+*/ theTranslator->trModuleIndex());
}
{
ol.parseText(/*projPrefix+*/(fortranOpt?theTranslator->trModulesIndex():theTranslator->trNamespaceIndex()));
}
{
ol.parseText(/*projPrefix+*/
theTranslator->trHierarchicalIndex()
));
}
{
ol.parseText(/*projPrefix+*/
theTranslator->trCompoundIndex()
));
}
{
ol.parseText(/*projPrefix+*/theTranslator->trFileIndex());
}
}
{
}
{
}
{
}
{
}
if (Doxygen::exampleSDict->count()>0)
{
}
endFile(ol);
{
ol.generateDoc(defFileName,defLine,Doxygen::mainPage,0,
Doxygen::mainPage->documentation(),FALSE,FALSE
);
endFile(ol);
}
}
void writeIndexHierarchy ( OutputList ol)
static void writeIndexHierarchyEntries ( OutputList ol,
const QList< LayoutNavEntry > &  entries 
)
static

Definition at line 4078 of file index.cpp.

References IndexList::addContentsItem(), annotatedClasses, LayoutNavEntry::baseFile(), LayoutNavEntry::children(), LayoutNavEntry::Classes, LayoutNavEntry::ClassHierarchy, LayoutNavEntry::ClassIndex, LayoutNavEntry::ClassList, LayoutNavEntry::ClassMembers, Config_getBool, correctURL(), IndexList::decContentsDepth(), documentedHtmlFiles, documentedNamespaces, LayoutNavEntry::Examples, LayoutNavEntry::FileGlobals, LayoutNavEntry::FileList, LayoutNavEntry::Files, IndexList::incContentsDepth(), Doxygen::indexList, LayoutDocManager::instance(), LayoutNavEntry::kind(), LayoutNavEntry::MainPage, LayoutNavEntry::Modules, msg(), LayoutNavEntry::NamespaceList, LayoutNavEntry::NamespaceMembers, LayoutNavEntry::Namespaces, LayoutNavEntry::Pages, LayoutNavEntry::title(), LayoutNavEntry::url(), LayoutNavEntry::User, LayoutNavEntry::UserGroup, LayoutNavEntry::visible(), writeAlphabeticalIndex(), writeAnnotatedIndex(), writeClassMemberIndex(), writeExampleIndex(), writeFileIndex(), writeFileMemberIndex(), writeGraphicalClassHierarchy(), writeGroupIndex(), writeHierarchicalIndex(), writeIndex(), writeNamespaceIndex(), writeNamespaceMemberIndex(), writePageIndex(), and writeUserGroupStubPage().

Referenced by writeIndexHierarchy().

{
QListIterator<LayoutNavEntry> li(entries);
for (li.toFirst();(lne=li.current());++li)
{
LayoutNavEntry::Kind kind = lne->kind();
uint index = (uint)kind;
if (index>=indexWritten.size())
{
uint i;
uint oldSize = indexWritten.size();
uint newSize = index+1;
indexWritten.resize(newSize);
for (i=oldSize;i<newSize;i++) indexWritten.at(i)=FALSE;
}
//printf("starting %s kind=%d\n",lne->title().data(),lne->kind());
bool addToIndex=lne->visible();
bool needsClosing=FALSE;
if (!indexWritten.at(index))
{
switch(kind)
{
msg("Generating index page...\n");
writeIndex(ol);
break;
msg("Generating page index...\n");
break;
msg("Generating module index...\n");
break;
{
static bool showNamespaces = Config_getBool(SHOW_NAMESPACES);
if (showNamespaces)
{
if (documentedNamespaces>0 && addToIndex)
{
needsClosing=TRUE;
}
if (LayoutDocManager::instance().rootNavEntry()->find(LayoutNavEntry::Namespaces)!=lne) // for backward compatibility with old layout file
{
msg("Generating namespace index...\n");
}
}
}
break;
{
static bool showNamespaces = Config_getBool(SHOW_NAMESPACES);
if (showNamespaces)
{
msg("Generating namespace index...\n");
}
}
break;
msg("Generating namespace member index...\n");
break;
if (annotatedClasses>0 && addToIndex)
{
Doxygen::indexList->addContentsItem(TRUE,lne->title(),0,"annotated",0);
needsClosing=TRUE;
}
if (LayoutDocManager::instance().rootNavEntry()->find(LayoutNavEntry::Classes)!=lne) // for backward compatibility with old layout file
{
msg("Generating annotated compound index...\n");
}
break;
msg("Generating annotated compound index...\n");
break;
msg("Generating alphabetical compound index...\n");
break;
msg("Generating hierarchical class index...\n");
if (Config_getBool(HAVE_DOT) && Config_getBool(GRAPHICAL_HIERARCHY))
{
msg("Generating graphical class hierarchy...\n");
}
break;
msg("Generating member index...\n");
break;
{
static bool showFiles = Config_getBool(SHOW_FILES);
if (showFiles)
{
if (documentedHtmlFiles>0 && addToIndex)
{
needsClosing=TRUE;
}
if (LayoutDocManager::instance().rootNavEntry()->find(LayoutNavEntry::Files)!=lne) // for backward compatibility with old layout file
{
msg("Generating file index...\n");
}
}
}
break;
{
static bool showFiles = Config_getBool(SHOW_FILES);
if (showFiles)
{
msg("Generating file index...\n");
}
}
break;
msg("Generating file member index...\n");
break;
msg("Generating example index...\n");
break;
{
// prepend a ! or ^ marker to the URL to avoid tampering with it
QCString url = correctURL(lne->url(),"!"); // add ! to relative URL
bool isRelative=url.at(0)=='!';
if (!url.isEmpty() && !isRelative) // absolute URL
{
url.prepend("^"); // prepend ^ to absolute URL
}
bool isRef = lne->baseFile().left(4)=="@ref" || lne->baseFile().left(4)=="\\ref";
Doxygen::indexList->addContentsItem(TRUE,lne->title(),0,url,0,FALSE,isRef || isRelative);
}
break;
if (addToIndex)
{
QCString url = correctURL(lne->url(),"!"); // add ! to relative URL
if (!url.isEmpty())
{
if (url=="![none]")
{
Doxygen::indexList->addContentsItem(TRUE,lne->title(),0,0,0,FALSE,FALSE);
}
else
{
bool isRelative=url.at(0)=='!';
if (!isRelative) // absolute URL
{
url.prepend("^"); // prepend ^ to absolute URL
}
bool isRef = lne->baseFile().left(4)=="@ref" || lne->baseFile().left(4)=="\\ref";
Doxygen::indexList->addContentsItem(TRUE,lne->title(),0,url,0,FALSE,isRef || isRelative);
}
}
else
{
Doxygen::indexList->addContentsItem(TRUE,lne->title(),0,lne->baseFile(),0,TRUE,TRUE);
}
needsClosing=TRUE;
}
break;
}
if (kind!=LayoutNavEntry::User && kind!=LayoutNavEntry::UserGroup) // User entry may appear multiple times
{
indexWritten.at(index)=TRUE;
}
}
if (needsClosing)
{
switch(kind)
{
break;
default:
break;
}
}
//printf("ending %s kind=%d\n",lne->title().data(),lne->kind());
}
}
static void writeMemberList ( OutputList ol,
bool  useSections,
int  page,
const LetterToIndexMap< MemberIndexList > &  memberLists,
DefinitionIntf::DefType  type 
)
static

Definition at line 2157 of file index.cpp.

References SIntDict< T >::Iterator::current(), getPrefixIndex(), MemberDef::isFunction(), MemberDef::isObjCMethod(), MemberDef::isSignal(), MemberDef::isSlot(), MemberIndexList::letter(), letterToLabel(), Definition::name(), SectionInfo::Subsection, SIntDict< T >::Iterator::toFirst(), SIntDict< T >::Iterator::toLast(), writeClassLinkForMember(), writeFileLinkForMember(), and writeNamespaceLinkForMember().

Referenced by writeClassMemberIndexFiltered(), writeFileMemberIndexFiltered(), and writeNamespaceMemberIndexFiltered().

{
int index = (int)type;
ASSERT(index<3);
typedef void (*writeLinkForMember_t)(OutputList &ol,MemberDef *md,const char *separator,
QCString &prevNamespaceName);
// each index tab has its own write function
static writeLinkForMember_t writeLinkForMemberMap[3] =
{
};
QCString prevName;
QCString prevDefName;
bool first=TRUE;
bool firstSection=TRUE;
bool firstItem=TRUE;
for (it.toFirst();(ml=it.current());++it)
{
if (page!=-1)
{
ml = memberLists[page];
it.toLast();
}
if (ml==0 || ml->count()==0) continue;
ml->sort();
QListIterator<MemberDef> mli(*ml);
MemberDef *md;
for (mli.toFirst();(md=mli.current());++mli)
{
const char *sep;
bool isFunc=!md->isObjCMethod() &&
(md->isFunction() || md->isSlot() || md->isSignal());
QCString name=md->name();
int startIndex = getPrefixIndex(name);
if (QCString(name.data()+startIndex)!=prevName) // new entry
{
if ((prevName.isEmpty() ||
tolower(name.at(startIndex))!=tolower(prevName.at(0))) &&
useSections) // new section
{
if (!firstItem) ol.endItemListItem();
if (!firstSection) ol.endItemList();
QCString cs = letterToLabel(ml->letter());
QCString cl = QString(QChar(ml->letter())).utf8();
QCString anchor=(QCString)"index_"+cs;
QCString title=(QCString)"- "+cl+" -";
ol.startSection(anchor,title,SectionInfo::Subsection);
ol.docify(title);
ol.endSection(anchor,SectionInfo::Subsection);
ol.startItemList();
firstSection=FALSE;
firstItem=TRUE;
}
else if (!useSections && first)
{
ol.startItemList();
first=FALSE;
}
// member name
if (!firstItem) ol.endItemListItem();
ol.startItemListItem();
firstItem=FALSE;
ol.docify(name);
if (isFunc) ol.docify("()");
ol.writeString("\n");
// link to class
prevDefName="";
sep = ": ";
prevName = name.data()+startIndex;
}
else // same entry
{
sep = ", ";
// link to class for other members with the same name
}
if (index<3)
{
// write the link for the specific list type
writeLinkForMemberMap[index](ol,md,sep,prevDefName);
}
}
}
if (!firstItem) ol.endItemListItem();
ol.endItemList();
}
static void writeMenuData ( )
static

Definition at line 4426 of file index.cpp.

References Config_getBool, endl(), LayoutDocManager::instance(), renderQuickLinksAsJs(), and LayoutDocManager::rootNavEntry().

Referenced by writeIndexHierarchy().

{
if (!Config_getBool(GENERATE_HTML) || Config_getBool(DISABLE_INDEX)) return;
QCString outputDir = Config_getBool(HTML_OUTPUT);
QFile f(outputDir+"/menudata.js");
if (f.open(IO_WriteOnly))
{
FTextStream t(&f);
t << "var menudata={";
bool hasChildren = renderQuickLinksAsJs(t,root,TRUE);
if (hasChildren) t << "]";
t << "}" << endl;
}
}
static void writeNamespaceIndex ( OutputList ol)
static

Definition at line 1448 of file index.cpp.

References IndexList::addContentsItem(), Definition::briefDescription(), Definition::briefFile(), Definition::briefLine(), Config_getBool, IndexList::decContentsDepth(), OutputList::disable(), OutputList::disableAllBut(), NamespaceDef::displayName(), documentedNamespaces, endFile(), OutputList::endIndexKey(), OutputList::endIndexList(), OutputList::endIndexValue(), OutputList::endTextBlock(), endTitle(), LayoutNavEntry::find(), OutputList::generateDoc(), FTVHelp::generateTreeViewInline(), Definition::getLanguage(), NamespaceDef::getOutputFileBase(), HLI_Namespaces, OutputGenerator::Html, IndexList::incContentsDepth(), Doxygen::indexList, LayoutDocManager::instance(), LayoutNavEntry::intro(), NamespaceDef::isLinkableInProject(), SDict< NamespaceDef >::Iterator, OutputGenerator::Man, LayoutNavEntry::NamespaceList, LayoutNavEntry::Namespaces, Doxygen::namespaceSDict, OutputList::parseText(), OutputList::popGeneratorState(), OutputList::pushGeneratorState(), LayoutDocManager::rootNavEntry(), SrcLangExt_VHDL, OutputList::startContents(), startFile(), OutputList::startIndexKey(), OutputList::startIndexList(), OutputList::startIndexValue(), OutputList::startTextBlock(), startTitle(), theTranslator, LayoutNavEntry::title(), Translator::trNamespaceList(), Translator::trNamespaceListDescription(), LayoutNavEntry::visible(), writeNamespaceTree(), OutputList::writeObjectLink(), and OutputList::writeString().

Referenced by writeIndexHierarchyEntries().

{
if (documentedNamespaces==0) return;
QCString title = lne ? lne->title() : theTranslator->trNamespaceList();
bool addToIndex = lne==0 || lne->visible();
startFile(ol,"namespaces",0,title,HLI_Namespaces);
startTitle(ol,0);
ol.parseText(title);
endTitle(ol,0,0);
bool first=TRUE;
// ---------------
// Linear namespace index for Latex/RTF
// ---------------
for (nli.toFirst();(nd=nli.current());++nli)
{
{
if (first)
{
first=FALSE;
}
//ol.writeStartAnnoItem("namespace",nd->getOutputFileBase(),0,nd->name());
{
ol.writeObjectLink(0, nd->getOutputFileBase().replace(0,qstrlen("namespace"),"class"),0,nd->displayName());
}
else
{
}
bool hasBrief = !nd->briefDescription().isEmpty();
ol.startIndexValue(hasBrief);
if (hasBrief)
{
//ol.docify(" (");
nd->briefFile(),nd->briefLine(),
nd,0,
nd->briefDescription(TRUE),
FALSE, // index words
FALSE, // isExample
0, // example name
TRUE, // single line
TRUE // link from index
);
//ol.docify(")");
}
ol.endIndexValue(nd->getOutputFileBase(),hasBrief);
}
}
if (!first) ol.endIndexList();
// ---------------
// Hierarchical namespace index for HTML
// ---------------
{
if (addToIndex)
{
Doxygen::indexList->addContentsItem(TRUE,title,0,"namespaces",0,TRUE,TRUE);
}
FTVHelp* ftv = new FTVHelp(FALSE);
writeNamespaceTree(Doxygen::namespaceSDict,ftv,TRUE,FALSE,addToIndex);
QGString outStr;
FTextStream t(&outStr);
ol.writeString(outStr);
delete ftv;
if (addToIndex)
{
}
}
// ------
endFile(ol);
}
static void writeNamespaceLinkForMember ( OutputList ol,
MemberDef md,
const char *  separator,
QCString &  prevNamespaceName 
)
static
static void writeNamespaceMemberIndex ( OutputList ol)
static
static void writeNamespaceMemberIndexFiltered ( OutputList ol,
NamespaceMemberHighlight  hl 
)
static

Definition at line 2863 of file index.cpp.

References IndexList::addContentsItem(), Config_getBool, SIntDict< T >::Iterator::current(), IndexList::decContentsDepth(), OutputList::disableAllBut(), documentedNamespaceMembers, endFile(), endQuickIndexItem(), endQuickIndexList(), OutputList::endQuickIndices(), OutputList::endTextBlock(), LayoutNavEntry::find(), fixSpaces(), NmhlInfo::fname, getNmhlInfo(), HLI_NamespaceMembers, OutputGenerator::Html, Doxygen::htmlFileExtension, IndexList::incContentsDepth(), Doxygen::indexList, LayoutDocManager::instance(), LayoutNavEntry::intro(), MemberIndexList::letter(), letterToLabel(), MAX_ITEMS_BEFORE_MULTIPAGE_INDEX, maxItemsBeforeQuickIndex, LayoutNavEntry::NamespaceMembers, NMHL_All, NMHL_Total, OutputList::parseText(), OutputList::popGeneratorState(), OutputList::pushGeneratorState(), LayoutDocManager::rootNavEntry(), OutputList::startContents(), OutputList::startFile(), startQuickIndexItem(), startQuickIndexList(), OutputList::startQuickIndices(), OutputList::startTextBlock(), theTranslator, LayoutNavEntry::title(), SIntDict< T >::Iterator::toFirst(), Translator::trNamespaceMemberDescription(), Translator::trNamespaceMembers(), DefinitionIntf::TypeNamespace, LayoutNavEntry::visible(), writeMemberList(), OutputList::writeQuickLinks(), writeQuickMemberIndex(), OutputList::writeSearchInfo(), OutputList::writeSplitBar(), and OutputList::writeString().

Referenced by writeNamespaceMemberIndex().

{
if (documentedNamespaceMembers[hl]==0) return;
static bool disableIndex = Config_getBool(DISABLE_INDEX);
bool multiPageIndex=FALSE;
{
multiPageIndex=TRUE;
}
QCString extension=Doxygen::htmlFileExtension;
QCString title = lne ? lne->title() : theTranslator->trNamespaceMembers();
bool addToIndex = lne==0 || lne->visible();
if (addToIndex)
{
Doxygen::indexList->addContentsItem(multiPageIndex,getNmhlInfo(hl)->title,0,
getNmhlInfo(hl)->fname,0,multiPageIndex,TRUE);
if (multiPageIndex) Doxygen::indexList->incContentsDepth();
}
bool first=TRUE;
for (it.toFirst();(ml=it.current());++it)
{
uint page = ml->letter();
QCString fileName = getNmhlInfo(hl)->fname;
if (multiPageIndex)
{
if (!first)
{
fileName+="_"+letterToLabel(page);
}
QCString cs = QString(QChar(page)).utf8();
if (addToIndex)
{
Doxygen::indexList->addContentsItem(FALSE,cs,0,fileName,0,FALSE,TRUE);
}
}
ol.startFile(fileName+extension,0,title);
if (!disableIndex)
{
#if 0
// index item for all namespace member lists
getNmhlInfo(0)->fname+Doxygen::htmlFileExtension,hl==NMHL_All,TRUE,first);
int i;
// index items per category member lists
for (i=1;i<NMHL_Total;i++)
{
{
getNmhlInfo(i)->fname+Doxygen::htmlFileExtension,hl==i,TRUE,first);
}
}
if (quickIndex)
{
getNmhlInfo(hl)->fname,multiPageIndex);
}
#endif
}
ol.writeSplitBar(fileName);
if (hl==NMHL_All)
{
}
else
{
// hack to work around a mozilla bug, which refuses to switch to
// normal lists otherwise
ol.writeString("&#160;");
}
writeMemberList(ol,quickIndex,
multiPageIndex?page:-1,
endFile(ol);
}
if (multiPageIndex && addToIndex) Doxygen::indexList->decContentsDepth();
}
static void writeNamespaceTree ( NamespaceSDict nsDict,
FTVHelp ftv,
bool  rootOnly,
bool  showClasses,
bool  addToIndex 
)
static

Definition at line 1389 of file index.cpp.

References FTVHelp::addContentsItem(), IndexList::addContentsItem(), FTVHelp::decContentsDepth(), IndexList::decContentsDepth(), NamespaceDef::getClassSDict(), Definition::getLanguage(), NamespaceDef::getNamespaceSDict(), Definition::getOuterScope(), NamespaceDef::getOutputFileBase(), Definition::getReference(), Doxygen::globalScope, FTVHelp::incContentsDepth(), IndexList::incContentsDepth(), Doxygen::indexList, NamespaceDef::isLinkableInProject(), SDict< NamespaceDef >::Iterator, NamespaceDef::localName(), namespaceHasVisibleChild(), SrcLangExt_VHDL, and writeClassTree().

Referenced by writeAnnotatedIndex(), and writeNamespaceIndex().

{
if (nsDict)
{
for (nli.toFirst();(nd=nli.current());++nli)
{
if (nd->localName().find('@')==-1 &&
(!rootOnly || nd->getOuterScope()==Doxygen::globalScope))
{
bool hasChildren = namespaceHasVisibleChild(nd,showClasses);
bool isLinkable = nd->isLinkableInProject();
QCString ref;
QCString file;
if (isLinkable)
{
ref = nd->getReference();
file = nd->getOutputFileBase();
if (nd->getLanguage()==SrcLangExt_VHDL) // UGLY HACK
{
file=file.replace(0,qstrlen("namespace"),"class");
}
}
if ((isLinkable && !showClasses) || hasChildren)
{
ftv->addContentsItem(hasChildren,nd->localName(),ref,file,0,FALSE,TRUE,nd);
if (addToIndex)
{
Doxygen::indexList->addContentsItem(hasChildren,nd->localName(),ref,file,QCString(),
hasChildren && !file.isEmpty(),addToIndex);
}
//printf("*** writeNamespaceTree count=%d addToIndex=%d showClasses=%d classCount=%d\n",
// count,addToIndex,showClasses,classCount);
if (hasChildren)
{
writeNamespaceTree(nd->getNamespaceSDict(),ftv,FALSE,showClasses,addToIndex);
if (showClasses)
{
writeClassTree(nd->getClassSDict(),ftv,addToIndex,FALSE);
}
}
}
}
}
}
}
static void writePageIndex ( OutputList ol)
static

Definition at line 3168 of file index.cpp.

References DefinitionIntf::definitionType(), OutputList::disableAllBut(), endFile(), OutputList::endTextBlock(), endTitle(), LayoutNavEntry::find(), FTVHelp::generateTreeViewInline(), Definition::getOuterScope(), HLI_Pages, OutputGenerator::Html, indexedPages, LayoutDocManager::instance(), LayoutNavEntry::intro(), Definition::isReference(), SDict< PageDef >::Iterator, LayoutNavEntry::Pages, Doxygen::pageSDict, OutputList::parseText(), OutputList::popGeneratorState(), OutputList::pushGeneratorState(), LayoutDocManager::rootNavEntry(), OutputList::startContents(), startFile(), OutputList::startTextBlock(), startTitle(), theTranslator, LayoutNavEntry::title(), Translator::trRelatedPages(), Translator::trRelatedPagesDescription(), DefinitionIntf::TypePage, writePages(), and OutputList::writeString().

Referenced by writeIndexHierarchyEntries().

{
if (indexedPages==0) return;
QCString title = lne ? lne->title() : theTranslator->trRelatedPages();
startFile(ol,"pages",0,title,HLI_Pages);
startTitle(ol,0);
ol.parseText(title);
endTitle(ol,0,0);
{
FTVHelp* ftv = new FTVHelp(FALSE);
PageDef *pd=0;
for (pdi.toFirst();(pd=pdi.current());++pdi)
{
if ((pd->getOuterScope()==0 ||
pd->getOuterScope()->definitionType()!=Definition::TypePage) && // not a sub page
!pd->isReference() // not an external page
)
{
writePages(pd,ftv);
}
}
QGString outStr;
FTextStream t(&outStr);
ol.writeString(outStr);
delete ftv;
}
// ol.popGeneratorState();
// ------
endFile(ol);
}
static void writePages ( PageDef pd,
FTVHelp ftv 
)
static

Definition at line 3102 of file index.cpp.

References FTVHelp::addContentsItem(), IndexList::addContentsItem(), Definition::addSectionsToIndex(), FTVHelp::decContentsDepth(), IndexList::decContentsDepth(), filterTitle(), LayoutNavEntry::find(), PageDef::getOutputFileBase(), Definition::getReference(), PageDef::getSubPages(), Definition::hasSections(), PageDef::hasSubPages(), FTVHelp::incContentsDepth(), IndexList::incContentsDepth(), Doxygen::indexList, LayoutDocManager::instance(), SDict< PageDef >::Iterator, Doxygen::mainPage, mainPageHasOwnTitle(), Definition::name(), LayoutNavEntry::Pages, LayoutDocManager::rootNavEntry(), PageDef::title(), LayoutNavEntry::visible(), and PageDef::visibleInIndex().

Referenced by writeGroupTreeNode(), writeIndex(), and writePageIndex().

{
//printf("writePages()=%s pd=%p mainpage=%p\n",pd->name().data(),pd,Doxygen::mainPage);
bool addToIndex = lne==0 || lne->visible();
if (!addToIndex) return;
bool hasSubPages = pd->hasSubPages();
bool hasSections = pd->hasSections();
if (pd->visibleInIndex())
{
QCString pageTitle;
if (pd->title().isEmpty())
pageTitle=pd->name();
else
pageTitle=filterTitle(pd->title());
if (ftv)
{
//printf("*** adding %s hasSubPages=%d hasSections=%d\n",pageTitle.data(),hasSubPages,hasSections);
hasSubPages,pageTitle,
0,hasSubPages,TRUE,pd);
}
if (addToIndex && pd!=Doxygen::mainPage)
{
hasSubPages || hasSections,pageTitle,
0,hasSubPages,TRUE);
}
}
if (hasSubPages && ftv) ftv->incContentsDepth();
bool doIndent = (hasSections || hasSubPages) &&
if (doIndent)
{
}
if (hasSections)
{
}
PageSDict *subPages = pd->getSubPages();
if (subPages)
{
PageSDict::Iterator pi(*subPages);
PageDef *subPage;
for (pi.toFirst();(subPage=pi.current());++pi)
{
writePages(subPage,ftv);
}
}
if (hasSubPages && ftv) ftv->decContentsDepth();
if (doIndent)
{
}
//printf("end writePages()=%s\n",pd->title().data());
}
static void writeQuickMemberIndex ( OutputList ol,
const LetterToIndexMap< MemberIndexList > &  charUsed,
uint  page,
QCString  fullName,
bool  multiPage 
)
static

Definition at line 2459 of file index.cpp.

References SIntDict< T >::Iterator::current(), endQuickIndexItem(), endQuickIndexList(), Doxygen::htmlFileExtension, MemberIndexList::letter(), letterToLabel(), startQuickIndexItem(), startQuickIndexList(), SIntDict< T >::Iterator::toFirst(), and OutputList::writeString().

Referenced by writeClassMemberIndexFiltered(), writeFileMemberIndexFiltered(), and writeNamespaceMemberIndexFiltered().

{
bool first=TRUE;
for (it.toFirst();(ml=it.current());++it)
{
uint i = ml->letter();
QCString is = letterToLabel(i);
QCString ci = QString(QChar(i)).utf8();
QCString anchor;
QCString extension=Doxygen::htmlFileExtension;
if (!multiPage)
anchor="#index_";
else if (first)
anchor=fullName+extension+"#index_";
else
anchor=fullName+"_"+letterToLabel(i)+extension+"#index_";
startQuickIndexItem(ol,anchor+is,i==page,TRUE,first);
ol.writeString(ci);
first=FALSE;
}
}
static void writeSingleFileIndex ( OutputList ol,
FileDef fd 
)
static

Definition at line 1089 of file index.cpp.

References Definition::briefDescription(), Definition::briefFile(), Definition::briefLine(), Config_getBool, OutputList::disableAllBut(), doc, OutputList::docify(), OutputList::endBold(), OutputList::endIndexKey(), OutputList::endIndexValue(), OutputList::endTextLink(), OutputList::generateDoc(), FileDef::generateSourceFile(), FileDef::getOutputFileBase(), FileDef::getPath(), OutputGenerator::Html, FileDef::includeName(), FileDef::isDocumentationFile(), FileDef::isLinkableInProject(), Definition::isReference(), FileDef::name(), OutputList::parseText(), OutputList::popGeneratorState(), OutputList::pushGeneratorState(), OutputList::startBold(), OutputList::startIndexKey(), OutputList::startIndexValue(), OutputList::startTextLink(), stripFromPath(), theTranslator, Translator::trCode(), and OutputList::writeObjectLink().

Referenced by writeFileIndex().

{
//printf("Found filedef %s\n",fd->name().data());
bool doc = fd->isLinkableInProject();
bool src = fd->generateSourceFile();
bool nameOk = !fd->isDocumentationFile();
if (nameOk && (doc || src) && !fd->isReference())
{
QCString path;
if (Config_getBool(FULL_PATH_NAMES))
{
path=stripFromPath(fd->getPath().copy());
}
QCString fullName=fd->name();
if (!path.isEmpty())
{
if (path.at(path.length()-1)!='/') fullName.prepend("/");
fullName.prepend(path);
}
ol.docify(path);
if (doc)
{
ol.writeObjectLink(0,fd->getOutputFileBase(),0,fd->name());
//if (addToIndex)
//{
// addMembersToIndex(fd,LayoutDocManager::File,fullName,QCString());
//}
}
else
{
ol.startBold();
ol.docify(fd->name());
ol.endBold();
//if (addToIndex)
//{
// Doxygen::indexList->addContentsItem(FALSE,fullName,0,0,0);
//}
}
if (src)
{
ol.docify(" ");
ol.docify("[");
ol.docify("]");
}
bool hasBrief = !fd->briefDescription().isEmpty();
ol.startIndexValue(hasBrief);
if (hasBrief)
{
//ol.docify(" (");
fd->briefFile(),fd->briefLine(),
fd,0,
fd->briefDescription(TRUE),
FALSE, // index words
FALSE, // isExample
0, // example name
TRUE, // single line
TRUE // link from index
);
//ol.docify(")");
}
ol.endIndexValue(fd->getOutputFileBase(),hasBrief);
//ol.popGeneratorState();
// --------------------------------------------------------
}
}
static void writeUserGroupStubPage ( OutputList ol,
LayoutNavEntry lne 
)
static

Definition at line 3728 of file index.cpp.

References LayoutNavEntry::baseFile(), LayoutNavEntry::children(), OutputList::disableAllBut(), endFile(), endTitle(), fixSpaces(), HLI_UserGroup, OutputGenerator::Html, OutputList::parseText(), OutputList::popGeneratorState(), OutputList::pushGeneratorState(), OutputList::startContents(), startFile(), startTitle(), LayoutNavEntry::title(), and OutputList::writeString().

Referenced by writeIndexHierarchyEntries().

{
if (lne->baseFile().left(9)=="usergroup")
{
startFile(ol,lne->baseFile(),0,lne->title(),HLI_UserGroup);
startTitle(ol,0);
ol.parseText(lne->title());
endTitle(ol,0,0);
QListIterator<LayoutNavEntry> li(lne->children());
int count=0;
for (li.toFirst();(entry=li.current());++li)
{
if (entry->visible()) count++;
}
if (count>0)
{
ol.writeString("<ul>\n");
for (li.toFirst();(entry=li.current());++li)
{
if (entry->visible())
{
ol.writeString("<li><a href=\""+entry->url()+"\"><span>"+
fixSpaces(entry->title())+"</span></a></li>\n");
}
}
ol.writeString("</ul>\n");
}
endFile(ol);
}
}

Variable Documentation

int annotatedClasses
int annotatedClassesPrinted

Definition at line 56 of file index.cpp.

Referenced by countDataStructures(), writeAnnotatedIndex(), and writeIndex().

int documentedClassMembers[CMHL_Total]
int documentedDirs

Definition at line 67 of file index.cpp.

Referenced by countDataStructures().

int documentedFileMembers[FMHL_Total]
int documentedFiles

Definition at line 58 of file index.cpp.

Referenced by countDataStructures(), writeFileIndex(), and writeIndex().

int documentedGroups

Definition at line 59 of file index.cpp.

Referenced by countDataStructures(), quickLinkVisible(), writeGroupIndex(), and writeIndex().

int documentedHtmlFiles
int documentedNamespaceMembers[NMHL_Total]
int documentedNamespaces
int documentedPages

Definition at line 66 of file index.cpp.

Referenced by countDataStructures(), generatePageDocs(), and writeIndex().

LetterToIndexMap<MemberIndexList> g_fileIndexLetterUsed[FMHL_Total]
static

Definition at line 140 of file index.cpp.

LetterToIndexMap<MemberIndexList> g_memberIndexLetterUsed[CMHL_Total]
static

Definition at line 139 of file index.cpp.

LetterToIndexMap<MemberIndexList> g_namespaceIndexLetterUsed[NMHL_Total]
static

Definition at line 141 of file index.cpp.

int hierarchyClasses
int indexedPages

Definition at line 61 of file index.cpp.

Referenced by countDataStructures(), quickLinkVisible(), and writePageIndex().

QArray<bool> indexWritten
static

Definition at line 4076 of file index.cpp.

const int maxItemsBeforeQuickIndex = MAX_ITEMS_BEFORE_QUICK_INDEX