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)
 
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< MemberIndexListg_memberIndexLetterUsed [CMHL_Total]
 
static LetterToIndexMap< MemberIndexListg_fileIndexLetterUsed [FMHL_Total]
 
static LetterToIndexMap< MemberIndexListg_namespaceIndexLetterUsed [NMHL_Total]
 
const int maxItemsBeforeQuickIndex = MAX_ITEMS_BEFORE_QUICK_INDEX
 
static QArray< boolindexWritten
 

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

Definition at line 51 of file index.cpp.

#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) \
void append(const type *d)
Definition: qlist.h:73
string columns
Definition: depos.py:13
if(!yymsg) yymsg

Function Documentation

void addClassMemberNameToIndex ( MemberDef md)

Definition at line 2264 of file index.cpp.

2265 {
2266  static bool hideFriendCompounds = Config_getBool("HIDE_FRIEND_COMPOUNDS");
2267  ClassDef *cd=0;
2268 
2269 
2270 
2271  if (md->isLinkableInProject() &&
2272  (cd=md->getClassDef()) &&
2273  cd->isLinkableInProject() &&
2274  cd->templateMaster()==0)
2275  {
2276  QCString n = md->name();
2277  int index = getPrefixIndex(n);
2278  uint letter = getUtf8CodeToLower(n,index);
2279  if (!n.isEmpty())
2280  {
2281  bool isFriendToHide = hideFriendCompounds &&
2282  (QCString(md->typeString())=="friend class" ||
2283  QCString(md->typeString())=="friend struct" ||
2284  QCString(md->typeString())=="friend union");
2285  if (!(md->isFriend() && isFriendToHide) &&
2286  (!md->isEnumValue() || (md->getEnumScope() && !md->getEnumScope()->isStrong()))
2287  )
2288  {
2289  g_memberIndexLetterUsed[CMHL_All].append(letter,md);
2291  }
2292  if (md->isFunction() || md->isSlot() || md->isSignal())
2293  {
2294  g_memberIndexLetterUsed[CMHL_Functions].append(letter,md);
2296  }
2297  else if (md->isVariable())
2298  {
2299  g_memberIndexLetterUsed[CMHL_Variables].append(letter,md);
2301  }
2302  else if (md->isTypedef())
2303  {
2304  g_memberIndexLetterUsed[CMHL_Typedefs].append(letter,md);
2306  }
2307  else if (md->isEnumerate())
2308  {
2309  g_memberIndexLetterUsed[CMHL_Enums].append(letter,md);
2311  }
2312  else if (md->isEnumValue() && md->getEnumScope() && !md->getEnumScope()->isStrong())
2313  {
2314  g_memberIndexLetterUsed[CMHL_EnumValues].append(letter,md);
2316  }
2317  else if (md->isProperty())
2318  {
2319  g_memberIndexLetterUsed[CMHL_Properties].append(letter,md);
2321  }
2322  else if (md->isEvent())
2323  {
2324  g_memberIndexLetterUsed[CMHL_Events].append(letter,md);
2326  }
2327  else if (md->isRelated() || md->isForeign() ||
2328  (md->isFriend() && !isFriendToHide))
2329  {
2330  g_memberIndexLetterUsed[CMHL_Related].append(letter,md);
2332  }
2333  }
2334  }
2335 }
bool isProperty() const
Definition: memberdef.cpp:4185
bool isLinkableInProject() const
Definition: classdef.cpp:2707
bool isEmpty() const
Definition: qcstring.h:189
bool isFriend() const
Definition: memberdef.cpp:4175
static LetterToIndexMap< MemberIndexList > g_memberIndexLetterUsed[CMHL_Total]
Definition: index.cpp:139
bool isEvent() const
Definition: memberdef.cpp:4190
int documentedClassMembers[CMHL_Total]
Definition: index.cpp:62
bool isLinkableInProject() const
Definition: memberdef.cpp:1150
uint getUtf8CodeToLower(const QCString &s, int idx)
Returns one unicode character as an unsigned integer from utf-8 string, making the character lower ca...
Definition: util.cpp:8276
bool isSignal() const
Definition: memberdef.cpp:4130
bool isSlot() const
Definition: memberdef.cpp:4135
bool isVariable() const
Definition: memberdef.cpp:4140
ClassDef * templateMaster() const
Definition: classdef.cpp:4439
const char * typeString() const
Definition: memberdef.cpp:4035
MemberDef * getEnumScope() const
Definition: memberdef.cpp:4487
const QCString & name() const
Definition: definition.h:114
bool isEnumValue() const
Definition: memberdef.cpp:4150
std::void_t< T > n
bool isForeign() const
Definition: memberdef.cpp:4200
bool isStrong() const
Definition: memberdef.cpp:4345
#define Config_getBool(val)
Definition: config.cpp:664
ClassDef * getClassDef() const
Definition: memberdef.cpp:4070
int getPrefixIndex(const QCString &name)
Definition: util.cpp:5144
bool isFunction() const
Definition: memberdef.cpp:4160
bool isRelated() const
Definition: memberdef.cpp:4195
bool isTypedef() const
Definition: memberdef.cpp:4155
unsigned uint
Definition: qglobal.h:351
bool isEnumerate() const
Definition: memberdef.cpp:4145
void addFileMemberNameToIndex ( MemberDef md)

Definition at line 2406 of file index.cpp.

2407 {
2408  FileDef *fd=md->getFileDef();
2409  if (fd && fd->isLinkableInProject() && md->isLinkableInProject())
2410  {
2411  QCString n = md->name();
2412  int index = getPrefixIndex(n);
2413  uint letter = getUtf8CodeToLower(n,index);
2414  if (!n.isEmpty())
2415  {
2416  if (!md->isEnumValue() || (md->getEnumScope() && !md->getEnumScope()->isStrong()))
2417  {
2418  g_fileIndexLetterUsed[FMHL_All].append(letter,md);
2420  }
2421 
2422  if (md->isFunction())
2423  {
2424  g_fileIndexLetterUsed[FMHL_Functions].append(letter,md);
2426  }
2427  else if (md->isVariable())
2428  {
2429  g_fileIndexLetterUsed[FMHL_Variables].append(letter,md);
2431  }
2432  else if (md->isTypedef())
2433  {
2434  g_fileIndexLetterUsed[FMHL_Typedefs].append(letter,md);
2436  }
2437  else if (md->isEnumerate())
2438  {
2439  g_fileIndexLetterUsed[FMHL_Enums].append(letter,md);
2441  }
2442  else if (md->isEnumValue() && md->getEnumScope() && !md->getEnumScope()->isStrong())
2443  {
2444  g_fileIndexLetterUsed[FMHL_EnumValues].append(letter,md);
2446  }
2447  else if (md->isDefine())
2448  {
2449  g_fileIndexLetterUsed[FMHL_Defines].append(letter,md);
2451  }
2452  }
2453  }
2454 }
bool isEmpty() const
Definition: qcstring.h:189
int documentedFileMembers[FMHL_Total]
Definition: index.cpp:63
bool isLinkableInProject() const
Definition: memberdef.cpp:1150
bool isDefine() const
Definition: memberdef.cpp:4170
uint getUtf8CodeToLower(const QCString &s, int idx)
Returns one unicode character as an unsigned integer from utf-8 string, making the character lower ca...
Definition: util.cpp:8276
bool isVariable() const
Definition: memberdef.cpp:4140
FileDef * getFileDef() const
Definition: memberdef.cpp:4075
MemberDef * getEnumScope() const
Definition: memberdef.cpp:4487
const QCString & name() const
Definition: definition.h:114
bool isEnumValue() const
Definition: memberdef.cpp:4150
bool isLinkableInProject() const
Definition: filedef.cpp:1877
std::void_t< T > n
static LetterToIndexMap< MemberIndexList > g_fileIndexLetterUsed[FMHL_Total]
Definition: index.cpp:140
bool isStrong() const
Definition: memberdef.cpp:4345
int getPrefixIndex(const QCString &name)
Definition: util.cpp:5144
bool isFunction() const
Definition: memberdef.cpp:4160
bool isTypedef() const
Definition: memberdef.cpp:4155
unsigned uint
Definition: qglobal.h:351
bool isEnumerate() const
Definition: memberdef.cpp:4145
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 299 of file index.cpp.

302 {
303  bool hasMembers = def->getMemberLists().count()>0 || def->getMemberGroupSDict()!=0;
304  Doxygen::indexList->addContentsItem(hasMembers,name,
305  def->getReference(),def->getOutputFileBase(),anchor,
306  hasMembers && !preventSeparateIndex,
307  addToIndex,
308  def);
309  int numClasses=0;
310  ClassSDict *classes = def->getClassSDict();
311  if (classes)
312  {
313  ClassDef *cd;
314  ClassSDict::Iterator it(*classes);
315  for (;(cd=it.current());++it)
316  {
317  if (cd->isLinkable()) numClasses++;
318  }
319  }
320  //printf("addMembersToIndex(def=%s hasMembers=%d numClasses=%d)\n",def->name().data(),hasMembers,numClasses);
321  if (hasMembers || numClasses>0)
322  {
325  LayoutDocEntry *lde;
326  for (eli.toFirst();(lde=eli.current());++eli)
327  {
328  if (lde->kind()==LayoutDocEntry::MemberDef)
329  {
331  MemberList *ml = def->getMemberList(lmd->type);
332  if (ml)
333  {
334  MemberListIterator mi(*ml);
335  MemberDef *md;
336  for (mi.toFirst();(md=mi.current());++mi)
337  {
338  MemberList *enumList = md->enumFieldList();
339  bool isDir = enumList!=0 && md->isEnumerate();
340  bool isAnonymous = md->name().find('@')!=-1;
341  static bool hideUndocMembers = Config_getBool("HIDE_UNDOC_MEMBERS");
342  static bool extractStatic = Config_getBool("EXTRACT_STATIC");
343  if (!isAnonymous &&
344  (!hideUndocMembers || md->hasDocumentation()) &&
345  (!md->isStatic() || extractStatic)
346  )
347  {
348  if (md->getOuterScope()==def || md->getOuterScope()==Doxygen::globalScope)
349  {
351  md->name(),md->getReference(),md->getOutputFileBase(),md->anchor(),FALSE,addToIndex);
352  }
353  else // inherited member
354  {
356  md->name(),def->getReference(),def->getOutputFileBase(),md->anchor(),FALSE,addToIndex);
357  }
358  }
359  if (isDir)
360  {
361  if (!isAnonymous)
362  {
364  }
365  MemberListIterator emli(*enumList);
366  MemberDef *emd;
367  for (emli.toFirst();(emd=emli.current());++emli)
368  {
369  if (!hideUndocMembers || emd->hasDocumentation())
370  {
371  if (emd->getOuterScope()==def || emd->getOuterScope()==Doxygen::globalScope)
372  {
374  emd->name(),emd->getReference(),emd->getOutputFileBase(),emd->anchor(),FALSE,addToIndex);
375  }
376  else // inherited member
377  {
379  emd->name(),def->getReference(),def->getOutputFileBase(),emd->anchor(),FALSE,addToIndex);
380  }
381  }
382  }
383  if (!isAnonymous)
384  {
386  }
387  }
388  }
389  }
390  }
391  else if (lde->kind()==LayoutDocEntry::NamespaceClasses ||
394  )
395  {
396  if (classes)
397  {
398  ClassDef *cd;
399  ClassSDict::Iterator it(*classes);
400  for (;(cd=it.current());++it)
401  {
402  if (cd->isLinkable() && (cd->partOfGroups()==0 || def->definitionType()==Definition::TypeGroup))
403  {
404  static bool inlineSimpleStructs = Config_getBool("INLINE_SIMPLE_STRUCTS");
405  bool isNestedClass = def->definitionType()==Definition::TypeClass;
407  addToIndex && (isNestedClass || (cd->isSimple() && inlineSimpleStructs)),
408  preventSeparateIndex || cd->isEmbeddedInOuterScope());
409  }
410  }
411  }
412  }
413  }
414 
416  }
417 }
QCString getReference() const
Definition: memberdef.cpp:1001
bool hasDocumentation() const
Definition: memberdef.cpp:3274
bool isSimple() const
Definition: classdef.cpp:4584
const bool FALSE
Definition: qglobal.h:370
static LayoutDocManager & instance()
Definition: layout.cpp:1359
MemberList * enumFieldList() const
Definition: memberdef.cpp:4497
QCString displayName(bool includeScope=TRUE) const
Definition: classdef.cpp:312
int find(char c, int index=0, bool cs=TRUE) const
Definition: qcstring.cpp:41
GroupList * partOfGroups() const
Represents of a member definition list with configurable title.
Definition: layout.h:105
static NamespaceDef * globalScope
Definition: doxygen.h:128
void decContentsDepth()
Definition: index.h:135
const QCString & name() const
Definition: definition.h:114
QCString anchor() const
Definition: classdef.cpp:4606
bool isEmbeddedInOuterScope() const
Definition: classdef.cpp:4630
bool isLinkable() const
Definition: classdef.cpp:2729
QCString anchor() const
Definition: memberdef.cpp:1031
#define Config_getBool(val)
Definition: config.cpp:664
void addMembersToIndex(T *def, LayoutDocManager::LayoutPart part, const QCString &name, const QCString &anchor, bool addToIndex=TRUE, bool preventSeparateIndex=FALSE)
Definition: index.cpp:299
void addContentsItem(bool isDir, const char *name, const char *ref, const char *file, const char *anchor, bool separateIndex=FALSE, bool addToNavIndex=FALSE, Definition *def=0)
Definition: index.h:137
MemberListType type
Definition: layout.h:111
virtual Definition * getOuterScope() const
virtual Kind kind() const =0
Base class representing a piece of a documentation page.
Definition: layout.h:30
QCString getOutputFileBase() const
Definition: memberdef.cpp:941
friend class Iterator
Definition: sortdict.h:289
bool isStatic() const
Definition: memberdef.cpp:4205
void incContentsDepth()
Definition: index.h:133
static IndexList * indexList
Definition: doxygen.h:149
bool isEnumerate() const
Definition: memberdef.cpp:4145
void addNamespaceMemberNameToIndex ( MemberDef md)

Definition at line 2349 of file index.cpp.

2350 {
2351  NamespaceDef *nd=md->getNamespaceDef();
2352  if (nd && nd->isLinkableInProject() && md->isLinkableInProject())
2353  {
2354  QCString n = md->name();
2355  int index = getPrefixIndex(n);
2356  uint letter = getUtf8CodeToLower(n,index);
2357  if (!n.isEmpty())
2358  {
2359  if (!md->isEnumValue() || (md->getEnumScope() && !md->getEnumScope()->isStrong()))
2360  {
2361  g_namespaceIndexLetterUsed[NMHL_All].append(letter,md);
2363  }
2364 
2365  if (md->isFunction())
2366  {
2367  g_namespaceIndexLetterUsed[NMHL_Functions].append(letter,md);
2369  }
2370  else if (md->isVariable())
2371  {
2372  g_namespaceIndexLetterUsed[NMHL_Variables].append(letter,md);
2374  }
2375  else if (md->isTypedef())
2376  {
2377  g_namespaceIndexLetterUsed[NMHL_Typedefs].append(letter,md);
2379  }
2380  else if (md->isEnumerate())
2381  {
2382  g_namespaceIndexLetterUsed[NMHL_Enums].append(letter,md);
2384  }
2385  else if (md->isEnumValue() && md->getEnumScope() && !md->getEnumScope()->isStrong())
2386  {
2387  g_namespaceIndexLetterUsed[NMHL_EnumValues].append(letter,md);
2389  }
2390  }
2391  }
2392 }
bool isEmpty() const
Definition: qcstring.h:189
bool isLinkableInProject() const
Definition: memberdef.cpp:1150
uint getUtf8CodeToLower(const QCString &s, int idx)
Returns one unicode character as an unsigned integer from utf-8 string, making the character lower ca...
Definition: util.cpp:8276
bool isVariable() const
Definition: memberdef.cpp:4140
static LetterToIndexMap< MemberIndexList > g_namespaceIndexLetterUsed[NMHL_Total]
Definition: index.cpp:141
MemberDef * getEnumScope() const
Definition: memberdef.cpp:4487
const QCString & name() const
Definition: definition.h:114
bool isEnumValue() const
Definition: memberdef.cpp:4150
std::void_t< T > n
bool isStrong() const
Definition: memberdef.cpp:4345
int getPrefixIndex(const QCString &name)
Definition: util.cpp:5144
int documentedNamespaceMembers[NMHL_Total]
Definition: index.cpp:64
NamespaceDef * getNamespaceDef() const
Definition: memberdef.cpp:4080
bool isFunction() const
Definition: memberdef.cpp:4160
bool isLinkableInProject() const
bool isTypedef() const
Definition: memberdef.cpp:4155
unsigned uint
Definition: qglobal.h:351
bool isEnumerate() const
Definition: memberdef.cpp:4145
static int countAnnotatedClasses ( int *  cp)
static

Definition at line 1555 of file index.cpp.

1556 {
1557  int count=0;
1558  int countPrinted=0;
1560  ClassDef *cd;
1561  for (;(cd=cli.current());++cli)
1562  {
1563  if (cd->isLinkableInProject() && cd->templateMaster()==0)
1564  {
1565  if (!cd->isEmbeddedInOuterScope())
1566  {
1567  countPrinted++;
1568  }
1569  count++;
1570  }
1571  }
1572  *cp = countPrinted;
1573  return count;
1574 }
bool isLinkableInProject() const
Definition: classdef.cpp:2707
ClassDef * templateMaster() const
Definition: classdef.cpp:4439
def cli(ctx)
Definition: main.py:7
bool isEmbeddedInOuterScope() const
Definition: classdef.cpp:4630
friend class Iterator
Definition: sortdict.h:289
static ClassSDict * classSDict
Definition: doxygen.h:99
static int countClassesInTreeList ( const ClassSDict cl)
static

Definition at line 922 of file index.cpp.

923 {
924  int count=0;
926  ClassDef *cd;
927  for (;(cd=cli.current());++cli)
928  {
929  if (!hasVisibleRoot(cd->baseClasses())) // filter on root classes
930  {
931  if (cd->isVisibleInHierarchy()) // should it be visible
932  {
933  if (cd->subClasses()) // should have sub classes
934  {
935  count++;
936  }
937  }
938  }
939  }
940  return count;
941 }
BaseClassList * subClasses() const
Definition: classdef.cpp:4404
def cli(ctx)
Definition: main.py:7
bool isVisibleInHierarchy()
Definition: classdef.cpp:2743
bool hasVisibleRoot(BaseClassList *bcl)
Definition: util.cpp:5224
friend class Iterator
Definition: sortdict.h:289
BaseClassList * baseClasses() const
Definition: classdef.cpp:4399
static int countClassHierarchy ( )
static

Definition at line 943 of file index.cpp.

944 {
945  int count=0;
950  return count;
951 }
static ClassSDict * hiddenClasses
Definition: doxygen.h:100
void initClassHierarchy(ClassSDict *cl)
Definition: util.cpp:5211
static int countClassesInTreeList(const ClassSDict &cl)
Definition: index.cpp:922
static ClassSDict * classSDict
Definition: doxygen.h:99
void countDataStructures ( )

Definition at line 77 of file index.cpp.

78 {
79  annotatedClasses = countAnnotatedClasses(&annotatedClassesPrinted); // "classes" + "annotated"
80  hierarchyClasses = countClassHierarchy(); // "hierarchy"
83  documentedGroups = countGroups(); // "modules"
84  documentedNamespaces = countNamespaces(); // "namespaces"
85  documentedDirs = countDirs(); // "dirs"
86  // "globals"
87  // "namespacemembers"
88  // "functions"
89 }
int documentedDirs
Definition: index.cpp:67
int annotatedClassesPrinted
Definition: index.cpp:56
static int countNamespaces()
Definition: index.cpp:1305
int documentedHtmlFiles
Definition: index.cpp:65
static int countAnnotatedClasses(int *cp)
Definition: index.cpp:1555
static void countRelatedPages(int &docPages, int &indexPages)
Definition: index.cpp:3065
int hierarchyClasses
Definition: index.cpp:57
int documentedPages
Definition: index.cpp:66
int indexedPages
Definition: index.cpp:61
int documentedGroups
Definition: index.cpp:59
int documentedFiles
Definition: index.cpp:58
int documentedNamespaces
Definition: index.cpp:60
static int countDirs()
Definition: index.cpp:3226
static int countClassHierarchy()
Definition: index.cpp:943
static int countGroups()
Definition: index.cpp:3208
static void countFiles(int &htmlFiles, int &files)
Definition: index.cpp:1062
int annotatedClasses
Definition: index.cpp:55
static int countDirs ( )
static

Definition at line 3226 of file index.cpp.

3227 {
3228  int count=0;
3230  DirDef *dd;
3231  for (dli.toFirst();(dd=dli.current());++dli)
3232  {
3233  if (dd->isLinkableInProject())
3234  {
3235  dd->visited=FALSE;
3236  count++;
3237  }
3238  }
3239  return count;
3240 }
bool visited
Definition: dirdef.h:77
const bool FALSE
Definition: qglobal.h:370
Definition: sortdict.h:73
static DirSDict * directories
Definition: doxygen.h:139
Definition: dirdef.h:44
bool isLinkableInProject() const
Definition: dirdef.cpp:58
static void countFiles ( int &  htmlFiles,
int &  files 
)
static

Definition at line 1062 of file index.cpp.

1063 {
1064  htmlFiles=0;
1065  files=0;
1067  FileName *fn;
1068  for (;(fn=fnli.current());++fnli)
1069  {
1070  FileNameIterator fni(*fn);
1071  FileDef *fd;
1072  for (;(fd=fni.current());++fni)
1073  {
1074  bool doc,src;
1075  doc = fileVisibleInIndex(fd,src);
1076  if (doc || src)
1077  {
1078  htmlFiles++;
1079  }
1080  if (doc)
1081  {
1082  files++;
1083  }
1084  }
1085  }
1086 }
bool fileVisibleInIndex(FileDef *fd, bool &genSourceFile)
Definition: util.cpp:8177
static FileNameList * inputNameList
Definition: doxygen.h:109
list files
Definition: languages.py:9
QAsciiDict< Entry > fn
QCString doc
static int countGroups ( )
static

Definition at line 3208 of file index.cpp.

3209 {
3210  int count=0;
3212  GroupDef *gd;
3213  for (gli.toFirst();(gd=gli.current());++gli)
3214  {
3215  if (!gd->isReference())
3216  {
3217  gd->visited=FALSE;
3218  count++;
3219  }
3220  }
3221  return count;
3222 }
static GroupSDict * groupSDict
Definition: doxygen.h:119
bool visited
Definition: groupdef.h:86
const bool FALSE
Definition: qglobal.h:370
virtual bool isReference() const
friend class Iterator
Definition: sortdict.h:289
static int countNamespaces ( )
static

Definition at line 1305 of file index.cpp.

1306 {
1307  int count=0;
1309  NamespaceDef *nd;
1310  for (;(nd=nli.current());++nli)
1311  {
1312  if (nd->isLinkableInProject()) count++;
1313  }
1314  return count;
1315 }
static NamespaceSDict * namespaceSDict
Definition: doxygen.h:120
friend class Iterator
Definition: sortdict.h:289
bool isLinkableInProject() const
static void countRelatedPages ( int &  docPages,
int &  indexPages 
)
static

Definition at line 3065 of file index.cpp.

3066 {
3067  docPages=indexPages=0;
3069  PageDef *pd=0;
3070  for (pdi.toFirst();(pd=pdi.current());++pdi)
3071  {
3072  if ( pd->visibleInIndex())
3073  {
3074  indexPages++;
3075  }
3076  if ( pd->documentedPage())
3077  {
3078  docPages++;
3079  }
3080  }
3081 }
bool visibleInIndex() const
Definition: pagedef.cpp:282
static PageSDict * pageSDict
Definition: doxygen.h:102
A model of a page symbol.
Definition: pagedef.h:29
friend class Iterator
Definition: sortdict.h:289
bool documentedPage() const
Definition: pagedef.cpp:292
static bool dirHasVisibleChildren ( DirDef dd)
static

Definition at line 540 of file index.cpp.

541 {
542  if (dd->hasDocumentation()) return TRUE;
543 
544  QListIterator<FileDef> fli(*dd->getFiles());
545  FileDef *fd;
546  for (fli.toFirst();(fd=fli.current());++fli)
547  {
548  bool genSourceFile;
549  if (fileVisibleInIndex(fd,genSourceFile))
550  {
551  return TRUE;
552  }
553  if (genSourceFile)
554  {
555  return TRUE;
556  }
557  }
558 
559  QListIterator<DirDef> dli(dd->subDirs());
560  DirDef *subdd;
561  for (dli.toFirst();(subdd=dli.current());++dli)
562  {
563  if (dirHasVisibleChildren(subdd))
564  {
565  return TRUE;
566  }
567  }
568  return FALSE;
569 }
bool fileVisibleInIndex(FileDef *fd, bool &genSourceFile)
Definition: util.cpp:8177
static bool dirHasVisibleChildren(DirDef *dd)
Definition: index.cpp:540
virtual bool hasDocumentation() const
const bool FALSE
Definition: qglobal.h:370
const DirList & subDirs() const
Definition: dirdef.h:61
Definition: dirdef.h:44
type * current() const
Definition: qlist.h:146
FileList * getFiles() const
Definition: dirdef.h:59
const bool TRUE
Definition: qglobal.h:371
void endFile ( OutputList ol,
bool  skipNavIndex,
bool  skipEndContents,
const QCString navPath 
)

Definition at line 263 of file index.cpp.

265 {
266  static bool generateTreeView = Config_getBool("GENERATE_TREEVIEW");
267  ol.pushGeneratorState();
269  if (!skipNavIndex)
270  {
271  if (!skipEndContents) ol.endContents();
272  if (generateTreeView)
273  {
274  ol.writeString("</div><!-- doc-content -->\n");
275  }
276  }
277  ol.writeFooter(navPath); // write the footer
278  ol.popGeneratorState();
279  ol.endFile();
280 }
void writeString(const char *text)
Definition: outputlist.h:119
void disableAllBut(OutputGenerator::OutputType o)
Definition: outputlist.cpp:49
void endFile()
Definition: outputlist.h:103
void popGeneratorState()
Definition: outputlist.cpp:121
void pushGeneratorState()
Definition: outputlist.cpp:111
#define Config_getBool(val)
Definition: config.cpp:664
void endContents()
Definition: outputlist.h:366
void writeFooter(const char *navPath)
Definition: outputlist.h:101
void endFileWithNavPath ( Definition d,
OutputList ol 
)

Definition at line 282 of file index.cpp.

283 {
284  static bool generateTreeView = Config_getBool("GENERATE_TREEVIEW");
285  QCString navPath;
286  if (generateTreeView)
287  {
288  ol.pushGeneratorState();
290  ol.writeString("</div><!-- doc-content -->\n");
291  ol.popGeneratorState();
292  navPath = d->navigationPathAsString();
293  }
294  endFile(ol,generateTreeView,TRUE,navPath);
295 }
void endFile(OutputList &ol, bool skipNavIndex, bool skipEndContents, const QCString &navPath)
Definition: index.cpp:263
void writeString(const char *text)
Definition: outputlist.h:119
void disableAllBut(OutputGenerator::OutputType o)
Definition: outputlist.cpp:49
void popGeneratorState()
Definition: outputlist.cpp:121
void pushGeneratorState()
Definition: outputlist.cpp:111
QCString navigationPathAsString() const
#define Config_getBool(val)
Definition: config.cpp:664
const bool TRUE
Definition: qglobal.h:371
static void endIndexHierarchy ( OutputList ol,
int  level 
)
static

Definition at line 104 of file index.cpp.

105 {
106  ol.pushGeneratorState();
109  if (level<6) ol.endIndexList();
110  ol.enableAll();
113  ol.endItemList();
114  ol.popGeneratorState();
115 }
void popGeneratorState()
Definition: outputlist.cpp:121
void pushGeneratorState()
Definition: outputlist.cpp:111
void endIndexList()
Definition: outputlist.h:127
void disable(OutputGenerator::OutputType o)
Definition: outputlist.cpp:79
void endItemList()
Definition: outputlist.h:139
void enableAll()
Definition: outputlist.cpp:59
static void endQuickIndexItem ( OutputList ol)
static

Definition at line 213 of file index.cpp.

214 {
215  bool fancyTabs=TRUE;
216  if (fancyTabs) ol.writeString("</span>");
217  ol.writeString("</a>");
218  if (fancyTabs) ol.writeString("</li>\n");
219 }
void writeString(const char *text)
Definition: outputlist.h:119
const bool TRUE
Definition: qglobal.h:371
static void endQuickIndexList ( OutputList ol)
static

Definition at line 170 of file index.cpp.

171 {
172  bool fancyTabs = TRUE;
173  if (fancyTabs)
174  {
175  ol.writeString(" </ul>\n");
176  }
177  ol.writeString(" </div>\n");
178 }
void writeString(const char *text)
Definition: outputlist.h:119
const bool TRUE
Definition: qglobal.h:371
void endTitle ( OutputList ol,
const char *  fileName,
const char *  name 
)

Definition at line 237 of file index.cpp.

238 {
239  ol.popGeneratorState();
241  ol.endHeaderSection();
242 }
static QCString name
Definition: declinfo.cpp:673
void endHeaderSection()
Definition: outputlist.h:192
void endTitleHead(const char *fileName, const char *name)
Definition: outputlist.h:107
void popGeneratorState()
Definition: outputlist.cpp:121
fileName
Definition: dumpTree.py:9
QCString fixSpaces ( const QCString s)

Definition at line 223 of file index.cpp.

224 {
225  return substitute(s," ","&#160;");
226 }
QCString substitute(const QCString &s, const QCString &src, const QCString &dst)
substitute all occurrences of src in s by dst
Definition: util.cpp:5088
static const CmhlInfo* getCmhlInfo ( int  hl)
static

Definition at line 2497 of file index.cpp.

2498 {
2499  static bool fortranOpt = Config_getBool("OPTIMIZE_FOR_FORTRAN");
2500  static bool vhdlOpt = Config_getBool("OPTIMIZE_OUTPUT_VHDL");
2501  static CmhlInfo cmhlInfo[] =
2502  {
2503  CmhlInfo("functions", theTranslator->trAll()),
2504  CmhlInfo("functions_func",
2505  fortranOpt ? theTranslator->trSubprograms() :
2506  vhdlOpt ? VhdlDocGen::trFunctionAndProc() :
2507  theTranslator->trFunctions()),
2508  CmhlInfo("functions_vars",theTranslator->trVariables()),
2509  CmhlInfo("functions_type",theTranslator->trTypedefs()),
2510  CmhlInfo("functions_enum",theTranslator->trEnumerations()),
2511  CmhlInfo("functions_eval",theTranslator->trEnumerationValues()),
2512  CmhlInfo("functions_prop",theTranslator->trProperties()),
2513  CmhlInfo("functions_evnt",theTranslator->trEvents()),
2514  CmhlInfo("functions_rela",theTranslator->trRelatedFunctions())
2515  };
2516  return &cmhlInfo[hl];
2517 }
virtual QCString trSubprograms()=0
static QCString trFunctionAndProc()
#define Config_getBool(val)
Definition: config.cpp:664
virtual QCString trAll()=0
Translator * theTranslator
Definition: language.cpp:157
static const FmhlInfo* getFmhlInfo ( int  hl)
static

Definition at line 2672 of file index.cpp.

2673 {
2674  static bool fortranOpt = Config_getBool("OPTIMIZE_FOR_FORTRAN");
2675  static bool vhdlOpt = Config_getBool("OPTIMIZE_OUTPUT_VHDL");
2676  static FmhlInfo fmhlInfo[] =
2677  {
2678  FmhlInfo("globals", theTranslator->trAll()),
2679  FmhlInfo("globals_func",
2680  fortranOpt ? theTranslator->trSubprograms() :
2681  vhdlOpt ? VhdlDocGen::trFunctionAndProc() :
2682  theTranslator->trFunctions()),
2683  FmhlInfo("globals_vars",theTranslator->trVariables()),
2684  FmhlInfo("globals_type",theTranslator->trTypedefs()),
2685  FmhlInfo("globals_enum",theTranslator->trEnumerations()),
2686  FmhlInfo("globals_eval",theTranslator->trEnumerationValues()),
2687  FmhlInfo("globals_defs",theTranslator->trDefines())
2688  };
2689  return &fmhlInfo[hl];
2690 }
virtual QCString trSubprograms()=0
static QCString trFunctionAndProc()
#define Config_getBool(val)
Definition: config.cpp:664
virtual QCString trAll()=0
Translator * theTranslator
Definition: language.cpp:157
static const NmhlInfo* getNmhlInfo ( int  hl)
static

Definition at line 2837 of file index.cpp.

2838 {
2839  static bool fortranOpt = Config_getBool("OPTIMIZE_FOR_FORTRAN");
2840  static bool vhdlOpt = Config_getBool("OPTIMIZE_OUTPUT_VHDL");
2841  static NmhlInfo nmhlInfo[] =
2842  {
2843  NmhlInfo("namespacemembers", theTranslator->trAll()),
2844  NmhlInfo("namespacemembers_func",
2845  fortranOpt ? theTranslator->trSubprograms() :
2846  vhdlOpt ? VhdlDocGen::trFunctionAndProc() :
2847  theTranslator->trFunctions()),
2848  NmhlInfo("namespacemembers_vars",theTranslator->trVariables()),
2849  NmhlInfo("namespacemembers_type",theTranslator->trTypedefs()),
2850  NmhlInfo("namespacemembers_enum",theTranslator->trEnumerations()),
2851  NmhlInfo("namespacemembers_eval",theTranslator->trEnumerationValues())
2852  };
2853  return &nmhlInfo[hl];
2854 }
virtual QCString trSubprograms()=0
static QCString trFunctionAndProc()
#define Config_getBool(val)
Definition: config.cpp:664
virtual QCString trAll()=0
Translator * theTranslator
Definition: language.cpp:157
void initClassMemberIndices ( )

Definition at line 2254 of file index.cpp.

2255 {
2256  int j=0;
2257  for (j=0;j<CMHL_Total;j++)
2258  {
2260  g_memberIndexLetterUsed[j].clear();
2261  }
2262 }
static LetterToIndexMap< MemberIndexList > g_memberIndexLetterUsed[CMHL_Total]
Definition: index.cpp:139
int documentedClassMembers[CMHL_Total]
Definition: index.cpp:62
void initFileMemberIndices ( )

Definition at line 2396 of file index.cpp.

2397 {
2398  int j=0;
2399  for (j=0;j<NMHL_Total;j++)
2400  {
2401  documentedFileMembers[j]=0;
2402  g_fileIndexLetterUsed[j].clear();
2403  }
2404 }
int documentedFileMembers[FMHL_Total]
Definition: index.cpp:63
static LetterToIndexMap< MemberIndexList > g_fileIndexLetterUsed[FMHL_Total]
Definition: index.cpp:140
void initNamespaceMemberIndices ( )

Definition at line 2339 of file index.cpp.

2340 {
2341  int j=0;
2342  for (j=0;j<NMHL_Total;j++)
2343  {
2345  g_namespaceIndexLetterUsed[j].clear();
2346  }
2347 }
static LetterToIndexMap< MemberIndexList > g_namespaceIndexLetterUsed[NMHL_Total]
Definition: index.cpp:141
int documentedNamespaceMembers[NMHL_Total]
Definition: index.cpp:64
static QCString letterToLabel ( uint  startLetter)
static

Definition at line 1640 of file index.cpp.

1641 {
1642  char s[11]; // max 0x12345678 + '\0'
1643  if (isId(startLetter)) // printable ASCII character
1644  {
1645  s[0]=(char)startLetter;
1646  s[1]=0;
1647  }
1648  else
1649  {
1650  const char hex[]="0123456789abcdef";
1651  int i=0;
1652  s[i++]='0';
1653  s[i++]='x';
1654  if (startLetter>(1<<24)) // 4 byte character
1655  {
1656  s[i++]=hex[(startLetter>>28)&0xf];
1657  s[i++]=hex[(startLetter>>24)&0xf];
1658  }
1659  if (startLetter>(1<<16)) // 3 byte character
1660  {
1661  s[i++]=hex[(startLetter>>20)&0xf];
1662  s[i++]=hex[(startLetter>>16)&0xf];
1663  }
1664  if (startLetter>(1<<8)) // 2 byte character
1665  {
1666  s[i++]=hex[(startLetter>>12)&0xf];
1667  s[i++]=hex[(startLetter>>8)&0xf];
1668  }
1669  // one byte character
1670  s[i++]=hex[(startLetter>>4)&0xf];
1671  s[i++]=hex[(startLetter>>0)&0xf];
1672  s[i++]=0;
1673  }
1674  return s;
1675 }
QTextStream & hex(QTextStream &s)
bool isId(int c)
Definition: util.h:224
static QCString * s
Definition: config.cpp:1042
static bool mainPageHasOwnTitle ( )
static

Definition at line 3085 of file index.cpp.

3086 {
3087  static QCString projectName = Config_getString("PROJECT_NAME");
3088  QCString title;
3089  if (Doxygen::mainPage)
3090  {
3091  title = filterTitle(Doxygen::mainPage->title());
3092  }
3093  return !projectName.isEmpty() && mainPageHasTitle() && qstricmp(title,projectName)!=0;
3094 }
bool isEmpty() const
Definition: qcstring.h:189
bool mainPageHasTitle()
Definition: util.cpp:8554
int qstricmp(const char *str1, const char *str2)
Definition: qcstring.cpp:567
#define Config_getString(val)
Definition: config.cpp:660
static PageDef * mainPage
Definition: doxygen.h:103
QCString filterTitle(const QCString &title)
Definition: util.cpp:7765
void startFile ( OutputList ol,
const char *  name,
const char *  manName,
const char *  title,
HighlightedItem  hli,
bool  additionalIndices,
const char *  altSidebarName 
)

Definition at line 244 of file index.cpp.

247 {
248  static bool disableIndex = Config_getBool("DISABLE_INDEX");
249  ol.startFile(name,manName,title);
250  ol.startQuickIndices();
251  if (!disableIndex)
252  {
253  ol.writeQuickLinks(TRUE,hli,name);
254  }
255  if (!additionalIndices)
256  {
257  ol.endQuickIndices();
258  }
259  ol.writeSplitBar(altSidebarName ? altSidebarName : name);
260  ol.writeSearchInfo();
261 }
static QCString name
Definition: declinfo.cpp:673
void writeSearchInfo()
Definition: outputlist.h:99
void startQuickIndices()
Definition: outputlist.h:350
void writeSplitBar(const char *name)
Definition: outputlist.h:354
#define Config_getBool(val)
Definition: config.cpp:664
void endQuickIndices()
Definition: outputlist.h:352
void writeQuickLinks(bool compact, HighlightedItem hli, const char *file)
Definition: outputlist.h:360
const bool TRUE
Definition: qglobal.h:371
void startFile(const char *name, const char *manName, const char *title)
Definition: outputlist.h:97
static void startIndexHierarchy ( OutputList ol,
int  level 
)
static

Definition at line 91 of file index.cpp.

92 {
93  ol.pushGeneratorState();
96  if (level<6) ol.startIndexList();
97  ol.enableAll();
100  ol.startItemList();
101  ol.popGeneratorState();
102 }
void startIndexList()
Definition: outputlist.h:125
void popGeneratorState()
Definition: outputlist.cpp:121
void pushGeneratorState()
Definition: outputlist.cpp:111
void disable(OutputGenerator::OutputType o)
Definition: outputlist.cpp:79
void enableAll()
Definition: outputlist.cpp:59
void startItemList()
Definition: outputlist.h:137
static void startQuickIndexItem ( OutputList ol,
const char *  l,
bool  hl,
bool  compact,
bool first 
)
static

Definition at line 180 of file index.cpp.

182 {
183  bool fancyTabs = TRUE;
184  if (!first && compact && !fancyTabs) ol.writeString(" | ");
185  first=FALSE;
186  if (fancyTabs)
187  {
188  ol.writeString(" <li");
189  if (hl) ol.writeString(" class=\"current\"");
190  ol.writeString("><a ");
191  }
192  else
193  {
194  if (!compact) ol.writeString("<li>");
195  if (hl && compact)
196  {
197  ol.writeString("<a class=\"qindexHL\" ");
198  }
199  else
200  {
201  ol.writeString("<a class=\"qindex\" ");
202  }
203  }
204  ol.writeString("href=\"");
205  ol.writeString(l);
206  ol.writeString("\">");
207  if (fancyTabs)
208  {
209  ol.writeString("<span>");
210  }
211 }
void writeString(const char *text)
Definition: outputlist.h:119
const bool FALSE
Definition: qglobal.h:370
static QStrList * l
Definition: config.cpp:1044
const bool TRUE
Definition: qglobal.h:371
static void startQuickIndexList ( OutputList ol,
bool  letterTabs = FALSE 
)
static

Definition at line 149 of file index.cpp.

150 {
151  bool fancyTabs = TRUE;
152  if (fancyTabs)
153  {
154  if (letterTabs)
155  {
156  ol.writeString(" <div id=\"navrow4\" class=\"tabs3\">\n");
157  }
158  else
159  {
160  ol.writeString(" <div id=\"navrow3\" class=\"tabs2\">\n");
161  }
162  ol.writeString(" <ul class=\"tablist\">\n");
163  }
164  else
165  {
166  ol.writeString(" <div class=\"qindex\">");
167  }
168 }
void writeString(const char *text)
Definition: outputlist.h:119
const bool TRUE
Definition: qglobal.h:371
void startTitle ( OutputList ol,
const char *  fileName,
Definition def 
)

Definition at line 228 of file index.cpp.

229 {
230  ol.startHeaderSection();
231  if (def) def->writeSummaryLinks(ol);
233  ol.pushGeneratorState();
235 }
void startHeaderSection()
Definition: outputlist.h:190
fileName
Definition: dumpTree.py:9
void pushGeneratorState()
Definition: outputlist.cpp:111
void disable(OutputGenerator::OutputType o)
Definition: outputlist.cpp:79
void startTitleHead(const char *fileName)
Definition: outputlist.h:105
virtual void writeSummaryLinks(OutputList &)
Definition: definition.h:339
static void writeAlphabeticalClassList ( OutputList ol)
static

Definition at line 1760 of file index.cpp.

1761 {
1762  // What starting letters are used
1763  UsedIndexLetters indexLettersUsed;
1764 
1765  // first count the number of headers
1767  ClassDef *cd;
1768  uint startLetter=0;
1769  int headerItems=0;
1770  for (;(cd=cli.current());++cli)
1771  {
1772  if (cd->isLinkableInProject() && cd->templateMaster()==0)
1773  {
1774  if (cd->getLanguage()==SrcLangExt_VHDL && !((VhdlDocGen::VhdlClasses)cd->protection()==VhdlDocGen::ENTITYCLASS ))// no architecture
1775  continue;
1776 
1777  int index = getPrefixIndex(cd->className());
1778  //printf("name=%s index=%d %d\n",cd->className().data(),index,cd->protection());
1779  startLetter=getUtf8CodeToUpper(cd->className(),index);
1780  indexLettersUsed.add(startLetter);
1781  }
1782  }
1783  indexLettersUsed.sort();
1784 
1785  // write quick link index (row of letters)
1786  QCString alphaLinks = "<div class=\"qindex\">";
1787  SIntDict<uint>::Iterator it(indexLettersUsed);
1788  uint *pLetter;
1789  for (it.toFirst();(pLetter=it.current());++it)
1790  {
1791  if (headerItems) alphaLinks += "&#160;|&#160;";
1792  headerItems++;
1793  QCString li = letterToLabel(*pLetter);
1794  QCString ls = QString(QChar(*pLetter)).utf8();
1795  alphaLinks += (QCString)"<a class=\"qindex\" href=\"#letter_" +
1796  li + "\">" +
1797  ls + "</a>";
1798  }
1799  alphaLinks += "</div>\n";
1800  ol.writeString(alphaLinks);
1801 
1802 
1803  // the number of columns in the table
1804  const int columns = Config_getInt("COLS_IN_ALPHA_INDEX");
1805 
1806  int i,j;
1807  int totalItems = headerItems*2 + annotatedClasses; // number of items in the table (headers span 2 items)
1808  int rows = (totalItems + columns - 1)/columns; // number of rows in the table
1809 
1810  //printf("headerItems=%d totalItems=%d columns=%d rows=%d itemsInLastRow=%d\n",
1811  // headerItems,totalItems,columns,rows,itemsInLastRow);
1812 
1813  // Keep a list of classes for each starting letter
1815  AlphaIndexTableColumns tableColumns;
1816 
1817  // fill the columns with the class list (row elements in each column,
1818  // expect for the columns with number >= itemsInLastRow, which get one
1819  // item less.
1820  //int icount=0;
1821  startLetter=0;
1822  for (cli.toFirst();(cd=cli.current());++cli)
1823  {
1824  if (cd->getLanguage()==SrcLangExt_VHDL && !((VhdlDocGen::VhdlClasses)cd->protection()==VhdlDocGen::ENTITYCLASS ))// no architecture
1825  continue;
1826 
1827  if (cd->isLinkableInProject() && cd->templateMaster()==0)
1828  {
1829  int index = getPrefixIndex(cd->className());
1830  startLetter=getUtf8Code(cd->className(),index);
1831  // Do some sorting again, since the classes are sorted by name with
1832  // prefix, which should be ignored really.
1833  if (cd->getLanguage()==SrcLangExt_VHDL)
1834  {
1835  if ((VhdlDocGen::VhdlClasses)cd->protection()==VhdlDocGen::ENTITYCLASS )// no architecture
1836  {
1837  classesByLetter.append(startLetter,cd);
1838  }
1839  }
1840  else
1841  {
1842  classesByLetter.append(startLetter,cd);
1843  }
1844  }
1845  }
1846 
1847  #define NEXT_ROW() \
1848  do \
1849  { \
1850  if (row>maxRows) maxRows=row; \
1851  if (row>=rows && col<columns) \
1852  { \
1853  col++; \
1854  row=0; \
1855  tableRows = new AlphaIndexTableRows; \
1856  tableColumns.append(tableRows); \
1857  } \
1858  } \
1859  while(0) \
1860 
1861  AlphaIndexTableRows *tableRows = new AlphaIndexTableRows;
1862  tableColumns.append(tableRows);
1863  int col=0,row=0,maxRows=0;
1866  for (lit.toFirst();(cl=lit.current());++lit)
1867  {
1868  uint l = cl->letter();
1869  // add special header cell
1870  tableRows->append(new AlphaIndexTableCell(row,col,l,(ClassDef*)0x8));
1871  row++;
1872  tableRows->append(new AlphaIndexTableCell(row,col,0,(ClassDef*)0x8));
1873  row++;
1874  ClassListIterator cit(*cl);
1875  cit.toFirst();
1876  ClassDef *cd = cit.current();
1877  ++cit;
1878  tableRows->append(new AlphaIndexTableCell(row,col,0,cd));
1879  row++;
1880  NEXT_ROW();
1881  for (;(cd=cit.current()); ++cit)
1882  {
1883  // add normal cell
1884  tableRows->append(new AlphaIndexTableCell(row,col,0,cd));
1885  row++;
1886  NEXT_ROW();
1887  }
1888  }
1889 
1890  // create row iterators for each column
1892  for (i=0;i<columns;i++)
1893  {
1894  if (i<(int)tableColumns.count())
1895  {
1896  colIterators[i] = new AlphaIndexTableRowsIterator(*tableColumns.at(i));
1897  }
1898  else // empty column
1899  {
1900  colIterators[i] = 0;
1901  }
1902  }
1903 
1904  ol.writeString("<table class=\"classindex\">\n");
1905  // generate table
1906  for (i=0;i<=maxRows;i++) // foreach table row
1907  {
1908  //printf("writing row %d\n",i);
1909  //ol.nextTableRow();
1910  ol.writeString("<tr>");
1911  // the last column may contain less items then the others
1912  //int colsInRow = (i<rows-1) ? columns : itemsInLastRow;
1913  //printf("row [%d]\n",i);
1914  for (j=0;j<columns;j++) // foreach table column
1915  {
1916  if (colIterators[j])
1917  {
1918  AlphaIndexTableCell *cell = colIterators[j]->current();
1919  if (cell)
1920  {
1921  if (cell->row()==i)
1922  {
1923  if (cell->letter()!=0)
1924  {
1925  QCString s = letterToLabel(cell->letter());
1926  ol.writeString("<td rowspan=\"2\" valign=\"bottom\">");
1927  ol.writeString("<a name=\"letter_");
1928  ol.writeString(s);
1929  ol.writeString("\"></a>");
1930  ol.writeString("<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">"
1931  "<tr>"
1932  "<td><div class=\"ah\">&#160;&#160;");
1933  ol.writeString(QString(QChar(cell->letter())).utf8());
1934  ol.writeString( "&#160;&#160;</div>"
1935  "</td>"
1936  "</tr>"
1937  "</table>\n");
1938  }
1939  else if (cell->classDef()!=(ClassDef*)0x8)
1940  {
1941  cd = cell->classDef();
1942  ol.writeString("<td valign=\"top\">");
1943  QCString namesp,cname;
1944  //if (cd->getNamespaceDef()) namesp=cd->getNamespaceDef()->displayName();
1945  //QCString cname=cd->className();
1946  extractNamespaceName(cd->name(),cname,namesp);
1947  QCString nsDispName;
1948  SrcLangExt lang = cd->getLanguage();
1950  if (sep!="::")
1951  {
1952  nsDispName=substitute(namesp,"::",sep);
1953  cname=substitute(cname,"::",sep);
1954  }
1955  else
1956  {
1957  nsDispName=namesp;
1958  }
1959 
1960  ol.writeObjectLink(cd->getReference(),
1961  cd->getOutputFileBase(),cd->anchor(),cname);
1962  if (!namesp.isEmpty())
1963  {
1964  ol.docify(" (");
1965  NamespaceDef *nd = getResolvedNamespace(namesp);
1966  if (nd && nd->isLinkable())
1967  {
1968  ol.writeObjectLink(nd->getReference(),
1969  nd->getOutputFileBase(),0,nsDispName);
1970  }
1971  else
1972  {
1973  ol.docify(nsDispName);
1974  }
1975  ol.docify(")");
1976  }
1977  ol.writeNonBreakableSpace(3);
1978  }
1979  ++(*colIterators[j]);
1980  if (cell->letter()!=0 || cell->classDef()!=(ClassDef*)0x8)
1981  {
1982  ol.writeString("</td>");
1983  }
1984  }
1985  }
1986  else
1987  {
1988  ol.writeString("<td></td>");
1989  }
1990  }
1991  }
1992  ol.writeString("</tr>\n");
1993  }
1994  ol.writeString("</table>\n");
1995 
1996  ol.writeString(alphaLinks);
1997 
1998  // release the temporary memory
1999  for (i=0;i<columns;i++)
2000  {
2001  delete colIterators[i];
2002  }
2003  delete[] colIterators;
2004 }
bool isLinkableInProject() const
Definition: classdef.cpp:2707
virtual QCString getReference() const
bool isEmpty() const
Definition: qcstring.h:189
void append(const type *d)
Definition: qlist.h:73
QCString getOutputFileBase() const
void writeString(const char *text)
Definition: outputlist.h:119
void writeNonBreakableSpace(int num)
Definition: outputlist.h:368
type * at(uint i) const
Definition: qlist.h:94
The QString class provides an abstraction of Unicode text and the classic C null-terminated char arra...
Definition: qstring.h:350
auto lit(char arg)
Definition: parse_shims.h:11
The QChar class provides a light-weight Unicode character.
Definition: qstring.h:56
SrcLangExt
Definition: types.h:41
static QStrList * l
Definition: config.cpp:1044
QCString getReference() const
Definition: classdef.cpp:3814
QAsciiDict< Entry > cl
Protection protection() const
Definition: classdef.cpp:4414
#define NEXT_ROW()
uint letter() const
Definition: index.cpp:1685
#define Config_getInt(val)
Definition: config.cpp:661
ClassDef * templateMaster() const
Definition: classdef.cpp:4439
def cli(ctx)
Definition: main.py:7
QCString getLanguageSpecificSeparator(SrcLangExt lang, bool classScope)
Definition: util.cpp:8065
uint count() const
Definition: qlist.h:66
uint getUtf8CodeToUpper(const QCString &s, int idx)
Returns one unicode character as ian unsigned interger from utf-8 string, making the character upper ...
Definition: util.cpp:8291
QCString className() const
Definition: classdef.cpp:3914
const QCString & name() const
Definition: definition.h:114
string columns
Definition: depos.py:13
SrcLangExt getLanguage() const
QCString anchor() const
Definition: classdef.cpp:4606
uint getUtf8Code(const QCString &s, int idx)
Get one unicode character as an unsigned integer from utf-8 string.
Definition: util.cpp:8240
bool isLinkable() const
type * current() const
Definition: qlist.h:146
maps a unicode character code to a list of T::ElementType&#39;s
Definition: util.h:96
int getPrefixIndex(const QCString &name)
Definition: util.cpp:5144
uint letter() const
Definition: index.cpp:1707
void sort()
Definition: sortdict.h:522
void extractNamespaceName(const QCString &scopeName, QCString &className, QCString &namespaceName, bool allowEmptyClass)
Definition: util.cpp:5478
QCString getOutputFileBase() const
Definition: classdef.cpp:3533
NamespaceDef * getResolvedNamespace(const char *name)
Definition: util.cpp:489
void append(uint letter, typename T::ElementType *elem)
Definition: util.h:100
static QCString letterToLabel(uint startLetter)
Definition: index.cpp:1640
void add(uint letter)
Definition: index.cpp:1744
friend class Iterator
Definition: sortdict.h:289
int row() const
Definition: index.cpp:1708
void docify(const char *s)
Definition: outputlist.h:145
QCString utf8() const
Definition: qstring.cpp:14507
void writeObjectLink(const char *ref, const char *file, const char *anchor, const char *name)
Definition: outputlist.h:149
unsigned uint
Definition: qglobal.h:351
static ClassSDict * classSDict
Definition: doxygen.h:99
static QCString * s
Definition: config.cpp:1042
ClassDef * classDef() const
Definition: index.cpp:1706
QCString substitute(const QCString &s, const QCString &src, const QCString &dst)
substitute all occurrences of src in s by dst
Definition: util.cpp:5088
int annotatedClasses
Definition: index.cpp:55
static void writeAlphabeticalIndex ( OutputList ol)
static

Definition at line 2008 of file index.cpp.

2009 {
2010  if (annotatedClasses==0) return;
2011  ol.pushGeneratorState();
2014  QCString title = lne ? lne->title() : theTranslator->trCompoundIndex();
2015  bool addToIndex = lne==0 || lne->visible();
2016 
2017  startFile(ol,"classes",0,title,HLI_Classes);
2018 
2019  startTitle(ol,0);
2020  ol.parseText(title);
2021  endTitle(ol,0,0);
2022 
2023  if (addToIndex)
2024  {
2025  Doxygen::indexList->addContentsItem(FALSE,title,0,"classes",0,FALSE,TRUE);
2026  }
2027 
2028  ol.startContents();
2030  endFile(ol); // contains ol.endContents()
2031 
2032  ol.popGeneratorState();
2033 }
void endFile(OutputList &ol, bool skipNavIndex, bool skipEndContents, const QCString &navPath)
Definition: index.cpp:263
LayoutNavEntry * find(LayoutNavEntry::Kind k, const char *file=0) const
Definition: layout.cpp:76
void startFile(OutputList &ol, const char *name, const char *manName, const char *title, HighlightedItem hli, bool additionalIndices, const char *altSidebarName)
Definition: index.cpp:244
void disableAllBut(OutputGenerator::OutputType o)
Definition: outputlist.cpp:49
virtual QCString trCompoundIndex()=0
const bool FALSE
Definition: qglobal.h:370
static LayoutDocManager & instance()
Definition: layout.cpp:1359
static void writeAlphabeticalClassList(OutputList &ol)
Definition: index.cpp:1760
bool parseText(const QCString &textStr)
Definition: outputlist.cpp:175
Base class for the layout of a navigation item at the top of the HTML pages.
Definition: layout.h:118
void popGeneratorState()
Definition: outputlist.cpp:121
bool visible()
Definition: layout.h:153
void pushGeneratorState()
Definition: outputlist.cpp:111
void addContentsItem(bool isDir, const char *name, const char *ref, const char *file, const char *anchor, bool separateIndex=FALSE, bool addToNavIndex=FALSE, Definition *def=0)
Definition: index.h:137
LayoutNavEntry * rootNavEntry() const
Definition: layout.cpp:1370
void startTitle(OutputList &ol, const char *fileName, Definition *def)
Definition: index.cpp:228
QCString title() const
Definition: layout.h:150
Translator * theTranslator
Definition: language.cpp:157
void endTitle(OutputList &ol, const char *fileName, const char *name)
Definition: index.cpp:237
const bool TRUE
Definition: qglobal.h:371
static IndexList * indexList
Definition: doxygen.h:149
int annotatedClasses
Definition: index.cpp:55
void startContents()
Definition: outputlist.h:364
static void writeAnnotatedClassList ( OutputList ol)
static

Definition at line 1577 of file index.cpp.

1578 {
1579  //LayoutNavEntry *lne = LayoutDocManager::instance().rootNavEntry()->find(LayoutNavEntry::ClassList);
1580  //bool addToIndex = lne==0 || lne->visible();
1581 
1582  ol.startIndexList();
1584  ClassDef *cd;
1585 
1586  for (cli.toFirst();(cd=cli.current());++cli)
1587  {
1588  if (cd->getLanguage()==SrcLangExt_VHDL &&
1591  ) // no architecture
1592  {
1593  continue;
1594  }
1595 
1596  ol.pushGeneratorState();
1597  if (cd->isEmbeddedInOuterScope())
1598  {
1601  }
1602  if (cd->isLinkableInProject() && cd->templateMaster()==0)
1603  {
1604  ol.startIndexKey();
1605  if (cd->getLanguage()==SrcLangExt_VHDL)
1606  {
1608  ol.docify(prot.data());
1609  ol.writeString(" ");
1610  }
1611  ol.writeObjectLink(0,cd->getOutputFileBase(),cd->anchor(),cd->displayName());
1612  ol.endIndexKey();
1613  bool hasBrief = !cd->briefDescription().isEmpty();
1614  ol.startIndexValue(hasBrief);
1615  if (hasBrief)
1616  {
1617  ol.generateDoc(
1618  cd->briefFile(),cd->briefLine(),
1619  cd,0,
1620  cd->briefDescription(TRUE),
1621  FALSE, // indexWords
1622  FALSE, // isExample
1623  0, // example name
1624  TRUE, // single line
1625  TRUE // link from index
1626  );
1627  }
1628  ol.endIndexValue(cd->getOutputFileBase(),hasBrief);
1629 
1630  //if (addToIndex)
1631  //{
1632  // addMembersToIndex(cd,LayoutDocManager::Class,cd->displayName(),cd->anchor());
1633  //}
1634  }
1635  ol.popGeneratorState();
1636  }
1637  ol.endIndexList();
1638 }
void endIndexValue(const char *name, bool b)
Definition: outputlist.h:135
bool isLinkableInProject() const
Definition: classdef.cpp:2707
bool isEmpty() const
Definition: qcstring.h:189
void writeString(const char *text)
Definition: outputlist.h:119
bool generateDoc(const char *fileName, int startLine, Definition *ctx, MemberDef *md, const QCString &docStr, bool indexWords, bool isExample, const char *exampleName=0, bool singleLine=FALSE, bool linkFromIndex=FALSE)
Definition: outputlist.cpp:131
void startIndexValue(bool b)
Definition: outputlist.h:133
const bool FALSE
Definition: qglobal.h:370
int briefLine() const
void startIndexKey()
Definition: outputlist.h:129
QCString displayName(bool includeScope=TRUE) const
Definition: classdef.cpp:312
Protection protection() const
Definition: classdef.cpp:4414
void startIndexList()
Definition: outputlist.h:125
void popGeneratorState()
Definition: outputlist.cpp:121
ClassDef * templateMaster() const
Definition: classdef.cpp:4439
def cli(ctx)
Definition: main.py:7
void endIndexKey()
Definition: outputlist.h:131
void pushGeneratorState()
Definition: outputlist.cpp:111
SrcLangExt getLanguage() const
void endIndexList()
Definition: outputlist.h:127
QCString anchor() const
Definition: classdef.cpp:4606
void disable(OutputGenerator::OutputType o)
Definition: outputlist.cpp:79
const char * data() const
Definition: qcstring.h:207
bool isEmbeddedInOuterScope() const
Definition: classdef.cpp:4630
QCString briefFile() const
virtual QCString briefDescription(bool abbreviate=FALSE) const
QCString getOutputFileBase() const
Definition: classdef.cpp:3533
static QCString getProtectionName(int prot)
friend class Iterator
Definition: sortdict.h:289
void docify(const char *s)
Definition: outputlist.h:145
void writeObjectLink(const char *ref, const char *file, const char *anchor, const char *name)
Definition: outputlist.h:149
static ClassSDict * classSDict
Definition: doxygen.h:99
const bool TRUE
Definition: qglobal.h:371
static void writeAnnotatedIndex ( OutputList ol)
static

Definition at line 2037 of file index.cpp.

2038 {
2039  //printf("writeAnnotatedIndex: count=%d printed=%d\n",
2040  // annotatedClasses,annotatedClassesPrinted);
2041  if (annotatedClasses==0) return;
2042 
2043  ol.pushGeneratorState();
2045  if (annotatedClassesPrinted==0)
2046  {
2049  }
2051  if (lne==0) lne = LayoutDocManager::instance().rootNavEntry()->find(LayoutNavEntry::Classes); // fall back
2052  QCString title = lne ? lne->title() : theTranslator->trCompoundList();
2053  bool addToIndex = lne==0 || lne->visible();
2054 
2055 
2056  startFile(ol,"annotated",0,title,HLI_Annotated);
2057 
2058  startTitle(ol,0);
2059  ol.parseText(title);
2060  endTitle(ol,0,0);
2061 
2062  ol.startContents();
2063 
2064  ol.startTextBlock();
2066  ol.endTextBlock();
2067 
2068  // ---------------
2069  // Linear class index for Latex/RTF
2070  // ---------------
2071  ol.pushGeneratorState();
2074 
2076 
2078  ol.popGeneratorState();
2079 
2080  // ---------------
2081  // Hierarchical class index for HTML
2082  // ---------------
2083  ol.pushGeneratorState();
2085 
2086  {
2087  if (addToIndex)
2088  {
2089  Doxygen::indexList->addContentsItem(TRUE,title,0,"annotated",0,TRUE,TRUE);
2091  }
2092  FTVHelp* ftv = new FTVHelp(FALSE);
2094  writeClassTree(Doxygen::classSDict,ftv,addToIndex,TRUE);
2095  QGString outStr;
2096  FTextStream t(&outStr);
2097  ftv->generateTreeViewInline(t);
2098  ol.writeString(outStr);
2099  delete ftv;
2100  if (addToIndex)
2101  {
2103  }
2104  }
2105 
2106  ol.popGeneratorState();
2107  // ------
2108 
2109  endFile(ol); // contains ol.endContents()
2110  ol.popGeneratorState();
2111 }
int annotatedClassesPrinted
Definition: index.cpp:56
void endFile(OutputList &ol, bool skipNavIndex, bool skipEndContents, const QCString &navPath)
Definition: index.cpp:263
LayoutNavEntry * find(LayoutNavEntry::Kind k, const char *file=0) const
Definition: layout.cpp:76
void startFile(OutputList &ol, const char *name, const char *manName, const char *title, HighlightedItem hli, bool additionalIndices, const char *altSidebarName)
Definition: index.cpp:244
void writeString(const char *text)
Definition: outputlist.h:119
void disableAllBut(OutputGenerator::OutputType o)
Definition: outputlist.cpp:49
const bool FALSE
Definition: qglobal.h:370
static LayoutDocManager & instance()
Definition: layout.cpp:1359
Simplified and optimized version of QTextStream.
Definition: ftextstream.h:11
void generateTreeViewInline(FTextStream &t)
Definition: ftvhelp.cpp:716
bool parseText(const QCString &textStr)
Definition: outputlist.cpp:175
Base class for the layout of a navigation item at the top of the HTML pages.
Definition: layout.h:118
static void writeNamespaceTree(NamespaceSDict *nsDict, FTVHelp *ftv, bool rootOnly, bool showClasses, bool addToIndex)
Definition: index.cpp:1388
static NamespaceSDict * namespaceSDict
Definition: doxygen.h:120
void popGeneratorState()
Definition: outputlist.cpp:121
void decContentsDepth()
Definition: index.h:135
bool visible()
Definition: layout.h:153
void pushGeneratorState()
Definition: outputlist.cpp:111
QCString intro() const
Definition: layout.h:151
void disable(OutputGenerator::OutputType o)
Definition: outputlist.cpp:79
void enable()
Definition: index.h:123
void addContentsItem(bool isDir, const char *name, const char *ref, const char *file, const char *anchor, bool separateIndex=FALSE, bool addToNavIndex=FALSE, Definition *def=0)
Definition: index.h:137
LayoutNavEntry * rootNavEntry() const
Definition: layout.cpp:1370
virtual QCString trCompoundList()=0
void startTitle(OutputList &ol, const char *fileName, Definition *def)
Definition: index.cpp:228
void startTextBlock(bool dense=FALSE)
Definition: outputlist.h:404
QCString title() const
Definition: layout.h:150
static void writeAnnotatedClassList(OutputList &ol)
Definition: index.cpp:1577
Translator * theTranslator
Definition: language.cpp:157
void endTextBlock(bool paraBreak=FALSE)
Definition: outputlist.h:406
void endTitle(OutputList &ol, const char *fileName, const char *name)
Definition: index.cpp:237
virtual QCString trCompoundListDescription()=0
static void writeClassTree(OutputList &ol, const BaseClassList *bcl, bool hideSuper, int level, FTVHelp *ftv, bool addToIndex)
Definition: index.cpp:423
void disable()
Definition: index.h:121
static ClassSDict * classSDict
Definition: doxygen.h:99
void incContentsDepth()
Definition: index.h:133
const bool TRUE
Definition: qglobal.h:371
static IndexList * indexList
Definition: doxygen.h:149
int annotatedClasses
Definition: index.cpp:55
void startContents()
Definition: outputlist.h:364
static void writeClassHierarchy ( OutputList ol,
FTVHelp ftv,
bool  addToIndex 
)
static

Definition at line 894 of file index.cpp.

895 {
898  if (ftv)
899  {
900  ol.pushGeneratorState();
902  }
903  bool started=FALSE;
904  writeClassTreeForList(ol,Doxygen::classSDict,started,ftv,addToIndex);
905  writeClassTreeForList(ol,Doxygen::hiddenClasses,started,ftv,addToIndex);
906  if (started)
907  {
908  endIndexHierarchy(ol,0);
909  if (addToIndex)
910  {
912  }
913  }
914  if (ftv)
915  {
916  ol.popGeneratorState();
917  }
918 }
static ClassSDict * hiddenClasses
Definition: doxygen.h:100
const bool FALSE
Definition: qglobal.h:370
void popGeneratorState()
Definition: outputlist.cpp:121
void decContentsDepth()
Definition: index.h:135
void pushGeneratorState()
Definition: outputlist.cpp:111
void disable(OutputGenerator::OutputType o)
Definition: outputlist.cpp:79
void initClassHierarchy(ClassSDict *cl)
Definition: util.cpp:5211
static void endIndexHierarchy(OutputList &ol, int level)
Definition: index.cpp:104
static void writeClassTreeForList(OutputList &ol, ClassSDict *cl, bool &started, FTVHelp *ftv, bool addToIndex)
Definition: index.cpp:800
static ClassSDict * classSDict
Definition: doxygen.h:99
static IndexList * indexList
Definition: doxygen.h:149
static void writeClassLinkForMember ( OutputList ol,
MemberDef md,
const char *  separator,
QCString prevClassName 
)
static

Definition at line 2114 of file index.cpp.

2116 {
2117  ClassDef *cd=md->getClassDef();
2118  if ( cd && prevClassName!=cd->displayName())
2119  {
2120  ol.docify(separator);
2122  cd->displayName());
2123  ol.writeString("\n");
2124  prevClassName = cd->displayName();
2125  }
2126 }
QCString getReference() const
Definition: memberdef.cpp:1001
void writeString(const char *text)
Definition: outputlist.h:119
QCString displayName(bool includeScope=TRUE) const
Definition: classdef.cpp:312
QCString anchor() const
Definition: memberdef.cpp:1031
ClassDef * getClassDef() const
Definition: memberdef.cpp:4070
QCString getOutputFileBase() const
Definition: memberdef.cpp:941
void docify(const char *s)
Definition: outputlist.h:145
void writeObjectLink(const char *ref, const char *file, const char *anchor, const char *name)
Definition: outputlist.h:149
static void writeClassMemberIndex ( OutputList ol)
static

Definition at line 2636 of file index.cpp.

2637 {
2639  bool addToIndex = lne==0 || lne->visible();
2640 
2641  if (documentedClassMembers[CMHL_All]>0 && addToIndex)
2642  {
2643  Doxygen::indexList->addContentsItem(TRUE,lne ? lne->title() : theTranslator->trCompoundMembers(),0,"functions",0);
2645  }
2655  if (documentedClassMembers[CMHL_All]>0 && addToIndex)
2656  {
2658  }
2659 
2660 }
LayoutNavEntry * find(LayoutNavEntry::Kind k, const char *file=0) const
Definition: layout.cpp:76
int documentedClassMembers[CMHL_Total]
Definition: index.cpp:62
static LayoutDocManager & instance()
Definition: layout.cpp:1359
Base class for the layout of a navigation item at the top of the HTML pages.
Definition: layout.h:118
void decContentsDepth()
Definition: index.h:135
bool visible()
Definition: layout.h:153
static void writeClassMemberIndexFiltered(OutputList &ol, ClassMemberHighlight hl)
Definition: index.cpp:2519
void addContentsItem(bool isDir, const char *name, const char *ref, const char *file, const char *anchor, bool separateIndex=FALSE, bool addToNavIndex=FALSE, Definition *def=0)
Definition: index.h:137
LayoutNavEntry * rootNavEntry() const
Definition: layout.cpp:1370
QCString title() const
Definition: layout.h:150
Translator * theTranslator
Definition: language.cpp:157
virtual QCString trCompoundMembers()=0
void incContentsDepth()
Definition: index.h:133
const bool TRUE
Definition: qglobal.h:371
static IndexList * indexList
Definition: doxygen.h:149
static void writeClassMemberIndexFiltered ( OutputList ol,
ClassMemberHighlight  hl 
)
static

Definition at line 2519 of file index.cpp.

2520 {
2521  if (documentedClassMembers[hl]==0) return;
2522 
2523  static bool disableIndex = Config_getBool("DISABLE_INDEX");
2524 
2525  bool multiPageIndex=FALSE;
2527  {
2528  multiPageIndex=TRUE;
2529  }
2530 
2531  ol.pushGeneratorState();
2533 
2536  QCString title = lne ? lne->title() : theTranslator->trCompoundMembers();
2537  if (hl!=CMHL_All) title+=(QCString)" - "+getCmhlInfo(hl)->title;
2538  bool addToIndex = lne==0 || lne->visible();
2539 
2540  if (addToIndex)
2541  {
2542  Doxygen::indexList->addContentsItem(multiPageIndex,getCmhlInfo(hl)->title,0,
2543  getCmhlInfo(hl)->fname,0,multiPageIndex,TRUE);
2544  if (multiPageIndex) Doxygen::indexList->incContentsDepth();
2545  }
2546 
2547  bool first=TRUE;
2549  MemberIndexList *ml;
2550  for (it.toFirst();(ml=it.current());++it)
2551  {
2552  uint page = ml->letter();
2554  if (multiPageIndex)
2555  {
2556  if (!first)
2557  {
2558  fileName+="_"+letterToLabel(page);
2559  }
2560  QCString cs = QString(QChar(page)).utf8();
2561  if (addToIndex)
2562  {
2564  }
2565  }
2566  bool quickIndex = documentedClassMembers[hl]>maxItemsBeforeQuickIndex;
2567 
2568  ol.startFile(fileName+extension,0,title);
2569  ol.startQuickIndices();
2570  if (!disableIndex)
2571  {
2573  startQuickIndexList(ol);
2574 
2575  // index item for global member list
2578  ol.writeString(fixSpaces(getCmhlInfo(0)->title));
2579  endQuickIndexItem(ol);
2580 
2581  int i;
2582  // index items per category member lists
2583  for (i=1;i<CMHL_Total;i++)
2584  {
2585  if (documentedClassMembers[i]>0)
2586  {
2588  ol.writeString(fixSpaces(getCmhlInfo(i)->title));
2589  //printf("multiPageIndex=%d first=%d fileName=%s file=%s title=%s\n",
2590  // multiPageIndex,first,fileName.data(),getCmhlInfo(i)->fname,getCmhlInfo(i)->title.data());
2591  endQuickIndexItem(ol);
2592  }
2593  }
2594 
2595  endQuickIndexList(ol);
2596 
2597  // quick alphabetical index
2598  if (quickIndex)
2599  {
2601  getCmhlInfo(hl)->fname,multiPageIndex);
2602  }
2603  }
2604  ol.endQuickIndices();
2605  ol.writeSplitBar(fileName);
2606  ol.writeSearchInfo();
2607 
2608  ol.startContents();
2609 
2610  if (hl==CMHL_All)
2611  {
2612  ol.startTextBlock();
2613  ol.parseText(lne ? lne->intro() : theTranslator->trCompoundMembersDescription(Config_getBool("EXTRACT_ALL")));
2614  ol.endTextBlock();
2615  }
2616  else
2617  {
2618  // hack to work around a mozilla bug, which refuses to switch to
2619  // normal lists otherwise
2620  ol.writeString("&#160;");
2621  }
2622 
2623  writeMemberList(ol,quickIndex,
2624  multiPageIndex?page:-1,
2627  endFile(ol);
2628  first=FALSE;
2629  }
2630 
2631  if (multiPageIndex && addToIndex) Doxygen::indexList->decContentsDepth();
2632 
2633  ol.popGeneratorState();
2634 }
const int maxItemsBeforeQuickIndex
Definition: index.cpp:143
void endFile(OutputList &ol, bool skipNavIndex, bool skipEndContents, const QCString &navPath)
Definition: index.cpp:263
LayoutNavEntry * find(LayoutNavEntry::Kind k, const char *file=0) const
Definition: layout.cpp:76
static void writeQuickMemberIndex(OutputList &ol, const LetterToIndexMap< MemberIndexList > &charUsed, uint page, QCString fullName, bool multiPage)
Definition: index.cpp:2458
static void endQuickIndexList(OutputList &ol)
Definition: index.cpp:170
static LetterToIndexMap< MemberIndexList > g_memberIndexLetterUsed[CMHL_Total]
Definition: index.cpp:139
static QCString htmlFileExtension
Definition: doxygen.h:130
void writeString(const char *text)
Definition: outputlist.h:119
static const CmhlInfo * getCmhlInfo(int hl)
Definition: index.cpp:2497
int documentedClassMembers[CMHL_Total]
Definition: index.cpp:62
void disableAllBut(OutputGenerator::OutputType o)
Definition: outputlist.cpp:49
static void startQuickIndexList(OutputList &ol, bool letterTabs=FALSE)
Definition: index.cpp:149
QCString title
Definition: index.cpp:2494
void writeSearchInfo()
Definition: outputlist.h:99
const bool FALSE
Definition: qglobal.h:370
static LayoutDocManager & instance()
Definition: layout.cpp:1359
void startQuickIndices()
Definition: outputlist.h:350
The QString class provides an abstraction of Unicode text and the classic C null-terminated char arra...
Definition: qstring.h:350
The QChar class provides a light-weight Unicode character.
Definition: qstring.h:56
bool parseText(const QCString &textStr)
Definition: outputlist.cpp:175
Base class for the layout of a navigation item at the top of the HTML pages.
Definition: layout.h:118
static void endQuickIndexItem(OutputList &ol)
Definition: index.cpp:213
void popGeneratorState()
Definition: outputlist.cpp:121
void decContentsDepth()
Definition: index.h:135
uint letter() const
Definition: index.cpp:134
bool visible()
Definition: layout.h:153
static void writeMemberList(OutputList &ol, bool useSections, int page, const LetterToIndexMap< MemberIndexList > &memberLists, DefinitionIntf::DefType type)
Definition: index.cpp:2156
void writeSplitBar(const char *name)
Definition: outputlist.h:354
fileName
Definition: dumpTree.py:9
void pushGeneratorState()
Definition: outputlist.cpp:111
QCString intro() const
Definition: layout.h:151
#define MAX_ITEMS_BEFORE_MULTIPAGE_INDEX
Definition: index.cpp:51
static void startQuickIndexItem(OutputList &ol, const char *l, bool hl, bool compact, bool &first)
Definition: index.cpp:180
#define Config_getBool(val)
Definition: config.cpp:664
virtual QCString trCompoundMembersDescription(bool extractAll)=0
void addContentsItem(bool isDir, const char *name, const char *ref, const char *file, const char *anchor, bool separateIndex=FALSE, bool addToNavIndex=FALSE, Definition *def=0)
Definition: index.h:137
void endQuickIndices()
Definition: outputlist.h:352
LayoutNavEntry * rootNavEntry() const
Definition: layout.cpp:1370
void writeQuickLinks(bool compact, HighlightedItem hli, const char *file)
Definition: outputlist.h:360
QCString fixSpaces(const QCString &s)
Definition: index.cpp:223
void startTextBlock(bool dense=FALSE)
Definition: outputlist.h:404
static QCString letterToLabel(uint startLetter)
Definition: index.cpp:1640
QCString title() const
Definition: layout.h:150
const char * fname
Definition: index.cpp:2493
Translator * theTranslator
Definition: language.cpp:157
void endTextBlock(bool paraBreak=FALSE)
Definition: outputlist.h:406
virtual QCString trCompoundMembers()=0
const char * cs
QCString utf8() const
Definition: qstring.cpp:14507
unsigned uint
Definition: qglobal.h:351
void incContentsDepth()
Definition: index.h:133
const bool TRUE
Definition: qglobal.h:371
static IndexList * indexList
Definition: doxygen.h:149
void startContents()
Definition: outputlist.h:364
void startFile(const char *name, const char *manName, const char *title)
Definition: outputlist.h:97
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 423 of file index.cpp.

424 {
425  if (bcl==0) return;
426  BaseClassListIterator bcli(*bcl);
427  bool started=FALSE;
428  for ( ; bcli.current() ; ++bcli)
429  {
430  ClassDef *cd=bcli.current()->classDef;
432  {
433  continue;
434  }
435 
436  bool b;
437  if (cd->getLanguage()==SrcLangExt_VHDL)
438  {
439  b=hasVisibleRoot(cd->subClasses());
440  }
441  else
442  {
443  b=hasVisibleRoot(cd->baseClasses());
444  }
445 
446  if (cd->isVisibleInHierarchy() && b) // hasVisibleRoot(cd->baseClasses()))
447  {
448  if (!started)
449  {
451  if (addToIndex)
452  {
454  }
455  if (ftv)
456  {
457  ftv->incContentsDepth();
458  }
459  started=TRUE;
460  }
461  ol.startIndexListItem();
462  //printf("Passed...\n");
463  bool hasChildren = !cd->visited && !hideSuper && classHasVisibleChildren(cd);
464  //printf("tree4: Has children %s: %d\n",cd->name().data(),hasChildren);
465  if (cd->isLinkable())
466  {
467  //printf("Writing class %s\n",cd->displayName().data());
469  ol.parseText(cd->displayName());
471  if (cd->isReference())
472  {
473  ol.startTypewriter();
474  ol.docify(" [external]");
475  ol.endTypewriter();
476  }
477  if (addToIndex)
478  {
480  }
481  if (ftv)
482  {
483  if (cd->getLanguage()==SrcLangExt_VHDL)
484  {
485  ftv->addContentsItem(hasChildren,bcli.current()->usedName,cd->getReference(),cd->getOutputFileBase(),cd->anchor(),FALSE,FALSE,cd);
486  }
487  else
488  {
489  ftv->addContentsItem(hasChildren,cd->displayName(),cd->getReference(),cd->getOutputFileBase(),cd->anchor(),FALSE,FALSE,cd);
490  }
491  }
492  }
493  else
494  {
495  ol.startIndexItem(0,0);
496  ol.parseText(cd->name());
497  ol.endIndexItem(0,0);
498  if (addToIndex)
499  {
500  Doxygen::indexList->addContentsItem(hasChildren,cd->displayName(),0,0,0);
501  }
502  if (ftv)
503  {
504  ftv->addContentsItem(hasChildren,cd->displayName(),0,0,0,FALSE,FALSE,cd);
505  }
506  }
507  if (hasChildren)
508  {
509  //printf("Class %s at %p visited=%d\n",cd->name().data(),cd,cd->visited);
510  bool wasVisited=cd->visited;
511  cd->visited=TRUE;
512  if (cd->getLanguage()==SrcLangExt_VHDL)
513  {
514  writeClassTree(ol,cd->baseClasses(),wasVisited,level+1,ftv,addToIndex);
515  }
516  else
517  {
518  writeClassTree(ol,cd->subClasses(),wasVisited,level+1,ftv,addToIndex);
519  }
520  }
521  ol.endIndexListItem();
522  }
523  }
524  if (started)
525  {
527  if (addToIndex)
528  {
530  }
531  if (ftv)
532  {
533  ftv->decContentsDepth();
534  }
535  }
536 }
void endIndexItem(const char *ref, const char *file)
Definition: outputlist.h:143
BaseClassList * subClasses() const
Definition: classdef.cpp:4404
const bool FALSE
Definition: qglobal.h:370
bool isReference() const
Definition: classdef.cpp:3826
QCString displayName(bool includeScope=TRUE) const
Definition: classdef.cpp:312
QCString getReference() const
Definition: classdef.cpp:3814
bool parseText(const QCString &textStr)
Definition: outputlist.cpp:175
Protection protection() const
Definition: classdef.cpp:4414
void decContentsDepth()
Definition: index.h:135
const QCString & name() const
Definition: definition.h:114
SrcLangExt getLanguage() const
QCString anchor() const
Definition: classdef.cpp:4606
bool classHasVisibleChildren(ClassDef *cd)
Definition: util.cpp:5182
void endIndexListItem()
Definition: outputlist.h:123
bool isLinkable() const
Definition: classdef.cpp:2729
void addContentsItem(bool isDir, const char *name, const char *ref, const char *file, const char *anchor, bool separateIndex, bool addToNavIndex, Definition *def)
Definition: ftvhelp.cpp:183
bool visited
Definition: classdef.h:402
void addContentsItem(bool isDir, const char *name, const char *ref, const char *file, const char *anchor, bool separateIndex=FALSE, bool addToNavIndex=FALSE, Definition *def=0)
Definition: index.h:137
QCString getOutputFileBase() const
Definition: classdef.cpp:3533
static void endIndexHierarchy(OutputList &ol, int level)
Definition: index.cpp:104
void startIndexListItem()
Definition: outputlist.h:121
bool isVisibleInHierarchy()
Definition: classdef.cpp:2743
void startTypewriter()
Definition: outputlist.h:172
bool hasVisibleRoot(BaseClassList *bcl)
Definition: util.cpp:5224
static bool * b
Definition: config.cpp:1043
void decContentsDepth()
Definition: ftvhelp.cpp:152
static void writeClassTree(OutputList &ol, const BaseClassList *bcl, bool hideSuper, int level, FTVHelp *ftv, bool addToIndex)
Definition: index.cpp:423
void incContentsDepth()
Definition: ftvhelp.cpp:141
static void startIndexHierarchy(OutputList &ol, int level)
Definition: index.cpp:91
void docify(const char *s)
Definition: outputlist.h:145
void incContentsDepth()
Definition: index.h:133
const bool TRUE
Definition: qglobal.h:371
static IndexList * indexList
Definition: doxygen.h:149
BaseClassList * baseClasses() const
Definition: classdef.cpp:4399
void startIndexItem(const char *ref, const char *file)
Definition: outputlist.h:141
void endTypewriter()
Definition: outputlist.h:174
void writeClassTree ( ClassSDict clDict,
FTVHelp ftv,
bool  addToIndex,
bool  globalOnly 
)

Definition at line 1319 of file index.cpp.

1320 {
1321  if (clDict)
1322  {
1323  ClassSDict::Iterator cli(*clDict);
1324  ClassDef *cd;
1325  for (;(cd=cli.current());++cli)
1326  {
1327  if (cd->getLanguage()==SrcLangExt_VHDL)
1328  {
1331  )// no architecture
1332  {
1333  continue;
1334  }
1336  {
1337  QCString n=cd->name();
1338  cd->setClassName(n.data());
1339  }
1340  }
1341 
1342  if (!globalOnly ||
1343  cd->getOuterScope()==0 ||
1345  )
1346  {
1347  int count=0;
1348  if (cd->getClassSDict())
1349  {
1350  ClassSDict::Iterator ccit(*cd->getClassSDict());
1351  ClassDef *ccd;
1352  for (;(ccd=ccit.current());++ccit)
1353  {
1354  if (ccd->isLinkableInProject() && ccd->templateMaster()==0)
1355  {
1356  count++;
1357  }
1358  }
1359  }
1360  if (classVisibleInIndex(cd) && cd->templateMaster()==0)
1361  {
1362  ftv->addContentsItem(count>0,cd->displayName(FALSE),cd->getReference(),
1363  cd->getOutputFileBase(),cd->anchor(),FALSE,TRUE,cd);
1364  if (addToIndex &&
1365  /*cd->partOfGroups()==0 &&*/
1366  (cd->getOuterScope()==0 ||
1368  )
1369  )
1370  {
1372  cd->displayName(FALSE),
1373  cd->anchor(),
1374  cd->partOfGroups()==0 && !cd->isSimple());
1375  }
1376  if (count>0)
1377  {
1378  ftv->incContentsDepth();
1379  writeClassTree(cd->getClassSDict(),ftv,addToIndex,FALSE);
1380  ftv->decContentsDepth();
1381  }
1382  }
1383  }
1384  }
1385  }
1386 }
bool isSimple() const
Definition: classdef.cpp:4584
const bool FALSE
Definition: qglobal.h:370
QCString displayName(bool includeScope=TRUE) const
Definition: classdef.cpp:312
void setClassName(const char *name)
Definition: classdef.cpp:3926
GroupList * partOfGroups() const
QCString getReference() const
Definition: classdef.cpp:3814
ClassSDict * getClassSDict()
Definition: classdef.cpp:4389
Protection protection() const
Definition: classdef.cpp:4414
static NamespaceDef * globalScope
Definition: doxygen.h:128
virtual DefType definitionType() const =0
ClassDef * templateMaster() const
Definition: classdef.cpp:4439
def cli(ctx)
Definition: main.py:7
const QCString & name() const
Definition: definition.h:114
SrcLangExt getLanguage() const
std::void_t< T > n
QCString anchor() const
Definition: classdef.cpp:4606
const char * data() const
Definition: qcstring.h:207
void addContentsItem(bool isDir, const char *name, const char *ref, const char *file, const char *anchor, bool separateIndex, bool addToNavIndex, Definition *def)
Definition: ftvhelp.cpp:183
void addMembersToIndex(T *def, LayoutDocManager::LayoutPart part, const QCString &name, const QCString &anchor, bool addToIndex=TRUE, bool preventSeparateIndex=FALSE)
Definition: index.cpp:299
QCString getOutputFileBase() const
Definition: classdef.cpp:3533
virtual Definition * getOuterScope() const
void decContentsDepth()
Definition: ftvhelp.cpp:152
friend class Iterator
Definition: sortdict.h:289
static void writeClassTree(OutputList &ol, const BaseClassList *bcl, bool hideSuper, int level, FTVHelp *ftv, bool addToIndex)
Definition: index.cpp:423
void incContentsDepth()
Definition: ftvhelp.cpp:141
bool classVisibleInIndex(ClassDef *cd)
Definition: util.cpp:8334
const bool TRUE
Definition: qglobal.h:371
static void writeClassTreeForList ( OutputList ol,
ClassSDict cl,
bool started,
FTVHelp ftv,
bool  addToIndex 
)
static

Definition at line 800 of file index.cpp.

801 {
803  ClassDef *cd;
804  for (;(cd=cli.current());++cli)
805  {
806  //printf("class %s hasVisibleRoot=%d isVisibleInHierarchy=%d\n",
807  // cd->name().data(),
808  // hasVisibleRoot(cd->baseClasses()),
809  // cd->isVisibleInHierarchy()
810  // );
811  bool b;
812  if (cd->getLanguage()==SrcLangExt_VHDL)
813  {
815  {
816  continue;
817  }
818  b=!hasVisibleRoot(cd->subClasses());
819  }
820  else
821  {
822  b=!hasVisibleRoot(cd->baseClasses());
823  }
824 
825  if (b) //filter on root classes
826  {
827  if (cd->isVisibleInHierarchy()) // should it be visible
828  {
829  if (!started)
830  {
831  startIndexHierarchy(ol,0);
832  if (addToIndex)
833  {
835  }
836  started=TRUE;
837  }
838  ol.startIndexListItem();
839  bool hasChildren = !cd->visited && classHasVisibleChildren(cd);
840  //printf("list: Has children %s: %d\n",cd->name().data(),hasChildren);
841  if (cd->isLinkable())
842  {
843  //printf("Writing class %s isLinkable()=%d isLinkableInProject()=%d cd->templateMaster()=%p\n",
844  // cd->displayName().data(),cd->isLinkable(),cd->isLinkableInProject(),cd->templateMaster());
846  ol.parseText(cd->displayName());
848  if (cd->isReference())
849  {
850  ol.startTypewriter();
851  ol.docify(" [external]");
852  ol.endTypewriter();
853  }
854  if (addToIndex)
855  {
856  if (cd->getLanguage()!=SrcLangExt_VHDL) // prevents double insertion in Design Unit List
857  Doxygen::indexList->addContentsItem(hasChildren,cd->displayName(),cd->getReference(),cd->getOutputFileBase(),cd->anchor(),FALSE,FALSE);
858  }
859  if (ftv)
860  {
861  ftv->addContentsItem(hasChildren,cd->displayName(),cd->getReference(),cd->getOutputFileBase(),cd->anchor(),FALSE,FALSE,cd);
862  }
863  }
864  else
865  {
866  ol.startIndexItem(0,0);
867  ol.parseText(cd->displayName());
868  ol.endIndexItem(0,0);
869  if (addToIndex)
870  {
871  Doxygen::indexList->addContentsItem(hasChildren,cd->displayName(),0,0,0,FALSE,FALSE);
872  }
873  if (ftv)
874  {
875  ftv->addContentsItem(hasChildren,cd->displayName(),0,0,0,FALSE,FALSE,cd);
876  }
877  }
878  if (cd->getLanguage()==SrcLangExt_VHDL && hasChildren)
879  {
880  writeClassTree(ol,cd->baseClasses(),cd->visited,1,ftv,addToIndex);
881  cd->visited=TRUE;
882  }
883  else if (hasChildren)
884  {
885  writeClassTree(ol,cd->subClasses(),cd->visited,1,ftv,addToIndex);
886  cd->visited=TRUE;
887  }
888  ol.endIndexListItem();
889  }
890  }
891  }
892 }
void endIndexItem(const char *ref, const char *file)
Definition: outputlist.h:143
BaseClassList * subClasses() const
Definition: classdef.cpp:4404
const bool FALSE
Definition: qglobal.h:370
bool isReference() const
Definition: classdef.cpp:3826
QCString displayName(bool includeScope=TRUE) const
Definition: classdef.cpp:312
QCString getReference() const
Definition: classdef.cpp:3814
bool parseText(const QCString &textStr)
Definition: outputlist.cpp:175
Protection protection() const
Definition: classdef.cpp:4414
def cli(ctx)
Definition: main.py:7
SrcLangExt getLanguage() const
QCString anchor() const
Definition: classdef.cpp:4606
bool classHasVisibleChildren(ClassDef *cd)
Definition: util.cpp:5182
void endIndexListItem()
Definition: outputlist.h:123
bool isLinkable() const
Definition: classdef.cpp:2729
void addContentsItem(bool isDir, const char *name, const char *ref, const char *file, const char *anchor, bool separateIndex, bool addToNavIndex, Definition *def)
Definition: ftvhelp.cpp:183
bool visited
Definition: classdef.h:402
void addContentsItem(bool isDir, const char *name, const char *ref, const char *file, const char *anchor, bool separateIndex=FALSE, bool addToNavIndex=FALSE, Definition *def=0)
Definition: index.h:137
QCString getOutputFileBase() const
Definition: classdef.cpp:3533
void startIndexListItem()
Definition: outputlist.h:121
bool isVisibleInHierarchy()
Definition: classdef.cpp:2743
void startTypewriter()
Definition: outputlist.h:172
bool hasVisibleRoot(BaseClassList *bcl)
Definition: util.cpp:5224
static bool * b
Definition: config.cpp:1043
friend class Iterator
Definition: sortdict.h:289
static void writeClassTree(OutputList &ol, const BaseClassList *bcl, bool hideSuper, int level, FTVHelp *ftv, bool addToIndex)
Definition: index.cpp:423
static void startIndexHierarchy(OutputList &ol, int level)
Definition: index.cpp:91
void docify(const char *s)
Definition: outputlist.h:145
void incContentsDepth()
Definition: index.h:133
const bool TRUE
Definition: qglobal.h:371
static IndexList * indexList
Definition: doxygen.h:149
BaseClassList * baseClasses() const
Definition: classdef.cpp:4399
void startIndexItem(const char *ref, const char *file)
Definition: outputlist.h:141
void endTypewriter()
Definition: outputlist.h:174
static void writeDirHierarchy ( OutputList ol,
FTVHelp ftv,
bool  addToIndex 
)
static

Definition at line 725 of file index.cpp.

726 {
727  if (ftv)
728  {
729  ol.pushGeneratorState();
731  }
732  static bool fullPathNames = Config_getBool("FULL_PATH_NAMES");
733  startIndexHierarchy(ol,0);
734  if (fullPathNames)
735  {
737  DirDef *dd;
738  for (dli.toFirst();(dd=dli.current());++dli)
739  {
741  {
742  writeDirTreeNode(ol,dd,0,ftv,addToIndex);
743  }
744  }
745  }
746  if (ftv)
747  {
749  FileName *fn;
750  for (fnli.toFirst();(fn=fnli.current());++fnli)
751  {
752  FileNameIterator fni(*fn);
753  FileDef *fd;
754  for (;(fd=fni.current());++fni)
755  {
756  static bool fullPathNames = Config_getBool("FULL_PATH_NAMES");
757  if (!fullPathNames || fd->getDirDef()==0) // top level file
758  {
759  bool doc,src;
760  doc = fileVisibleInIndex(fd,src);
761  QCString reference, outputBase;
762  if (doc)
763  {
764  reference = fd->getReference();
765  outputBase = fd->getOutputFileBase();
766  }
767  if (doc || src)
768  {
769  ftv->addContentsItem(FALSE,fd->displayName(),
770  reference, outputBase, 0,
771  FALSE,FALSE,fd);
772  }
773  if (addToIndex)
774  {
775  if (doc)
776  {
778  }
779  else if (src)
780  {
782  FALSE, convertToHtml(fd->name(),TRUE), 0,
783  fd->getSourceFileBase(), 0, FALSE, TRUE, fd);
784  }
785  }
786  }
787  }
788  }
789  }
790  endIndexHierarchy(ol,0);
791  if (ftv)
792  {
793  ol.popGeneratorState();
794  }
795 }
virtual QCString getReference() const
bool fileVisibleInIndex(FileDef *fd, bool &genSourceFile)
Definition: util.cpp:8177
QCString displayName(bool=TRUE) const
Definition: filedef.h:80
const bool FALSE
Definition: qglobal.h:370
static FileNameList * inputNameList
Definition: doxygen.h:109
DirDef * getDirDef() const
Definition: filedef.h:121
static NamespaceDef * globalScope
Definition: doxygen.h:128
void popGeneratorState()
Definition: outputlist.cpp:121
Definition: sortdict.h:73
QAsciiDict< Entry > fn
void pushGeneratorState()
Definition: outputlist.cpp:111
QCString name() const
Definition: filedef.cpp:1193
QCString convertToHtml(const char *s, bool keepEntities)
Definition: util.cpp:5746
QCString getSourceFileBase() const
Definition: filedef.cpp:1771
static DirSDict * directories
Definition: doxygen.h:139
void disable(OutputGenerator::OutputType o)
Definition: outputlist.cpp:79
Definition: dirdef.h:44
#define Config_getBool(val)
Definition: config.cpp:664
void addContentsItem(bool isDir, const char *name, const char *ref, const char *file, const char *anchor, bool separateIndex, bool addToNavIndex, Definition *def)
Definition: ftvhelp.cpp:183
void addMembersToIndex(T *def, LayoutDocManager::LayoutPart part, const QCString &name, const QCString &anchor, bool addToIndex=TRUE, bool preventSeparateIndex=FALSE)
Definition: index.cpp:299
void addContentsItem(bool isDir, const char *name, const char *ref, const char *file, const char *anchor, bool separateIndex=FALSE, bool addToNavIndex=FALSE, Definition *def=0)
Definition: index.h:137
QCString getOutputFileBase() const
Definition: filedef.h:83
static void writeDirTreeNode(OutputList &ol, DirDef *dd, int level, FTVHelp *ftv, bool addToIndex)
Definition: index.cpp:572
static void endIndexHierarchy(OutputList &ol, int level)
Definition: index.cpp:104
virtual Definition * getOuterScope() const
QCString doc
static void startIndexHierarchy(OutputList &ol, int level)
Definition: index.cpp:91
const bool TRUE
Definition: qglobal.h:371
static IndexList * indexList
Definition: doxygen.h:149
static void writeDirTreeNode ( OutputList ol,
DirDef dd,
int  level,
FTVHelp ftv,
bool  addToIndex 
)
static

Definition at line 572 of file index.cpp.

573 {
574  if (level>20)
575  {
576  warn(dd->getDefFileName(),dd->getDefLine(),
577  "maximum nesting level exceeded for directory %s: "
578  "check for possible recursive directory relation!\n",dd->name().data()
579  );
580  return;
581  }
582 
583  if (!dirHasVisibleChildren(dd))
584  {
585  return;
586  }
587 
588  static bool tocExpand = TRUE; //Config_getBool("TOC_EXPAND");
589  bool isDir = dd->subDirs().count()>0 || // there are subdirs
590  (tocExpand && // or toc expand and
591  dd->getFiles() && dd->getFiles()->count()>0 // there are files
592  );
593  //printf("gd=`%s': pageDict=%d\n",gd->name().data(),gd->pageDict->count());
594  if (addToIndex)
595  {
598  }
599  if (ftv)
600  {
601  ftv->addContentsItem(isDir,dd->shortName(),dd->getReference(),
602  dd->getOutputFileBase(),0,FALSE,TRUE,dd);
603  ftv->incContentsDepth();
604  }
605 
606  ol.startIndexListItem();
608  ol.parseText(dd->shortName());
610  if (dd->isReference())
611  {
612  ol.startTypewriter();
613  ol.docify(" [external]");
614  ol.endTypewriter();
615  }
616 
617  // write sub directories
618  if (dd->subDirs().count()>0)
619  {
621  QListIterator<DirDef> dli(dd->subDirs());
622  DirDef *subdd = 0;
623  for (dli.toFirst();(subdd=dli.current());++dli)
624  {
625  writeDirTreeNode(ol,subdd,level+1,ftv,addToIndex);
626  }
627  endIndexHierarchy(ol,level+1);
628  }
629 
630  FileList *fileList=dd->getFiles();
631  int fileCount=0;
632  if (fileList && fileList->count()>0)
633  {
634  QListIterator<FileDef> it(*fileList);
635  FileDef *fd;
636  for (;(fd=it.current());++it)
637  {
638  //static bool allExternals = Config_getBool("ALLEXTERNALS");
639  //if ((allExternals && fd->isLinkable()) || fd->isLinkableInProject())
640  //{
641  // fileCount++;
642  //}
643  bool genSourceFile;
644  if (fileVisibleInIndex(fd,genSourceFile))
645  {
646  fileCount++;
647  }
648  else if (genSourceFile)
649  {
650  fileCount++;
651  }
652  }
653  if (fileCount>0)
654  {
656  for (it.toFirst();(fd=it.current());++it)
657  {
658  bool doc,src;
659  doc = fileVisibleInIndex(fd,src);
660  QCString reference;
661  QCString outputBase;
662  if (doc)
663  {
664  reference = fd->getReference();
665  outputBase = fd->getOutputFileBase();
666  }
667  if (doc || src)
668  {
669  ol.startIndexListItem();
670  ol.startIndexItem(reference,outputBase);
671  ol.parseText(fd->displayName());
672  ol.endIndexItem(reference,outputBase);
673  ol.endIndexListItem();
674  if (ftv && (src || doc))
675  {
676  ftv->addContentsItem(FALSE,
677  fd->displayName(),
678  reference,outputBase,
679  0,FALSE,FALSE,fd);
680  }
681  }
682  }
683  endIndexHierarchy(ol,level+1);
684  }
685  }
686 
687  if (tocExpand && addToIndex)
688  {
689  // write files of this directory
690  if (fileCount>0)
691  {
692  QListIterator<FileDef> it(*fileList);
693  FileDef *fd;
694  for (;(fd=it.current());++it)
695  {
696  //static bool allExternals = Config_getBool("ALLEXTERNALS");
697  //if ((allExternals && fd->isLinkable()) || fd->isLinkableInProject())
698  bool doc,src;
699  doc = fileVisibleInIndex(fd,src);
700  if (doc)
701  {
703  }
704  else if (src)
705  {
707  FALSE, convertToHtml(fd->name(),TRUE), 0,
708  fd->getSourceFileBase(), 0, FALSE, TRUE, fd);
709  }
710  }
711  }
712  }
713  ol.endIndexListItem();
714 
715  if (addToIndex)
716  {
718  }
719  if (ftv)
720  {
721  ftv->decContentsDepth();
722  }
723 }
void endIndexItem(const char *ref, const char *file)
Definition: outputlist.h:143
virtual QCString getReference() const
const QCString & shortName() const
Definition: dirdef.h:57
bool fileVisibleInIndex(FileDef *fd, bool &genSourceFile)
Definition: util.cpp:8177
QCString displayName(bool=TRUE) const
Definition: filedef.h:80
static bool dirHasVisibleChildren(DirDef *dd)
Definition: index.cpp:540
const bool FALSE
Definition: qglobal.h:370
virtual bool isReference() const
bool parseText(const QCString &textStr)
Definition: outputlist.cpp:175
QCString getDefFileName() const
uint count() const
Definition: qlist.h:66
void decContentsDepth()
Definition: index.h:135
const QCString & name() const
Definition: definition.h:114
int getDefLine() const
Definition: definition.h:188
QCString name() const
Definition: filedef.cpp:1193
QCString convertToHtml(const char *s, bool keepEntities)
Definition: util.cpp:5746
QCString getSourceFileBase() const
Definition: filedef.cpp:1771
const DirList & subDirs() const
Definition: dirdef.h:61
void endIndexListItem()
Definition: outputlist.h:123
const char * data() const
Definition: qcstring.h:207
Definition: dirdef.h:44
type * current() const
Definition: qlist.h:146
void addContentsItem(bool isDir, const char *name, const char *ref, const char *file, const char *anchor, bool separateIndex, bool addToNavIndex, Definition *def)
Definition: ftvhelp.cpp:183
void warn(const char *file, int line, const char *fmt,...)
Definition: message.cpp:183
void addMembersToIndex(T *def, LayoutDocManager::LayoutPart part, const QCString &name, const QCString &anchor, bool addToIndex=TRUE, bool preventSeparateIndex=FALSE)
Definition: index.cpp:299
void addContentsItem(bool isDir, const char *name, const char *ref, const char *file, const char *anchor, bool separateIndex=FALSE, bool addToNavIndex=FALSE, Definition *def=0)
Definition: index.h:137
QCString getOutputFileBase() const
Definition: filedef.h:83
static void writeDirTreeNode(OutputList &ol, DirDef *dd, int level, FTVHelp *ftv, bool addToIndex)
Definition: index.cpp:572
static void endIndexHierarchy(OutputList &ol, int level)
Definition: index.cpp:104
void startIndexListItem()
Definition: outputlist.h:121
QCString getOutputFileBase() const
Definition: dirdef.cpp:113
void startTypewriter()
Definition: outputlist.h:172
QCString doc
void decContentsDepth()
Definition: ftvhelp.cpp:152
FileList * getFiles() const
Definition: dirdef.h:59
void incContentsDepth()
Definition: ftvhelp.cpp:141
static void startIndexHierarchy(OutputList &ol, int level)
Definition: index.cpp:91
void docify(const char *s)
Definition: outputlist.h:145
void incContentsDepth()
Definition: index.h:133
const bool TRUE
Definition: qglobal.h:371
static IndexList * indexList
Definition: doxygen.h:149
void startIndexItem(const char *ref, const char *file)
Definition: outputlist.h:141
void endTypewriter()
Definition: outputlist.h:174
static void writeExampleIndex ( OutputList ol)
static

Definition at line 2999 of file index.cpp.

3000 {
3001  if (Doxygen::exampleSDict->count()==0) return;
3002  ol.pushGeneratorState();
3005  QCString title = lne ? lne->title() : theTranslator->trExamples();
3006  bool addToIndex = lne==0 || lne->visible();
3007 
3008  startFile(ol,"examples",0,title,HLI_Examples);
3009 
3010  startTitle(ol,0);
3011  ol.parseText(title);
3012  endTitle(ol,0,0);
3013 
3014  ol.startContents();
3015 
3016  if (addToIndex)
3017  {
3018  Doxygen::indexList->addContentsItem(TRUE,title,0,"examples",0,TRUE,TRUE);
3020  }
3021 
3022  ol.startTextBlock();
3023  ol.parseText(lne ? lne->intro() : theTranslator->trExamplesDescription());
3024  ol.endTextBlock();
3025 
3026  ol.startItemList();
3028  PageDef *pd=0;
3029  for (pdi.toFirst();(pd=pdi.current());++pdi)
3030  {
3031  ol.startItemListItem();
3033  if (!pd->title().isEmpty())
3034  {
3035  ol.writeObjectLink(0,n,0,pd->title());
3036  if (addToIndex)
3037  {
3039  }
3040  }
3041  else
3042  {
3043  ol.writeObjectLink(0,n,0,pd->name());
3044  if (addToIndex)
3045  {
3047  }
3048  }
3049  ol.endItemListItem();
3050  ol.writeString("\n");
3051  }
3052  ol.endItemList();
3053 
3054  if (addToIndex)
3055  {
3057  }
3058  endFile(ol);
3059  ol.popGeneratorState();
3060 }
virtual QCString trExamples()=0
void endFile(OutputList &ol, bool skipNavIndex, bool skipEndContents, const QCString &navPath)
Definition: index.cpp:263
void startItemListItem()
Definition: outputlist.h:182
LayoutNavEntry * find(LayoutNavEntry::Kind k, const char *file=0) const
Definition: layout.cpp:76
virtual QCString getReference() const
static PageSDict * exampleSDict
Definition: doxygen.h:101
bool isEmpty() const
Definition: qcstring.h:189
void startFile(OutputList &ol, const char *name, const char *manName, const char *title, HighlightedItem hli, bool additionalIndices, const char *altSidebarName)
Definition: index.cpp:244
QCString title() const
Definition: pagedef.h:54
void writeString(const char *text)
Definition: outputlist.h:119
const bool FALSE
Definition: qglobal.h:370
static LayoutDocManager & instance()
Definition: layout.cpp:1359
bool parseText(const QCString &textStr)
Definition: outputlist.cpp:175
Base class for the layout of a navigation item at the top of the HTML pages.
Definition: layout.h:118
void popGeneratorState()
Definition: outputlist.cpp:121
void decContentsDepth()
Definition: index.h:135
const QCString & name() const
Definition: definition.h:114
bool visible()
Definition: layout.h:153
void pushGeneratorState()
Definition: outputlist.cpp:111
std::void_t< T > n
QCString intro() const
Definition: layout.h:151
void disable(OutputGenerator::OutputType o)
Definition: outputlist.cpp:79
virtual QCString trExamplesDescription()=0
void addContentsItem(bool isDir, const char *name, const char *ref, const char *file, const char *anchor, bool separateIndex=FALSE, bool addToNavIndex=FALSE, Definition *def=0)
Definition: index.h:137
LayoutNavEntry * rootNavEntry() const
Definition: layout.cpp:1370
void endItemListItem()
Definition: outputlist.h:184
void startTitle(OutputList &ol, const char *fileName, Definition *def)
Definition: index.cpp:228
void endItemList()
Definition: outputlist.h:139
void startTextBlock(bool dense=FALSE)
Definition: outputlist.h:404
A model of a page symbol.
Definition: pagedef.h:29
QCString title() const
Definition: layout.h:150
Translator * theTranslator
Definition: language.cpp:157
void endTextBlock(bool paraBreak=FALSE)
Definition: outputlist.h:406
void endTitle(OutputList &ol, const char *fileName, const char *name)
Definition: index.cpp:237
friend class Iterator
Definition: sortdict.h:289
void writeObjectLink(const char *ref, const char *file, const char *anchor, const char *name)
Definition: outputlist.h:149
void startItemList()
Definition: outputlist.h:137
QCString getOutputFileBase() const
Definition: pagedef.cpp:58
void incContentsDepth()
Definition: index.h:133
const bool TRUE
Definition: qglobal.h:371
static IndexList * indexList
Definition: doxygen.h:149
void startContents()
Definition: outputlist.h:364
QCString filterTitle(const QCString &title)
Definition: util.cpp:7765
static void writeFileIndex ( OutputList ol)
static

Definition at line 1166 of file index.cpp.

1167 {
1168  if (documentedHtmlFiles==0) return;
1169 
1170  ol.pushGeneratorState();
1173 
1175  if (lne==0) lne = LayoutDocManager::instance().rootNavEntry()->find(LayoutNavEntry::Files); // fall back
1176  QCString title = lne ? lne->title() : theTranslator->trFileList();
1177  bool addToIndex = lne==0 || lne->visible();
1178 
1179  startFile(ol,"files",0,title,HLI_Files);
1180  startTitle(ol,0);
1181  //if (!Config_getString("PROJECT_NAME").isEmpty())
1182  //{
1183  // title.prepend(Config_getString("PROJECT_NAME")+" ");
1184  //}
1185  ol.parseText(title);
1186  endTitle(ol,0,0);
1187  ol.startContents();
1188  ol.startTextBlock();
1189 
1190  if (addToIndex)
1191  {
1192  Doxygen::indexList->addContentsItem(TRUE,title,0,"files",0,TRUE,TRUE);
1194  }
1195 
1196  ol.parseText(lne ? lne->intro() : theTranslator->trFileListDescription(Config_getBool("EXTRACT_ALL")));
1197  ol.endTextBlock();
1198 
1199  // ---------------
1200  // Flat file index
1201  // ---------------
1202 
1203  // 1. {
1204  ol.pushGeneratorState();
1206 
1207  OutputNameDict outputNameDict(1009);
1208  OutputNameList outputNameList;
1209  outputNameList.setAutoDelete(TRUE);
1210 
1211  if (Config_getBool("FULL_PATH_NAMES"))
1212  {
1213  // re-sort input files in (dir,file) output order instead of (file,dir) input order
1215  FileName *fn;
1216  for (fnli.toFirst();(fn=fnli.current());++fnli)
1217  {
1218  FileNameIterator fni(*fn);
1219  FileDef *fd;
1220  for (;(fd=fni.current());++fni)
1221  {
1222  QCString path=fd->getPath();
1223  if (path.isEmpty()) path="[external]";
1224  FileList *fl = outputNameDict.find(path);
1225  if (fl)
1226  {
1227  fl->append(fd);
1228  //printf("+ inserting %s---%s\n",fd->getPath().data(),fd->name().data());
1229  }
1230  else
1231  {
1232  //printf("o inserting %s---%s\n",fd->getPath().data(),fd->name().data());
1233  fl = new FileList(path);
1234  fl->append(fd);
1235  outputNameList.append(fl);
1236  outputNameDict.insert(path,fl);
1237  }
1238  }
1239  }
1240  }
1241 
1242  ol.startIndexList();
1243  if (Config_getBool("FULL_PATH_NAMES"))
1244  {
1245  outputNameList.sort();
1246  QListIterator<FileList> fnli(outputNameList);
1247  FileList *fl;
1248  for (fnli.toFirst();(fl=fnli.current());++fnli)
1249  {
1250  fl->sort();
1251  QListIterator<FileDef> it(*fl);
1252  FileDef *fd;
1253  for (;(fd=it.current());++it)
1254  {
1255  writeSingleFileIndex(ol,fd);
1256  }
1257  }
1258  }
1259  else
1260  {
1262  FileName *fn;
1263  for (fnli.toFirst();(fn=fnli.current());++fnli)
1264  {
1265  FileNameIterator fni(*fn);
1266  FileDef *fd;
1267  for (;(fd=fni.current());++fni)
1268  {
1269  writeSingleFileIndex(ol,fd);
1270  }
1271  }
1272  }
1273  ol.endIndexList();
1274 
1275  // 1. }
1276  ol.popGeneratorState();
1277 
1278  // ---------------
1279  // Hierarchical file index for HTML
1280  // ---------------
1281  ol.pushGeneratorState();
1283 
1284  FTVHelp* ftv = new FTVHelp(FALSE);
1285  writeDirHierarchy(ol,ftv,addToIndex);
1286  QGString outStr;
1287  FTextStream t(&outStr);
1288  ftv->generateTreeViewInline(t);
1289  ol.writeString(outStr);
1290  delete ftv;
1291 
1292  ol.popGeneratorState();
1293  // ------
1294 
1295  if (addToIndex)
1296  {
1298  }
1299 
1300  endFile(ol);
1301  ol.popGeneratorState();
1302 }
void endFile(OutputList &ol, bool skipNavIndex, bool skipEndContents, const QCString &navPath)
Definition: index.cpp:263
LayoutNavEntry * find(LayoutNavEntry::Kind k, const char *file=0) const
Definition: layout.cpp:76
bool isEmpty() const
Definition: qcstring.h:189
int documentedHtmlFiles
Definition: index.cpp:65
void startFile(OutputList &ol, const char *name, const char *manName, const char *title, HighlightedItem hli, bool additionalIndices, const char *altSidebarName)
Definition: index.cpp:244
void append(const type *d)
Definition: qlist.h:73
void writeString(const char *text)
Definition: outputlist.h:119
void disableAllBut(OutputGenerator::OutputType o)
Definition: outputlist.cpp:49
const bool FALSE
Definition: qglobal.h:370
static FileNameList * inputNameList
Definition: doxygen.h:109
static void writeDirHierarchy(OutputList &ol, FTVHelp *ftv, bool addToIndex)
Definition: index.cpp:725
static LayoutDocManager & instance()
Definition: layout.cpp:1359
Simplified and optimized version of QTextStream.
Definition: ftextstream.h:11
void generateTreeViewInline(FTextStream &t)
Definition: ftvhelp.cpp:716
int find(const type *d) const
Definition: qlist.h:88
bool parseText(const QCString &textStr)
Definition: outputlist.cpp:175
Base class for the layout of a navigation item at the top of the HTML pages.
Definition: layout.h:118
virtual QCString trFileListDescription(bool extractAll)=0
static void writeSingleFileIndex(OutputList &ol, FileDef *fd)
Definition: index.cpp:1088
void startIndexList()
Definition: outputlist.h:125
void popGeneratorState()
Definition: outputlist.cpp:121
void decContentsDepth()
Definition: index.h:135
QAsciiDict< Entry > fn
bool visible()
Definition: layout.h:153
void pushGeneratorState()
Definition: outputlist.cpp:111
QCString intro() const
Definition: layout.h:151
void sort()
Definition: qlist.h:85
void endIndexList()
Definition: outputlist.h:127
void disable(OutputGenerator::OutputType o)
Definition: outputlist.cpp:79
#define Config_getBool(val)
Definition: config.cpp:664
void addContentsItem(bool isDir, const char *name, const char *ref, const char *file, const char *anchor, bool separateIndex=FALSE, bool addToNavIndex=FALSE, Definition *def=0)
Definition: index.h:137
LayoutNavEntry * rootNavEntry() const
Definition: layout.cpp:1370
int documentedFiles
Definition: index.cpp:58
void startTitle(OutputList &ol, const char *fileName, Definition *def)
Definition: index.cpp:228
void startTextBlock(bool dense=FALSE)
Definition: outputlist.h:404
QCString getPath() const
Definition: filedef.h:110
QCString title() const
Definition: layout.h:150
Translator * theTranslator
Definition: language.cpp:157
void endTextBlock(bool paraBreak=FALSE)
Definition: outputlist.h:406
void endTitle(OutputList &ol, const char *fileName, const char *name)
Definition: index.cpp:237
void setAutoDelete(bool enable)
Definition: qlist.h:99
virtual QCString trFileList()=0
void incContentsDepth()
Definition: index.h:133
const bool TRUE
Definition: qglobal.h:371
static IndexList * indexList
Definition: doxygen.h:149
void startContents()
Definition: outputlist.h:364
static void writeFileLinkForMember ( OutputList ol,
MemberDef md,
const char *  separator,
QCString prevFileName 
)
static

Definition at line 2128 of file index.cpp.

2130 {
2131  FileDef *fd=md->getFileDef();
2132  if (fd && prevFileName!=fd->name())
2133  {
2134  ol.docify(separator);
2136  fd->name());
2137  ol.writeString("\n");
2138  prevFileName = fd->name();
2139  }
2140 }
QCString getReference() const
Definition: memberdef.cpp:1001
void writeString(const char *text)
Definition: outputlist.h:119
FileDef * getFileDef() const
Definition: memberdef.cpp:4075
QCString name() const
Definition: filedef.cpp:1193
QCString anchor() const
Definition: memberdef.cpp:1031
QCString getOutputFileBase() const
Definition: memberdef.cpp:941
void docify(const char *s)
Definition: outputlist.h:145
void writeObjectLink(const char *ref, const char *file, const char *anchor, const char *name)
Definition: outputlist.h:149
static void writeFileMemberIndex ( OutputList ol)
static

Definition at line 2804 of file index.cpp.

2805 {
2807  bool addToIndex = lne==0 || lne->visible();
2808  if (documentedFileMembers[FMHL_All]>0 && addToIndex)
2809  {
2810  Doxygen::indexList->addContentsItem(FALSE,lne ? lne->title() : theTranslator->trFileMembers(),0,"globals",0);
2812  }
2820  if (documentedFileMembers[FMHL_All]>0 && addToIndex)
2821  {
2823  }
2824 
2825 }
LayoutNavEntry * find(LayoutNavEntry::Kind k, const char *file=0) const
Definition: layout.cpp:76
int documentedFileMembers[FMHL_Total]
Definition: index.cpp:63
const bool FALSE
Definition: qglobal.h:370
static LayoutDocManager & instance()
Definition: layout.cpp:1359
virtual QCString trFileMembers()=0
Base class for the layout of a navigation item at the top of the HTML pages.
Definition: layout.h:118
void decContentsDepth()
Definition: index.h:135
bool visible()
Definition: layout.h:153
static void writeFileMemberIndexFiltered(OutputList &ol, FileMemberHighlight hl)
Definition: index.cpp:2692
void addContentsItem(bool isDir, const char *name, const char *ref, const char *file, const char *anchor, bool separateIndex=FALSE, bool addToNavIndex=FALSE, Definition *def=0)
Definition: index.h:137
LayoutNavEntry * rootNavEntry() const
Definition: layout.cpp:1370
QCString title() const
Definition: layout.h:150
Translator * theTranslator
Definition: language.cpp:157
void incContentsDepth()
Definition: index.h:133
static IndexList * indexList
Definition: doxygen.h:149
static void writeFileMemberIndexFiltered ( OutputList ol,
FileMemberHighlight  hl 
)
static

Definition at line 2692 of file index.cpp.

2693 {
2694  if (documentedFileMembers[hl]==0) return;
2695 
2696  static bool disableIndex = Config_getBool("DISABLE_INDEX");
2697 
2698  bool multiPageIndex=FALSE;
2700  {
2701  multiPageIndex=TRUE;
2702  }
2703 
2704  ol.pushGeneratorState();
2706 
2709  QCString title = lne ? lne->title() : theTranslator->trFileMembers();
2710  bool addToIndex = lne==0 || lne->visible();
2711 
2712  if (addToIndex)
2713  {
2714  Doxygen::indexList->addContentsItem(multiPageIndex,getFmhlInfo(hl)->title,0,
2715  getFmhlInfo(hl)->fname,0,multiPageIndex,TRUE);
2716  if (multiPageIndex) Doxygen::indexList->incContentsDepth();
2717  }
2718 
2719  bool first=TRUE;
2721  MemberIndexList *ml;
2722  for (it.toFirst();(ml=it.current());++it)
2723  {
2724  uint page = ml->letter();
2726  if (multiPageIndex)
2727  {
2728  if (!first)
2729  {
2730  fileName+="_"+letterToLabel(page);
2731  }
2732  QCString cs = QString(QChar(page)).utf8();
2733  if (addToIndex)
2734  {
2736  }
2737  }
2738  bool quickIndex = documentedFileMembers[hl]>maxItemsBeforeQuickIndex;
2739 
2740  ol.startFile(fileName+extension,0,title);
2741  ol.startQuickIndices();
2742  if (!disableIndex)
2743  {
2745  startQuickIndexList(ol);
2746 
2747  // index item for all file member lists
2750  ol.writeString(fixSpaces(getFmhlInfo(0)->title));
2751  endQuickIndexItem(ol);
2752 
2753  int i;
2754  // index items for per category member lists
2755  for (i=1;i<FMHL_Total;i++)
2756  {
2757  if (documentedFileMembers[i]>0)
2758  {
2761  ol.writeString(fixSpaces(getFmhlInfo(i)->title));
2762  endQuickIndexItem(ol);
2763  }
2764  }
2765 
2766  endQuickIndexList(ol);
2767 
2768  if (quickIndex)
2769  {
2771  getFmhlInfo(hl)->fname,multiPageIndex);
2772  }
2773  }
2774  ol.endQuickIndices();
2775  ol.writeSplitBar(fileName);
2776  ol.writeSearchInfo();
2777 
2778  ol.startContents();
2779 
2780  if (hl==FMHL_All)
2781  {
2782  ol.startTextBlock();
2783  ol.parseText(lne ? lne->intro() : theTranslator->trFileMembersDescription(Config_getBool("EXTRACT_ALL")));
2784  ol.endTextBlock();
2785  }
2786  else
2787  {
2788  // hack to work around a mozilla bug, which refuses to switch to
2789  // normal lists otherwise
2790  ol.writeString("&#160;");
2791  }
2792 
2793  writeMemberList(ol,quickIndex,
2794  multiPageIndex?page:-1,
2797  endFile(ol);
2798  first=FALSE;
2799  }
2800  if (multiPageIndex && addToIndex) Doxygen::indexList->decContentsDepth();
2801  ol.popGeneratorState();
2802 }
const int maxItemsBeforeQuickIndex
Definition: index.cpp:143
void endFile(OutputList &ol, bool skipNavIndex, bool skipEndContents, const QCString &navPath)
Definition: index.cpp:263
LayoutNavEntry * find(LayoutNavEntry::Kind k, const char *file=0) const
Definition: layout.cpp:76
static void writeQuickMemberIndex(OutputList &ol, const LetterToIndexMap< MemberIndexList > &charUsed, uint page, QCString fullName, bool multiPage)
Definition: index.cpp:2458
static void endQuickIndexList(OutputList &ol)
Definition: index.cpp:170
int documentedFileMembers[FMHL_Total]
Definition: index.cpp:63
static QCString htmlFileExtension
Definition: doxygen.h:130
void writeString(const char *text)
Definition: outputlist.h:119
void disableAllBut(OutputGenerator::OutputType o)
Definition: outputlist.cpp:49
static void startQuickIndexList(OutputList &ol, bool letterTabs=FALSE)
Definition: index.cpp:149
void writeSearchInfo()
Definition: outputlist.h:99
const bool FALSE
Definition: qglobal.h:370
static LayoutDocManager & instance()
Definition: layout.cpp:1359
void startQuickIndices()
Definition: outputlist.h:350
The QString class provides an abstraction of Unicode text and the classic C null-terminated char arra...
Definition: qstring.h:350
virtual QCString trFileMembers()=0
The QChar class provides a light-weight Unicode character.
Definition: qstring.h:56
bool parseText(const QCString &textStr)
Definition: outputlist.cpp:175
Base class for the layout of a navigation item at the top of the HTML pages.
Definition: layout.h:118
static void endQuickIndexItem(OutputList &ol)
Definition: index.cpp:213
void popGeneratorState()
Definition: outputlist.cpp:121
void decContentsDepth()
Definition: index.h:135
const char * fname
Definition: index.cpp:2668
uint letter() const
Definition: index.cpp:134
bool visible()
Definition: layout.h:153
static void writeMemberList(OutputList &ol, bool useSections, int page, const LetterToIndexMap< MemberIndexList > &memberLists, DefinitionIntf::DefType type)
Definition: index.cpp:2156
void writeSplitBar(const char *name)
Definition: outputlist.h:354
fileName
Definition: dumpTree.py:9
void pushGeneratorState()
Definition: outputlist.cpp:111
QCString intro() const
Definition: layout.h:151
virtual QCString trFileMembersDescription(bool extractAll)=0
#define MAX_ITEMS_BEFORE_MULTIPAGE_INDEX
Definition: index.cpp:51
static LetterToIndexMap< MemberIndexList > g_fileIndexLetterUsed[FMHL_Total]
Definition: index.cpp:140
static void startQuickIndexItem(OutputList &ol, const char *l, bool hl, bool compact, bool &first)
Definition: index.cpp:180
#define Config_getBool(val)
Definition: config.cpp:664
void addContentsItem(bool isDir, const char *name, const char *ref, const char *file, const char *anchor, bool separateIndex=FALSE, bool addToNavIndex=FALSE, Definition *def=0)
Definition: index.h:137
void endQuickIndices()
Definition: outputlist.h:352
LayoutNavEntry * rootNavEntry() const
Definition: layout.cpp:1370
void writeQuickLinks(bool compact, HighlightedItem hli, const char *file)
Definition: outputlist.h:360
QCString fixSpaces(const QCString &s)
Definition: index.cpp:223
void startTextBlock(bool dense=FALSE)
Definition: outputlist.h:404
static QCString letterToLabel(uint startLetter)
Definition: index.cpp:1640
QCString title() const
Definition: layout.h:150
Translator * theTranslator
Definition: language.cpp:157
void endTextBlock(bool paraBreak=FALSE)
Definition: outputlist.h:406
const char * cs
QCString utf8() const
Definition: qstring.cpp:14507
unsigned uint
Definition: qglobal.h:351
void incContentsDepth()
Definition: index.h:133
const bool TRUE
Definition: qglobal.h:371
static IndexList * indexList
Definition: doxygen.h:149
static const FmhlInfo * getFmhlInfo(int hl)
Definition: index.cpp:2672
void startContents()
Definition: outputlist.h:364
void startFile(const char *name, const char *manName, const char *title)
Definition: outputlist.h:97
static void writeGraphicalClassHierarchy ( OutputList ol)
static

Definition at line 1036 of file index.cpp.

1037 {
1038  if (hierarchyClasses==0) return;
1041  QCString title = lne ? lne->title() : theTranslator->trClassHierarchy();
1042  startFile(ol,"inherits",0,title,HLI_Hierarchy,FALSE,"hierarchy");
1043  startTitle(ol,0);
1044  ol.parseText(title);
1045  endTitle(ol,0,0);
1046  ol.startContents();
1047  ol.startTextBlock();
1048  ol.startParagraph();
1049  ol.startTextLink("hierarchy",0);
1051  ol.endTextLink();
1052  ol.endParagraph();
1053  ol.endTextBlock();
1056  endFile(ol);
1057  ol.enableAll();
1058 }
virtual QCString trClassHierarchy()=0
void endFile(OutputList &ol, bool skipNavIndex, bool skipEndContents, const QCString &navPath)
Definition: index.cpp:263
LayoutNavEntry * find(LayoutNavEntry::Kind k, const char *file=0) const
Definition: layout.cpp:76
static constexpr double g
Definition: Units.h:144
void startFile(OutputList &ol, const char *name, const char *manName, const char *title, HighlightedItem hli, bool additionalIndices, const char *altSidebarName)
Definition: index.cpp:244
void writeGraphicalHierarchy(const DotGfxHierarchyTable &g)
Definition: outputlist.h:402
virtual QCString trGotoTextualHierarchy()=0
void disableAllBut(OutputGenerator::OutputType o)
Definition: outputlist.cpp:49
void startParagraph()
Definition: outputlist.h:115
const bool FALSE
Definition: qglobal.h:370
static LayoutDocManager & instance()
Definition: layout.cpp:1359
void startTextLink(const char *file, const char *anchor)
Definition: outputlist.h:159
bool parseText(const QCString &textStr)
Definition: outputlist.cpp:175
Base class for the layout of a navigation item at the top of the HTML pages.
Definition: layout.h:118
void endParagraph()
Definition: outputlist.h:117
int hierarchyClasses
Definition: index.cpp:57
LayoutNavEntry * rootNavEntry() const
Definition: layout.cpp:1370
void startTitle(OutputList &ol, const char *fileName, Definition *def)
Definition: index.cpp:228
void startTextBlock(bool dense=FALSE)
Definition: outputlist.h:404
void enableAll()
Definition: outputlist.cpp:59
QCString title() const
Definition: layout.h:150
Translator * theTranslator
Definition: language.cpp:157
void endTextBlock(bool paraBreak=FALSE)
Definition: outputlist.h:406
void endTitle(OutputList &ol, const char *fileName, const char *name)
Definition: index.cpp:237
void endTextLink()
Definition: outputlist.h:161
void startContents()
Definition: outputlist.h:364
void writeGraphInfo ( OutputList ol)

Definition at line 3245 of file index.cpp.

3246 {
3247  if (!Config_getBool("HAVE_DOT") || !Config_getBool("GENERATE_HTML")) return;
3248  ol.pushGeneratorState();
3250  generateGraphLegend(Config_getString("HTML_OUTPUT"));
3251 
3252  bool &stripCommentsStateRef = Config_getBool("STRIP_CODE_COMMENTS");
3253  bool oldStripCommentsState = stripCommentsStateRef;
3254  bool &createSubdirs = Config_getBool("CREATE_SUBDIRS");
3255  bool oldCreateSubdirs = createSubdirs;
3256  // temporarily disable the stripping of comments for our own code example!
3257  stripCommentsStateRef = FALSE;
3258  // temporarily disable create subdirs for linking to our example
3259  createSubdirs = FALSE;
3260 
3261  startFile(ol,"graph_legend",0,theTranslator->trLegendTitle().data());
3262  startTitle(ol,0);
3264  endTitle(ol,0,0);
3265  ol.startContents();
3266  QCString legendDocs = theTranslator->trLegendDocs();
3267  int s = legendDocs.find("<center>");
3268  int e = legendDocs.find("</center>");
3269  QCString imgExt = getDotImageExtension();
3270  if (imgExt=="svg" && s!=-1 && e!=-1)
3271  {
3272  legendDocs = legendDocs.left(s+8) + "[!-- SVG 0 --]\n" + legendDocs.mid(e);
3273  //printf("legendDocs=%s\n",legendDocs.data());
3274  }
3275  FileDef fd("","graph_legend");
3276  ol.generateDoc("graph_legend",1,&fd,0,legendDocs,FALSE,FALSE);
3277 
3278  // restore config settings
3279  stripCommentsStateRef = oldStripCommentsState;
3280  createSubdirs = oldCreateSubdirs;
3281 
3282  endFile(ol);
3283  ol.popGeneratorState();
3284 }
void endFile(OutputList &ol, bool skipNavIndex, bool skipEndContents, const QCString &navPath)
Definition: index.cpp:263
void startFile(OutputList &ol, const char *name, const char *manName, const char *title, HighlightedItem hli, bool additionalIndices, const char *altSidebarName)
Definition: index.cpp:244
bool generateDoc(const char *fileName, int startLine, Definition *ctx, MemberDef *md, const QCString &docStr, bool indexWords, bool isExample, const char *exampleName=0, bool singleLine=FALSE, bool linkFromIndex=FALSE)
Definition: outputlist.cpp:131
void disableAllBut(OutputGenerator::OutputType o)
Definition: outputlist.cpp:49
virtual QCString trLegendTitle()=0
const bool FALSE
Definition: qglobal.h:370
QCString left(uint len) const
Definition: qcstring.cpp:213
int find(char c, int index=0, bool cs=TRUE) const
Definition: qcstring.cpp:41
bool parseText(const QCString &textStr)
Definition: outputlist.cpp:175
void popGeneratorState()
Definition: outputlist.cpp:121
const double e
void pushGeneratorState()
Definition: outputlist.cpp:111
const char * data() const
Definition: qcstring.h:207
#define Config_getString(val)
Definition: config.cpp:660
#define Config_getBool(val)
Definition: config.cpp:664
QCString getDotImageExtension(void)
Definition: util.cpp:8562
QCString mid(uint index, uint len=0xffffffff) const
Definition: qcstring.cpp:246
void startTitle(OutputList &ol, const char *fileName, Definition *def)
Definition: index.cpp:228
Translator * theTranslator
Definition: language.cpp:157
void endTitle(OutputList &ol, const char *fileName, const char *name)
Definition: index.cpp:237
static QCString * s
Definition: config.cpp:1042
virtual QCString trLegendDocs()=0
void startContents()
Definition: outputlist.h:364
void generateGraphLegend(const char *path)
Definition: dot.cpp:4127
static void writeGroupHierarchy ( OutputList ol,
FTVHelp ftv,
bool  addToIndex 
)
static

Definition at line 3539 of file index.cpp.

3540 {
3541  if (ftv)
3542  {
3543  ol.pushGeneratorState();
3545  }
3546  startIndexHierarchy(ol,0);
3548  GroupDef *gd;
3549  for (gli.toFirst();(gd=gli.current());++gli)
3550  {
3551  writeGroupTreeNode(ol,gd,0,ftv,addToIndex);
3552  }
3553  endIndexHierarchy(ol,0);
3554  if (ftv)
3555  {
3556  ol.popGeneratorState();
3557  }
3558 }
static GroupSDict * groupSDict
Definition: doxygen.h:119
void popGeneratorState()
Definition: outputlist.cpp:121
void pushGeneratorState()
Definition: outputlist.cpp:111
static void writeGroupTreeNode(OutputList &ol, GroupDef *gd, int level, FTVHelp *ftv, bool addToIndex)
Definition: index.cpp:3292
void disable(OutputGenerator::OutputType o)
Definition: outputlist.cpp:79
static void endIndexHierarchy(OutputList &ol, int level)
Definition: index.cpp:104
friend class Iterator
Definition: sortdict.h:289
static void startIndexHierarchy(OutputList &ol, int level)
Definition: index.cpp:91
static void writeGroupIndex ( OutputList ol)
static

Definition at line 3597 of file index.cpp.

3598 {
3599  if (documentedGroups==0) return;
3600  ol.pushGeneratorState();
3601  // 1.{
3604  QCString title = lne ? lne->title() : theTranslator->trModules();
3605  bool addToIndex = lne==0 || lne->visible();
3606 
3607  startFile(ol,"modules",0,title,HLI_Modules);
3608  startTitle(ol,0);
3609  ol.parseText(title);
3610  endTitle(ol,0,0);
3611  ol.startContents();
3612  ol.startTextBlock();
3613  ol.parseText(lne ? lne->intro() : theTranslator->trModulesDescription());
3614  ol.endTextBlock();
3615 
3616  // ---------------
3617  // Normal group index for Latex/RTF
3618  // ---------------
3619  // 2.{
3620  ol.pushGeneratorState();
3623 
3624  writeGroupHierarchy(ol,0,FALSE);
3625 
3627  ol.popGeneratorState();
3628  // 2.}
3629 
3630  // ---------------
3631  // interactive group index for HTML
3632  // ---------------
3633  // 2.{
3634  ol.pushGeneratorState();
3636 
3637  {
3638  if (addToIndex)
3639  {
3640  Doxygen::indexList->addContentsItem(TRUE,title,0,"modules",0,TRUE,TRUE);
3642  }
3643  FTVHelp* ftv = new FTVHelp(FALSE);
3644  writeGroupHierarchy(ol,ftv,addToIndex);
3645  QGString outStr;
3646  FTextStream t(&outStr);
3647  ftv->generateTreeViewInline(t);
3649  ol.writeString(outStr);
3650  delete ftv;
3651  if (addToIndex)
3652  {
3654  }
3655  }
3656  ol.popGeneratorState();
3657  // 2.}
3658 
3659  endFile(ol);
3660  ol.popGeneratorState();
3661  // 1.}
3662 }
void endFile(OutputList &ol, bool skipNavIndex, bool skipEndContents, const QCString &navPath)
Definition: index.cpp:263
LayoutNavEntry * find(LayoutNavEntry::Kind k, const char *file=0) const
Definition: layout.cpp:76
virtual QCString trModulesDescription()=0
void startFile(OutputList &ol, const char *name, const char *manName, const char *title, HighlightedItem hli, bool additionalIndices, const char *altSidebarName)
Definition: index.cpp:244
void writeString(const char *text)
Definition: outputlist.h:119
void disableAllBut(OutputGenerator::OutputType o)
Definition: outputlist.cpp:49
const bool FALSE
Definition: qglobal.h:370
static LayoutDocManager & instance()
Definition: layout.cpp:1359
Simplified and optimized version of QTextStream.
Definition: ftextstream.h:11
void generateTreeViewInline(FTextStream &t)
Definition: ftvhelp.cpp:716
bool parseText(const QCString &textStr)
Definition: outputlist.cpp:175
Base class for the layout of a navigation item at the top of the HTML pages.
Definition: layout.h:118
void popGeneratorState()
Definition: outputlist.cpp:121
void decContentsDepth()
Definition: index.h:135
bool visible()
Definition: layout.h:153
void pushGeneratorState()
Definition: outputlist.cpp:111
QCString intro() const
Definition: layout.h:151
void disable(OutputGenerator::OutputType o)
Definition: outputlist.cpp:79
int documentedGroups
Definition: index.cpp:59
void enable()
Definition: index.h:123
void addContentsItem(bool isDir, const char *name, const char *ref, const char *file, const char *anchor, bool separateIndex=FALSE, bool addToNavIndex=FALSE, Definition *def=0)
Definition: index.h:137
static void writeGroupHierarchy(OutputList &ol, FTVHelp *ftv, bool addToIndex)
Definition: index.cpp:3539
LayoutNavEntry * rootNavEntry() const
Definition: layout.cpp:1370
void startTitle(OutputList &ol, const char *fileName, Definition *def)
Definition: index.cpp:228
void startTextBlock(bool dense=FALSE)
Definition: outputlist.h:404
virtual QCString trModules()=0
QCString title() const
Definition: layout.h:150
Translator * theTranslator
Definition: language.cpp:157
void endTextBlock(bool paraBreak=FALSE)
Definition: outputlist.h:406
void endTitle(OutputList &ol, const char *fileName, const char *name)
Definition: index.cpp:237
void disable()
Definition: index.h:121
void incContentsDepth()
Definition: index.h:133
const bool TRUE
Definition: qglobal.h:371
static IndexList * indexList
Definition: doxygen.h:149
void startContents()
Definition: outputlist.h:364
static void writeGroupTreeNode ( OutputList ol,
GroupDef gd,
int  level,
FTVHelp ftv,
bool  addToIndex 
)
static

write groups as hierarchical trees

gd->visited &&

Definition at line 3292 of file index.cpp.

3293 {
3294  //bool fortranOpt = Config_getBool("OPTIMIZE_FOR_FORTRAN");
3295  //bool vhdlOpt = Config_getBool("OPTIMIZE_OUTPUT_VHDL");
3296  if (level>20)
3297  {
3298  warn(gd->getDefFileName(),gd->getDefLine(),
3299  "maximum nesting level exceeded for group %s: check for possible recursive group relation!\n",gd->name().data()
3300  );
3301  return;
3302  }
3303 
3304  /* Some groups should appear twice under different parent-groups.
3305  * That is why we should not check if it was visited
3306  */
3307  if (/*!gd->visited &&*/ (!gd->isASubGroup() || level>0) &&
3308  gd->isVisible() &&
3309  (!gd->isReference() || Config_getBool("EXTERNAL_GROUPS")) // hide external groups by default
3310  )
3311  {
3312  //printf("gd->name()=%s #members=%d\n",gd->name().data(),gd->countMembers());
3313  // write group info
3314  bool hasSubGroups = gd->getSubGroups()->count()>0;
3315  bool hasSubPages = gd->getPages()->count()>0;
3316  int numSubItems = 0;
3317  if (1 /*Config_getBool("TOC_EXPAND")*/)
3318  {
3320  MemberList *ml;
3321  for (mli.toFirst();(ml=mli.current());++mli)
3322  {
3323  if (ml->listType()&MemberListType_documentationLists)
3324  {
3325  numSubItems += ml->count();
3326  }
3327  }
3328  numSubItems += gd->getNamespaces()->count();
3329  numSubItems += gd->getClasses()->count();
3330  numSubItems += gd->getFiles()->count();
3331  numSubItems += gd->getDirs()->count();
3332  numSubItems += gd->getPages()->count();
3333  }
3334 
3335  bool isDir = hasSubGroups || hasSubPages || numSubItems>0;
3336  //printf("gd=`%s': pageDict=%d\n",gd->name().data(),gd->pageDict->count());
3337  if (addToIndex)
3338  {
3341  }
3342  if (ftv)
3343  {
3344  ftv->addContentsItem(hasSubGroups,gd->groupTitle(),
3345  gd->getReference(),gd->getOutputFileBase(),0,
3346  FALSE,FALSE,gd);
3347  ftv->incContentsDepth();
3348  }
3349 
3350  //ol.writeListItem();
3351  //ol.startTextLink(gd->getOutputFileBase(),0);
3352  //parseText(ol,gd->groupTitle());
3353  //ol.endTextLink();
3354 
3355  ol.startIndexListItem();
3357  ol.parseText(gd->groupTitle());
3359  if (gd->isReference())
3360  {
3361  ol.startTypewriter();
3362  ol.docify(" [external]");
3363  ol.endTypewriter();
3364  }
3365 
3367  LayoutDocEntry *lde;
3368  for (eli.toFirst();(lde=eli.current());++eli)
3369  {
3370  if (lde->kind()==LayoutDocEntry::MemberDef && addToIndex)
3371  {
3373  MemberList *ml = gd->getMemberList(lmd->type);
3374  if (ml)
3375  {
3376  MemberListIterator mi(*ml);
3377  MemberDef *md;
3378  for (mi.toFirst();(md=mi.current());++mi)
3379  {
3380  MemberList *enumList = md->enumFieldList();
3381  bool isDir = enumList!=0 && md->isEnumerate();
3382  if (md->isVisible() && md->name().find('@')==-1)
3383  {
3385  md->name(),md->getReference(),
3386  md->getOutputFileBase(),md->anchor(),FALSE,addToIndex);
3387  }
3388  if (isDir)
3389  {
3391  MemberListIterator emli(*enumList);
3392  MemberDef *emd;
3393  for (emli.toFirst();(emd=emli.current());++emli)
3394  {
3395  if (emd->isVisible())
3396  {
3398  emd->name(),emd->getReference(),emd->getOutputFileBase(),
3399  emd->anchor(),FALSE,addToIndex);
3400  }
3401  }
3403  }
3404  }
3405  }
3406  }
3407  else if (lde->kind()==LayoutDocEntry::GroupClasses && addToIndex)
3408  {
3409  ClassSDict::Iterator it(*gd->getClasses());
3410  ClassDef *cd;
3411  for (;(cd=it.current());++it)
3412  {
3413  //bool nestedClassInSameGroup =
3414  // cd->getOuterScope() && cd->getOuterScope()->definitionType()==Definition::TypeClass &&
3415  // cd->getOuterScope()->partOfGroups()!=0 && cd->getOuterScope()->partOfGroups()->contains(gd);
3416  //printf("===== GroupClasses: %s visible=%d nestedClassInSameGroup=%d\n",cd->name().data(),cd->isVisible(),nestedClassInSameGroup);
3417  if (cd->isVisible() /*&& !nestedClassInSameGroup*/)
3418  {
3419  //if (cd->isEmbeddedInOuterScope())
3420  //{
3421  //printf("add class & members %d\n",addToIndex);
3422  addMembersToIndex(cd,LayoutDocManager::Class,cd->displayName(FALSE),cd->anchor(),addToIndex,TRUE);
3423  //}
3424  //else // only index the class, not its members
3425  //{
3426  // printf("%s: add class only\n",cd->name().data());
3427  // Doxygen::indexList->addContentsItem(FALSE,
3428  // cd->displayName(TRUE),cd->getReference(),
3429  // cd->getOutputFileBase(),cd->anchor(),addToIndex,TRUE);
3430  //}
3431  }
3432  }
3433  }
3434  else if (lde->kind()==LayoutDocEntry::GroupNamespaces && addToIndex)
3435  {
3437  NamespaceDef *nd;
3438  for (;(nd=it.current());++it)
3439  {
3440  if (nd->isVisible())
3441  {
3443  nd->localName(),nd->getReference(),
3444  nd->getOutputFileBase(),0,FALSE,FALSE);
3445  }
3446  }
3447  }
3448  else if (lde->kind()==LayoutDocEntry::GroupFiles && addToIndex)
3449  {
3450  QListIterator<FileDef> it(*gd->getFiles());
3451  FileDef *fd;
3452  for (;(fd=it.current());++it)
3453  {
3454  if (fd->isVisible())
3455  {
3457  fd->displayName(),fd->getReference(),
3458  fd->getOutputFileBase(),0,FALSE,FALSE);
3459  }
3460  }
3461  }
3462  else if (lde->kind()==LayoutDocEntry::GroupDirs && addToIndex)
3463  {
3464  QListIterator<DirDef> it(*gd->getDirs());
3465  DirDef *dd;
3466  for (;(dd=it.current());++it)
3467  {
3468  if (dd->isVisible())
3469  {
3471  dd->shortName(),dd->getReference(),
3472  dd->getOutputFileBase(),0,FALSE,FALSE);
3473  }
3474  }
3475  }
3476  else if (lde->kind()==LayoutDocEntry::GroupPageDocs && addToIndex)
3477  {
3479  PageDef *pd;
3480  for (;(pd=it.current());++it)
3481  {
3482  SectionInfo *si=0;
3483  if (!pd->name().isEmpty()) si=Doxygen::sectionDict->find(pd->name());
3484  bool hasSubPages = pd->hasSubPages();
3485  bool hasSections = pd->hasSections();
3487  hasSubPages || hasSections,
3488  convertToHtml(pd->title(),TRUE),
3489  gd->getReference(),
3490  gd->getOutputFileBase(),
3491  si ? si->label.data() : 0,
3492  hasSubPages || hasSections,
3493  TRUE); // addToNavIndex
3494  if (hasSections || hasSubPages)
3495  {
3497  }
3498  if (hasSections)
3499  {
3500  pd->addSectionsToIndex();
3501  }
3502  writePages(pd,0);
3503  if (hasSections || hasSubPages)
3504  {
3506  }
3507  }
3508  }
3509  else if (lde->kind()==LayoutDocEntry::GroupNestedGroups)
3510  {
3511  if (gd->getSubGroups()->count()>0)
3512  {
3513  startIndexHierarchy(ol,level+1);
3515  GroupDef *subgd = 0;
3516  for (gli.toFirst();(subgd=gli.current());++gli)
3517  {
3518  writeGroupTreeNode(ol,subgd,level+1,ftv,addToIndex);
3519  }
3520  endIndexHierarchy(ol,level+1);
3521  }
3522  }
3523  }
3524 
3525  ol.endIndexListItem();
3526 
3527  if (addToIndex)
3528  {
3530  }
3531  if (ftv)
3532  {
3533  ftv->decContentsDepth();
3534  }
3535  //gd->visited=TRUE;
3536  }
3537 }
void endIndexItem(const char *ref, const char *file)
Definition: outputlist.h:143
virtual QCString getReference() const
QCString getReference() const
Definition: memberdef.cpp:1001
const bool FALSE
Definition: qglobal.h:370
static LayoutDocManager & instance()
Definition: layout.cpp:1359
QCString label
Definition: section.h:56
MemberList * enumFieldList() const
Definition: memberdef.cpp:4497
bool isASubGroup() const
Definition: groupdef.cpp:541
virtual bool isReference() const
int find(char c, int index=0, bool cs=TRUE) const
Definition: qcstring.cpp:41
int count() const
Definition: sortdict.h:284
const char * groupTitle() const
Definition: groupdef.h:54
ClassSDict * getClasses() const
Definition: groupdef.h:101
Represents of a member definition list with configurable title.
Definition: layout.h:105
bool parseText(const QCString &textStr)
Definition: outputlist.cpp:175
GroupList * getSubGroups() const
Definition: groupdef.h:103
QCString getDefFileName() const
Definition: sortdict.h:73
uint count() const
Definition: qlist.h:66
void decContentsDepth()
Definition: index.h:135
const QCString & name() const
Definition: definition.h:114
int getDefLine() const
Definition: definition.h:188
PageSDict * getPages() const
Definition: groupdef.h:104
uint count() const
Definition: qlist.h:131
QCString convertToHtml(const char *s, bool keepEntities)
Definition: util.cpp:5746
static void writeGroupTreeNode(OutputList &ol, GroupDef *gd, int level, FTVHelp *ftv, bool addToIndex)
Definition: index.cpp:3292
NamespaceSDict * getNamespaces() const
Definition: groupdef.h:102
static SectionDict * sectionDict
Definition: doxygen.h:117
void endIndexListItem()
Definition: outputlist.h:123
const char * data() const
Definition: qcstring.h:207
Definition: dirdef.h:44
QCString anchor() const
Definition: memberdef.cpp:1031
type * current() const
Definition: qlist.h:146
#define Config_getBool(val)
Definition: config.cpp:664
void addContentsItem(bool isDir, const char *name, const char *ref, const char *file, const char *anchor, bool separateIndex, bool addToNavIndex, Definition *def)
Definition: ftvhelp.cpp:183
virtual bool isVisible() const
void warn(const char *file, int line, const char *fmt,...)
Definition: message.cpp:183
void addMembersToIndex(T *def, LayoutDocManager::LayoutPart part, const QCString &name, const QCString &anchor, bool addToIndex=TRUE, bool preventSeparateIndex=FALSE)
Definition: index.cpp:299
void addContentsItem(bool isDir, const char *name, const char *ref, const char *file, const char *anchor, bool separateIndex=FALSE, bool addToNavIndex=FALSE, Definition *def=0)
Definition: index.h:137
static void endIndexHierarchy(OutputList &ol, int level)
Definition: index.cpp:104
void startIndexListItem()
Definition: outputlist.h:121
MemberListType type
Definition: layout.h:111
MemberList * getMemberList(MemberListType lt) const
Definition: groupdef.cpp:1593
void startTypewriter()
Definition: outputlist.h:172
static void writePages(PageDef *pd, FTVHelp *ftv)
Definition: index.cpp:3096
A model of a page symbol.
Definition: pagedef.h:29
virtual Kind kind() const =0
Base class representing a piece of a documentation page.
Definition: layout.h:30
QCString getOutputFileBase() const
Definition: memberdef.cpp:941
FileList * getFiles() const
Definition: groupdef.h:100
void decContentsDepth()
Definition: ftvhelp.cpp:152
friend class Iterator
Definition: sortdict.h:289
void incContentsDepth()
Definition: ftvhelp.cpp:141
static void startIndexHierarchy(OutputList &ol, int level)
Definition: index.cpp:91
QCString getOutputFileBase() const
Definition: groupdef.cpp:1512
void docify(const char *s)
Definition: outputlist.h:145
DirList * getDirs() const
Definition: groupdef.h:105
void incContentsDepth()
Definition: index.h:133
const bool TRUE
Definition: qglobal.h:371
static IndexList * indexList
Definition: doxygen.h:149
const QList< MemberList > & getMemberLists() const
Definition: groupdef.h:95
bool isEnumerate() const
Definition: memberdef.cpp:4145
void startIndexItem(const char *ref, const char *file)
Definition: outputlist.h:141
void endTypewriter()
Definition: outputlist.h:174
static void writeHierarchicalIndex ( OutputList ol)
static

Definition at line 955 of file index.cpp.

956 {
957  if (hierarchyClasses==0) return;
958  ol.pushGeneratorState();
959  //1.{
961 
963  QCString title = lne ? lne->title() : theTranslator->trClassHierarchy();
964  bool addToIndex = lne==0 || lne->visible();
965 
966  startFile(ol,"hierarchy",0, title, HLI_Hierarchy);
967  startTitle(ol,0);
968  ol.parseText(title);
969  endTitle(ol,0,0);
970  ol.startContents();
971  ol.startTextBlock();
972 
973  if (Config_getBool("HAVE_DOT") && Config_getBool("GRAPHICAL_HIERARCHY"))
974  {
977  ol.startParagraph();
978  ol.startTextLink("inherits",0);
980  ol.endTextLink();
981  ol.endParagraph();
984  }
986  ol.endTextBlock();
987 
988  // ---------------
989  // Static class hierarchy for Latex/RTF
990  // ---------------
991  ol.pushGeneratorState();
992  //2.{
995 
996  writeClassHierarchy(ol,0,addToIndex);
997 
999  ol.popGeneratorState();
1000  //2.}
1001 
1002  // ---------------
1003  // Dynamic class hierarchical index for HTML
1004  // ---------------
1005  ol.pushGeneratorState();
1006  //2.{
1008 
1009  {
1010  if (addToIndex)
1011  {
1012  Doxygen::indexList->addContentsItem(TRUE,title,0,"hierarchy",0,TRUE,TRUE);
1013  }
1014  FTVHelp* ftv = new FTVHelp(FALSE);
1015  writeClassHierarchy(ol,ftv,addToIndex);
1016  QGString outStr;
1017  FTextStream t(&outStr);
1018  ftv->generateTreeViewInline(t);
1019  ol.pushGeneratorState();
1021  ol.writeString(outStr);
1022  ol.popGeneratorState();
1023  delete ftv;
1024  }
1025  ol.popGeneratorState();
1026  //2.}
1027  // ------
1028 
1029  endFile(ol);
1030  ol.popGeneratorState();
1031  //1.}
1032 }
virtual QCString trClassHierarchy()=0
void endFile(OutputList &ol, bool skipNavIndex, bool skipEndContents, const QCString &navPath)
Definition: index.cpp:263
LayoutNavEntry * find(LayoutNavEntry::Kind k, const char *file=0) const
Definition: layout.cpp:76
void startFile(OutputList &ol, const char *name, const char *manName, const char *title, HighlightedItem hli, bool additionalIndices, const char *altSidebarName)
Definition: index.cpp:244
virtual QCString trGotoGraphicalHierarchy()=0
void writeString(const char *text)
Definition: outputlist.h:119
void disableAllBut(OutputGenerator::OutputType o)
Definition: outputlist.cpp:49
void startParagraph()
Definition: outputlist.h:115
const bool FALSE
Definition: qglobal.h:370
static LayoutDocManager & instance()
Definition: layout.cpp:1359
Simplified and optimized version of QTextStream.
Definition: ftextstream.h:11
void generateTreeViewInline(FTextStream &t)
Definition: ftvhelp.cpp:716
void startTextLink(const char *file, const char *anchor)
Definition: outputlist.h:159
bool parseText(const QCString &textStr)
Definition: outputlist.cpp:175
Base class for the layout of a navigation item at the top of the HTML pages.
Definition: layout.h:118
void popGeneratorState()
Definition: outputlist.cpp:121
void endParagraph()
Definition: outputlist.h:117
bool visible()
Definition: layout.h:153
int hierarchyClasses
Definition: index.cpp:57
void pushGeneratorState()
Definition: outputlist.cpp:111
QCString intro() const
Definition: layout.h:151
void disable(OutputGenerator::OutputType o)
Definition: outputlist.cpp:79
static void writeClassHierarchy(OutputList &ol, FTVHelp *ftv, bool addToIndex)
Definition: index.cpp:894
void enable(OutputGenerator::OutputType o)
Definition: outputlist.cpp:89
#define Config_getBool(val)
Definition: config.cpp:664
void enable()
Definition: index.h:123
void addContentsItem(bool isDir, const char *name, const char *ref, const char *file, const char *anchor, bool separateIndex=FALSE, bool addToNavIndex=FALSE, Definition *def=0)
Definition: index.h:137
LayoutNavEntry * rootNavEntry() const
Definition: layout.cpp:1370
void startTitle(OutputList &ol, const char *fileName, Definition *def)
Definition: index.cpp:228
void startTextBlock(bool dense=FALSE)
Definition: outputlist.h:404
virtual QCString trClassHierarchyDescription()=0
QCString title() const
Definition: layout.h:150
Translator * theTranslator
Definition: language.cpp:157
void endTextBlock(bool paraBreak=FALSE)
Definition: outputlist.h:406
void endTitle(OutputList &ol, const char *fileName, const char *name)
Definition: index.cpp:237
void disable()
Definition: index.h:121
void endTextLink()
Definition: outputlist.h:161
const bool TRUE
Definition: qglobal.h:371
static IndexList * indexList
Definition: doxygen.h:149
void startContents()
Definition: outputlist.h:364
static void writeIndex ( OutputList ol)
static

Definition at line 3761 of file index.cpp.

3762 {
3763  static bool fortranOpt = Config_getBool("OPTIMIZE_FOR_FORTRAN");
3764  static bool vhdlOpt = Config_getBool("OPTIMIZE_OUTPUT_VHDL");
3765  static QCString projectName = Config_getString("PROJECT_NAME");
3766  // save old generator state
3767  ol.pushGeneratorState();
3768 
3769  QCString projPrefix;
3770  if (!projectName.isEmpty())
3771  {
3772  projPrefix=projectName+" ";
3773  }
3774 
3775  //--------------------------------------------------------------------
3776  // write HTML index
3777  //--------------------------------------------------------------------
3779 
3780  QCString defFileName =
3781  Doxygen::mainPage ? Doxygen::mainPage->docFile().data() : "[generated]";
3782  int defLine =
3784 
3785  QCString title;
3786  if (!mainPageHasTitle())
3787  {
3788  title = theTranslator->trMainPage();
3789  }
3790  else if (Doxygen::mainPage)
3791  {
3792  title = filterTitle(Doxygen::mainPage->title());
3793  }
3794 
3795  QCString indexName="index";
3796  ol.startFile(indexName,0,title);
3797 
3798  if (Doxygen::mainPage)
3799  {
3800  if (
3801  (!projectName.isEmpty() && mainPageHasTitle() && qstricmp(title,projectName)!=0)
3802  ) // to avoid duplicate entries in the treeview
3803  {
3804  Doxygen::indexList->addContentsItem(Doxygen::mainPage->hasSubPages(),title,0,indexName,0,Doxygen::mainPage->hasSubPages(),TRUE);
3805  }
3806  if (Doxygen::mainPage->hasSubPages() || Doxygen::mainPage->hasSections())
3807  {
3809  }
3810  }
3811 
3812  ol.startQuickIndices();
3813  if (!Config_getBool("DISABLE_INDEX"))
3814  {
3816  }
3817  ol.endQuickIndices();
3818  ol.writeSplitBar(indexName);
3819  ol.writeSearchInfo();
3820  bool headerWritten=FALSE;
3821  if (Doxygen::mainPage && !Doxygen::mainPage->title().isEmpty())
3822  {
3823  if (Doxygen::mainPage->title().lower()!="notitle")
3824  {
3825  ol.startHeaderSection();
3826  ol.startTitleHead(0);
3827  ol.generateDoc(Doxygen::mainPage->docFile(),Doxygen::mainPage->docLine(),
3829  TRUE,FALSE,0,TRUE,FALSE);
3830  headerWritten = TRUE;
3831  }
3832  }
3833  else
3834  {
3835  if (!projectName.isEmpty())
3836  {
3837  ol.startHeaderSection();
3838  ol.startTitleHead(0);
3839  ol.parseText(projPrefix+theTranslator->trDocumentation());
3840  headerWritten = TRUE;
3841  }
3842  }
3843  if (headerWritten)
3844  {
3845  ol.endTitleHead(0,0);
3846  ol.endHeaderSection();
3847  }
3848 
3849  ol.startContents();
3850  if (Config_getBool("DISABLE_INDEX") && Doxygen::mainPage==0)
3851  {
3853  }
3854 
3855  if (Doxygen::mainPage)
3856  {
3858  if (Doxygen::mainPage->showToc() && Doxygen::mainPage->hasSections())
3859  {
3861  }
3862 
3863  ol.startTextBlock();
3864  ol.generateDoc(defFileName,defLine,Doxygen::mainPage,0,
3865  Doxygen::mainPage->documentation(),TRUE,FALSE
3866  /*,Doxygen::mainPage->sectionDict*/);
3867  ol.endTextBlock();
3868 
3870  }
3871 
3872  endFile(ol);
3874 
3875  //--------------------------------------------------------------------
3876  // write LaTeX/RTF index
3877  //--------------------------------------------------------------------
3880 
3881  ol.startFile("refman",0,0);
3883  if (!Config_getString("LATEX_HEADER").isEmpty())
3884  {
3886  }
3887 
3888  if (projPrefix.isEmpty())
3889  {
3891  }
3892  else
3893  {
3894  ol.parseText(projPrefix);
3895  }
3896 
3897  if (!Config_getString("PROJECT_NUMBER").isEmpty())
3898  {
3899  ol.startProjectNumber();
3900  ol.generateDoc(defFileName,defLine,Doxygen::mainPage,0,Config_getString("PROJECT_NUMBER"),FALSE,FALSE);
3901  ol.endProjectNumber();
3902  }
3908 
3909  ol.lastIndexPage();
3910  if (Doxygen::mainPage)
3911  {
3913  if (mainPageHasTitle())
3914  {
3916  }
3917  else
3918  {
3919  ol.parseText(/*projPrefix+*/theTranslator->trMainPage());
3920  }
3922  }
3923  if (documentedPages>0)
3924  {
3925  //ol.parseText(projPrefix+theTranslator->trPageDocumentation());
3926  //ol.endIndexSection(isPageDocumentation);
3928  PageDef *pd=pdi.toFirst();
3929  bool first=Doxygen::mainPage==0;
3930  for (pdi.toFirst();(pd=pdi.current());++pdi)
3931  {
3932  if (!pd->getGroupDef() && !pd->isReference() &&
3933  (!pd->hasParentPage() || // not inside other page
3934  (Doxygen::mainPage==pd->getOuterScope())) // or inside main page
3935  )
3936  {
3937  bool isCitationPage = pd->name()=="citelist";
3938  if (isCitationPage)
3939  {
3940  // For LaTeX the bibliograph is already written by \bibliography
3941  ol.pushGeneratorState();
3943  }
3944  QCString title = pd->title();
3945  if (title.isEmpty()) title=pd->name();
3946 
3948  ol.parseText(title);
3950 
3951  ol.pushGeneratorState(); // write TOC title (RTF only)
3954  ol.parseText(title);
3956  ol.popGeneratorState();
3957 
3958  ol.writeAnchor(0,pd->getOutputFileBase());
3959 
3960  ol.writePageLink(pd->getOutputFileBase(),first);
3961  first=FALSE;
3962 
3963  if (isCitationPage)
3964  {
3965  ol.popGeneratorState();
3966  }
3967  }
3968  }
3969  }
3970 
3971  if (!Config_getBool("LATEX_HIDE_INDICES"))
3972  {
3973  //if (indexedPages>0)
3974  //{
3975  // ol.startIndexSection(isPageIndex);
3976  // ol.parseText(/*projPrefix+*/ theTranslator->trPageIndex());
3977  // ol.endIndexSection(isPageIndex);
3978  //}
3979  if (documentedGroups>0)
3980  {
3982  ol.parseText(/*projPrefix+*/ theTranslator->trModuleIndex());
3984  }
3985  if (documentedNamespaces>0)
3986  {
3988  ol.parseText(/*projPrefix+*/(fortranOpt?theTranslator->trModulesIndex():theTranslator->trNamespaceIndex()));
3990  }
3991  if (hierarchyClasses>0)
3992  {
3994  ol.parseText(/*projPrefix+*/
3995  (fortranOpt ? theTranslator->trCompoundIndexFortran() :
3996  vhdlOpt ? VhdlDocGen::trDesignUnitIndex() :
3997  theTranslator->trHierarchicalIndex()
3998  ));
4000  }
4002  {
4004  ol.parseText(/*projPrefix+*/
4005  (fortranOpt ? theTranslator->trCompoundIndexFortran() :
4006  vhdlOpt ? VhdlDocGen::trDesignUnitIndex() :
4007  theTranslator->trCompoundIndex()
4008  ));
4010  }
4011  if (documentedFiles>0)
4012  {
4014  ol.parseText(/*projPrefix+*/theTranslator->trFileIndex());
4016  }
4017  }
4018  if (documentedGroups>0)
4019  {
4021  ol.parseText(/*projPrefix+*/theTranslator->trModuleDocumentation());
4023  }
4024  if (documentedNamespaces>0)
4025  {
4029  }
4031  {
4033  ol.parseText(/*projPrefix+*/(fortranOpt?theTranslator->trTypeDocumentation():theTranslator->trClassDocumentation()));
4035  }
4036  if (documentedFiles>0)
4037  {
4039  ol.parseText(/*projPrefix+*/theTranslator->trFileDocumentation());
4041  }
4042  if (Doxygen::exampleSDict->count()>0)
4043  {
4045  ol.parseText(/*projPrefix+*/theTranslator->trExampleDocumentation());
4047  }
4049  endFile(ol);
4050 
4051  if (Doxygen::mainPage)
4052  {
4056  ol.startContents();
4057  ol.startTextBlock();
4058  ol.generateDoc(defFileName,defLine,Doxygen::mainPage,0,
4059  Doxygen::mainPage->documentation(),FALSE,FALSE
4060  );
4061  ol.endTextBlock();
4062  endFile(ol);
4065  }
4066 
4067  ol.popGeneratorState();
4068 }
static QCString name
Definition: declinfo.cpp:673
QCString docFile() const
virtual QCString trNamespaceDocumentation()=0
int annotatedClassesPrinted
Definition: index.cpp:56
void endFile(OutputList &ol, bool skipNavIndex, bool skipEndContents, const QCString &navPath)
Definition: index.cpp:263
static PageSDict * exampleSDict
Definition: doxygen.h:101
bool isEmpty() const
Definition: qcstring.h:189
void endIndexSection(IndexSections is)
Definition: outputlist.h:87
void writeToc(OutputList &ol)
void startFile(OutputList &ol, const char *name, const char *manName, const char *title, HighlightedItem hli, bool additionalIndices, const char *altSidebarName)
Definition: index.cpp:244
QCString title() const
Definition: pagedef.h:54
void endHeaderSection()
Definition: outputlist.h:192
virtual QCString trModuleIndex()=0
bool generateDoc(const char *fileName, int startLine, Definition *ctx, MemberDef *md, const QCString &docStr, bool indexWords, bool isExample, const char *exampleName=0, bool singleLine=FALSE, bool linkFromIndex=FALSE)
Definition: outputlist.cpp:131
void disableAllBut(OutputGenerator::OutputType o)
Definition: outputlist.cpp:49
bool mainPageHasTitle()
Definition: util.cpp:8554
void endTitleHead(const char *fileName, const char *name)
Definition: outputlist.h:107
virtual QCString trCompoundIndexFortran()=0
void writeSearchInfo()
Definition: outputlist.h:99
const bool FALSE
Definition: qglobal.h:370
void startHeaderSection()
Definition: outputlist.h:190
virtual QCString trDocumentation()=0
void startQuickIndices()
Definition: outputlist.h:350
virtual bool isReference() const
static QCString trDesignUnitIndex()
virtual QCString trModuleDocumentation()=0
bool parseText(const QCString &textStr)
Definition: outputlist.cpp:175
void endProjectNumber()
Definition: outputlist.h:93
static bool insideMainPage
Definition: doxygen.h:104
void popGeneratorState()
Definition: outputlist.cpp:121
bool hasParentPage() const
Definition: pagedef.cpp:89
virtual QCString trMainPage()=0
const QCString & name() const
Definition: definition.h:114
int qstricmp(const char *str1, const char *str2)
Definition: qcstring.cpp:567
virtual QCString trGeneratedBy()=0
void writeSplitBar(const char *name)
Definition: outputlist.h:354
virtual QCString trFileDocumentation()=0
int hierarchyClasses
Definition: index.cpp:57
void pushGeneratorState()
Definition: outputlist.cpp:111
virtual QCString trClassDocumentation()=0
int documentedPages
Definition: index.cpp:66
virtual QCString trFileIndex()=0
void disable(OutputGenerator::OutputType o)
Definition: outputlist.cpp:79
static PageSDict * pageSDict
Definition: doxygen.h:102
const char * data() const
Definition: qcstring.h:207
#define Config_getString(val)
Definition: config.cpp:660
void enable(OutputGenerator::OutputType o)
Definition: outputlist.cpp:89
#define Config_getBool(val)
Definition: config.cpp:664
int documentedGroups
Definition: index.cpp:59
void addContentsItem(bool isDir, const char *name, const char *ref, const char *file, const char *anchor, bool separateIndex=FALSE, bool addToNavIndex=FALSE, Definition *def=0)
Definition: index.h:137
void endQuickIndices()
Definition: outputlist.h:352
virtual QCString trExampleDocumentation()=0
int documentedFiles
Definition: index.cpp:58
virtual Definition * getOuterScope() const
int documentedNamespaces
Definition: index.cpp:60
virtual QCString trNamespaceIndex()=0
void writeQuickLinks(bool compact, HighlightedItem hli, const char *file)
Definition: outputlist.h:360
void startIndexSection(IndexSections is)
Definition: outputlist.h:85
static void writePages(PageDef *pd, FTVHelp *ftv)
Definition: index.cpp:3096
void lastIndexPage()
Definition: outputlist.h:408
void startTextBlock(bool dense=FALSE)
Definition: outputlist.h:404
A model of a page symbol.
Definition: pagedef.h:29
void writeAnchor(const char *fileName, const char *name)
Definition: outputlist.h:242
Translator * theTranslator
Definition: language.cpp:157
void endTextBlock(bool paraBreak=FALSE)
Definition: outputlist.h:406
void startTitleHead(const char *fileName)
Definition: outputlist.h:105
friend class Iterator
Definition: sortdict.h:289
int docLine() const
void writePageLink(const char *name, bool first)
Definition: outputlist.h:89
void startProjectNumber()
Definition: outputlist.h:91
QCString getOutputFileBase() const
Definition: pagedef.cpp:58
static PageDef * mainPage
Definition: doxygen.h:103
const bool TRUE
Definition: qglobal.h:371
virtual QCString trTypeDocumentation()=0
static IndexList * indexList
Definition: doxygen.h:149
virtual QCString trReferenceManual()=0
virtual QCString trModulesIndex()=0
GroupDef * getGroupDef() const
Definition: pagedef.cpp:52
void startContents()
Definition: outputlist.h:364
void startFile(const char *name, const char *manName, const char *title)
Definition: outputlist.h:97
QCString filterTitle(const QCString &title)
Definition: util.cpp:7765
void writeIndexHierarchy ( OutputList ol)

Definition at line 4279 of file index.cpp.

4280 {
4282  if (lne)
4283  {
4285  }
4286 }
static LayoutDocManager & instance()
Definition: layout.cpp:1359
const QList< LayoutNavEntry > & children() const
Definition: layout.h:157
Base class for the layout of a navigation item at the top of the HTML pages.
Definition: layout.h:118
LayoutNavEntry * rootNavEntry() const
Definition: layout.cpp:1370
static void writeIndexHierarchyEntries(OutputList &ol, const QList< LayoutNavEntry > &entries)
Definition: index.cpp:4072
static void writeIndexHierarchyEntries ( OutputList ol,
const QList< LayoutNavEntry > &  entries 
)
static

Definition at line 4072 of file index.cpp.

4073 {
4074  QListIterator<LayoutNavEntry> li(entries);
4075  LayoutNavEntry *lne;
4076  for (li.toFirst();(lne=li.current());++li)
4077  {
4078  LayoutNavEntry::Kind kind = lne->kind();
4079  uint index = (uint)kind;
4080  if (index>=indexWritten.size())
4081  {
4082  uint i;
4083  uint oldSize = indexWritten.size();
4084  uint newSize = index+1;
4085  indexWritten.resize(newSize);
4086  for (i=oldSize;i<newSize;i++) indexWritten.at(i)=FALSE;
4087  }
4088  //printf("starting %s kind=%d\n",lne->title().data(),lne->kind());
4089  bool addToIndex=lne->visible();
4090  bool needsClosing=FALSE;
4091  if (!indexWritten.at(index))
4092  {
4093  switch(kind)
4094  {
4096  msg("Generating index page...\n");
4097  writeIndex(ol);
4098  break;
4099  case LayoutNavEntry::Pages:
4100  msg("Generating page index...\n");
4101  writePageIndex(ol);
4102  break;
4104  msg("Generating module index...\n");
4105  writeGroupIndex(ol);
4106  break;
4108  {
4109  static bool showNamespaces = Config_getBool("SHOW_NAMESPACES");
4110  if (showNamespaces)
4111  {
4112  if (documentedNamespaces>0 && addToIndex)
4113  {
4114  Doxygen::indexList->addContentsItem(TRUE,lne->title(),0,0,0);
4116  needsClosing=TRUE;
4117  }
4118  if (LayoutDocManager::instance().rootNavEntry()->find(LayoutNavEntry::Namespaces)!=lne) // for backward compatibility with old layout file
4119  {
4120  msg("Generating namespace index...\n");
4121  writeNamespaceIndex(ol);
4122  }
4123  }
4124  }
4125  break;
4127  {
4128  static bool showNamespaces = Config_getBool("SHOW_NAMESPACES");
4129  if (showNamespaces)
4130  {
4131  msg("Generating namespace index...\n");
4132  writeNamespaceIndex(ol);
4133  }
4134  }
4135  break;
4137  msg("Generating namespace member index...\n");
4139  break;
4141  if (annotatedClasses>0 && addToIndex)
4142  {
4143  Doxygen::indexList->addContentsItem(TRUE,lne->title(),0,"annotated",0);
4145  needsClosing=TRUE;
4146  }
4147  if (LayoutDocManager::instance().rootNavEntry()->find(LayoutNavEntry::Classes)!=lne) // for backward compatibility with old layout file
4148  {
4149  msg("Generating annotated compound index...\n");
4150  writeAnnotatedIndex(ol);
4151  }
4152  break;
4154  msg("Generating annotated compound index...\n");
4155  writeAnnotatedIndex(ol);
4156  break;
4158  msg("Generating alphabetical compound index...\n");
4160  break;
4162  msg("Generating hierarchical class index...\n");
4164  if (Config_getBool("HAVE_DOT") && Config_getBool("GRAPHICAL_HIERARCHY"))
4165  {
4166  msg("Generating graphical class hierarchy...\n");
4168  }
4169  break;
4171  msg("Generating member index...\n");
4173  break;
4174  case LayoutNavEntry::Files:
4175  {
4176  static bool showFiles = Config_getBool("SHOW_FILES");
4177  if (showFiles)
4178  {
4179  if (documentedHtmlFiles>0 && addToIndex)
4180  {
4181  Doxygen::indexList->addContentsItem(TRUE,lne->title(),0,0,0);
4183  needsClosing=TRUE;
4184  }
4185  if (LayoutDocManager::instance().rootNavEntry()->find(LayoutNavEntry::Files)!=lne) // for backward compatibility with old layout file
4186  {
4187  msg("Generating file index...\n");
4188  writeFileIndex(ol);
4189  }
4190  }
4191  }
4192  break;
4194  {
4195  static bool showFiles = Config_getBool("SHOW_FILES");
4196  if (showFiles)
4197  {
4198  msg("Generating file index...\n");
4199  writeFileIndex(ol);
4200  }
4201  }
4202  break;
4204  msg("Generating file member index...\n");
4206  break;
4208  msg("Generating example index...\n");
4209  writeExampleIndex(ol);
4210  break;
4211  case LayoutNavEntry::User:
4212  {
4213  // prepend a ! or ^ marker to the URL to avoid tampering with it
4214  QCString url = correctURL(lne->url(),"!"); // add ! to relative URL
4215  bool isRelative=url.at(0)=='!';
4216  if (!url.isEmpty() && !isRelative) // absolute URL
4217  {
4218  url.prepend("^"); // prepend ^ to absolute URL
4219  }
4220  bool isRef = lne->baseFile().left(4)=="@ref" || lne->baseFile().left(4)=="\\ref";
4221  Doxygen::indexList->addContentsItem(TRUE,lne->title(),0,url,0,FALSE,isRef || isRelative);
4222  }
4223  break;
4225  if (addToIndex)
4226  {
4227  QCString url = correctURL(lne->url(),"!"); // add ! to relative URL
4228  if (!url.isEmpty())
4229  {
4230  if (url=="![none]")
4231  {
4233  }
4234  else
4235  {
4236  bool isRelative=url.at(0)=='!';
4237  if (!isRelative) // absolute URL
4238  {
4239  url.prepend("^"); // prepend ^ to absolute URL
4240  }
4241  bool isRef = lne->baseFile().left(4)=="@ref" || lne->baseFile().left(4)=="\\ref";
4242  Doxygen::indexList->addContentsItem(TRUE,lne->title(),0,url,0,FALSE,isRef || isRelative);
4243  }
4244  }
4245  else
4246  {
4248  }
4250  needsClosing=TRUE;
4251  }
4252  writeUserGroupStubPage(ol,lne);
4253  break;
4254  }
4255  if (kind!=LayoutNavEntry::User && kind!=LayoutNavEntry::UserGroup) // User entry may appear multiple times
4256  {
4257  indexWritten.at(index)=TRUE;
4258  }
4259  }
4261  if (needsClosing)
4262  {
4263  switch(kind)
4264  {
4267  case LayoutNavEntry::Files:
4270  break;
4271  default:
4272  break;
4273  }
4274  }
4275  //printf("ending %s kind=%d\n",lne->title().data(),lne->kind());
4276  }
4277 }
static void writeIndex(OutputList &ol)
Definition: index.cpp:3761
bool isEmpty() const
Definition: qcstring.h:189
int documentedHtmlFiles
Definition: index.cpp:65
static void writeFileIndex(OutputList &ol)
Definition: index.cpp:1166
void msg(const char *fmt,...)
Definition: message.cpp:107
QCString url() const
Definition: layout.cpp:96
static void writeExampleIndex(OutputList &ol)
Definition: index.cpp:2999
bool resize(uint size)
Definition: qarray.h:69
static void writeUserGroupStubPage(OutputList &ol, LayoutNavEntry *lne)
Definition: index.cpp:3722
static QArray< bool > indexWritten
Definition: index.cpp:4070
char & at(uint i) const
Definition: qcstring.h:326
const bool FALSE
Definition: qglobal.h:370
static LayoutDocManager & instance()
Definition: layout.cpp:1359
QCString left(uint len) const
Definition: qcstring.cpp:213
static void writeGraphicalClassHierarchy(OutputList &ol)
Definition: index.cpp:1036
const QList< LayoutNavEntry > & children() const
Definition: layout.h:157
QCString correctURL(const QCString &url, const QCString &relPath)
Definition: util.cpp:8084
Base class for the layout of a navigation item at the top of the HTML pages.
Definition: layout.h:118
void decContentsDepth()
Definition: index.h:135
static void writeFileMemberIndex(OutputList &ol)
Definition: index.cpp:2804
bool visible()
Definition: layout.h:153
static void writeAnnotatedIndex(OutputList &ol)
Definition: index.cpp:2037
static void writePageIndex(OutputList &ol)
Definition: index.cpp:3162
static void writeGroupIndex(OutputList &ol)
Definition: index.cpp:3597
QCString & prepend(const char *s)
Definition: qcstring.cpp:387
#define Config_getBool(val)
Definition: config.cpp:664
void addContentsItem(bool isDir, const char *name, const char *ref, const char *file, const char *anchor, bool separateIndex=FALSE, bool addToNavIndex=FALSE, Definition *def=0)
Definition: index.h:137
QCString baseFile() const
Definition: layout.h:149
int documentedNamespaces
Definition: index.cpp:60
static void writeIndexHierarchyEntries(OutputList &ol, const QList< LayoutNavEntry > &entries)
Definition: index.cpp:4072
static void writeHierarchicalIndex(OutputList &ol)
Definition: index.cpp:955
static void writeAlphabeticalIndex(OutputList &ol)
Definition: index.cpp:2008
QCString title() const
Definition: layout.h:150
static void writeNamespaceMemberIndex(OutputList &ol)
Definition: index.cpp:2972
static void writeNamespaceIndex(OutputList &ol)
Definition: index.cpp:1447
Kind kind() const
Definition: layout.h:148
type & at(uint i) const
Definition: qarray.h:98
uint size() const
Definition: qarray.h:65
unsigned uint
Definition: qglobal.h:351
void incContentsDepth()
Definition: index.h:133
const bool TRUE
Definition: qglobal.h:371
static void writeClassMemberIndex(OutputList &ol)
Definition: index.cpp:2636
static IndexList * indexList
Definition: doxygen.h:149
int annotatedClasses
Definition: index.cpp:55
static void writeMemberList ( OutputList ol,
bool  useSections,
int  page,
const LetterToIndexMap< MemberIndexList > &  memberLists,
DefinitionIntf::DefType  type 
)
static

Definition at line 2156 of file index.cpp.

2159 {
2160  int index = (int)type;
2161  ASSERT(index<3);
2162 
2163  typedef void (*writeLinkForMember_t)(OutputList &ol,MemberDef *md,const char *separator,
2164  QCString &prevNamespaceName);
2165 
2166  // each index tab has its own write function
2167  static writeLinkForMember_t writeLinkForMemberMap[3] =
2168  {
2172  };
2173  QCString prevName;
2174  QCString prevDefName;
2175  bool first=TRUE;
2176  bool firstSection=TRUE;
2177  bool firstItem=TRUE;
2178  MemberIndexList *ml;
2179  SIntDict<MemberIndexList>::Iterator it(memberLists);
2180  for (it.toFirst();(ml=it.current());++it)
2181  {
2182  if (page!=-1)
2183  {
2184  ml = memberLists[page];
2185  it.toLast();
2186  }
2187  if (ml==0 || ml->count()==0) continue;
2188  ml->sort();
2189  QListIterator<MemberDef> mli(*ml);
2190  MemberDef *md;
2191  for (mli.toFirst();(md=mli.current());++mli)
2192  {
2193  const char *sep;
2194  bool isFunc=!md->isObjCMethod() &&
2195  (md->isFunction() || md->isSlot() || md->isSignal());
2196  QCString name=md->name();
2197  int startIndex = getPrefixIndex(name);
2198  if (QCString(name.data()+startIndex)!=prevName) // new entry
2199  {
2200  if ((prevName.isEmpty() ||
2201  tolower(name.at(startIndex))!=tolower(prevName.at(0))) &&
2202  useSections) // new section
2203  {
2204  if (!firstItem) ol.endItemListItem();
2205  if (!firstSection) ol.endItemList();
2206  QCString cs = letterToLabel(ml->letter());
2207  QCString cl = QString(QChar(ml->letter())).utf8();
2208  QCString anchor=(QCString)"index_"+cs;
2209  QCString title=(QCString)"- "+cl+" -";
2210  ol.startSection(anchor,title,SectionInfo::Subsection);
2211  ol.docify(title);
2212  ol.endSection(anchor,SectionInfo::Subsection);
2213  ol.startItemList();
2214  firstSection=FALSE;
2215  firstItem=TRUE;
2216  }
2217  else if (!useSections && first)
2218  {
2219  ol.startItemList();
2220  first=FALSE;
2221  }
2222 
2223  // member name
2224  if (!firstItem) ol.endItemListItem();
2225  ol.startItemListItem();
2226  firstItem=FALSE;
2227  ol.docify(name);
2228  if (isFunc) ol.docify("()");
2229  ol.writeString("\n");
2230 
2231  // link to class
2232  prevDefName="";
2233  sep = ": ";
2234  prevName = name.data()+startIndex;
2235  }
2236  else // same entry
2237  {
2238  sep = ", ";
2239  // link to class for other members with the same name
2240  }
2241  if (index<3)
2242  {
2243  // write the link for the specific list type
2244  writeLinkForMemberMap[index](ol,md,sep,prevDefName);
2245  }
2246  }
2247  }
2248  if (!firstItem) ol.endItemListItem();
2249  ol.endItemList();
2250 }
static QCString name
Definition: declinfo.cpp:673
bool isEmpty() const
Definition: qcstring.h:189
char & at(uint i) const
Definition: qcstring.h:326
const bool FALSE
Definition: qglobal.h:370
The QString class provides an abstraction of Unicode text and the classic C null-terminated char arra...
Definition: qstring.h:350
bool isSignal() const
Definition: memberdef.cpp:4130
bool isSlot() const
Definition: memberdef.cpp:4135
The QChar class provides a light-weight Unicode character.
Definition: qstring.h:56
QAsciiDict< Entry > cl
uint count() const
Definition: qlist.h:66
uint letter() const
Definition: index.cpp:134
const QCString & name() const
Definition: definition.h:114
void sort()
Definition: qlist.h:85
const char * data() const
Definition: qcstring.h:207
int getPrefixIndex(const QCString &name)
Definition: util.cpp:5144
bool isObjCMethod() const
Definition: memberdef.cpp:3956
static void writeNamespaceLinkForMember(OutputList &ol, MemberDef *md, const char *separator, QCString &prevNamespaceName)
Definition: index.cpp:2142
static void writeFileLinkForMember(OutputList &ol, MemberDef *md, const char *separator, QCString &prevFileName)
Definition: index.cpp:2128
static void writeClassLinkForMember(OutputList &ol, MemberDef *md, const char *separator, QCString &prevClassName)
Definition: index.cpp:2114
static QCString letterToLabel(uint startLetter)
Definition: index.cpp:1640
bool isFunction() const
Definition: memberdef.cpp:4160
const char * cs
QCString utf8() const
Definition: qstring.cpp:14507
const bool TRUE
Definition: qglobal.h:371
#define ASSERT(x)
Definition: qglobal.h:590
static void writeNamespaceIndex ( OutputList ol)
static

Definition at line 1447 of file index.cpp.

1448 {
1449  if (documentedNamespaces==0) return;
1450  ol.pushGeneratorState();
1453  if (lne==0) lne = LayoutDocManager::instance().rootNavEntry()->find(LayoutNavEntry::Namespaces); // fall back
1454  QCString title = lne ? lne->title() : theTranslator->trNamespaceList();
1455  bool addToIndex = lne==0 || lne->visible();
1456  startFile(ol,"namespaces",0,title,HLI_Namespaces);
1457  startTitle(ol,0);
1458  ol.parseText(title);
1459  endTitle(ol,0,0);
1460  ol.startContents();
1461  ol.startTextBlock();
1462  ol.parseText(lne ? lne->intro() : theTranslator->trNamespaceListDescription(Config_getBool("EXTRACT_ALL")));
1463  ol.endTextBlock();
1464 
1465  bool first=TRUE;
1466 
1467  // ---------------
1468  // Linear namespace index for Latex/RTF
1469  // ---------------
1470  ol.pushGeneratorState();
1472 
1474  NamespaceDef *nd;
1475  for (nli.toFirst();(nd=nli.current());++nli)
1476  {
1477  if (nd->isLinkableInProject())
1478  {
1479  if (first)
1480  {
1481  ol.startIndexList();
1482  first=FALSE;
1483  }
1484  //ol.writeStartAnnoItem("namespace",nd->getOutputFileBase(),0,nd->name());
1485  ol.startIndexKey();
1486  if (nd->getLanguage()==SrcLangExt_VHDL)
1487  {
1488  ol.writeObjectLink(0, nd->getOutputFileBase().replace(0,qstrlen("namespace"),"class"),0,nd->displayName());
1489  }
1490  else
1491  {
1492  ol.writeObjectLink(0,nd->getOutputFileBase(),0,nd->displayName());
1493  }
1494  ol.endIndexKey();
1495 
1496  bool hasBrief = !nd->briefDescription().isEmpty();
1497  ol.startIndexValue(hasBrief);
1498  if (hasBrief)
1499  {
1500  //ol.docify(" (");
1501  ol.generateDoc(
1502  nd->briefFile(),nd->briefLine(),
1503  nd,0,
1504  nd->briefDescription(TRUE),
1505  FALSE, // index words
1506  FALSE, // isExample
1507  0, // example name
1508  TRUE, // single line
1509  TRUE // link from index
1510  );
1511  //ol.docify(")");
1512  }
1513  ol.endIndexValue(nd->getOutputFileBase(),hasBrief);
1514 
1515  }
1516  }
1517  if (!first) ol.endIndexList();
1518 
1519  ol.popGeneratorState();
1520 
1521  // ---------------
1522  // Hierarchical namespace index for HTML
1523  // ---------------
1524  ol.pushGeneratorState();
1526 
1527  {
1528  if (addToIndex)
1529  {
1530  Doxygen::indexList->addContentsItem(TRUE,title,0,"namespaces",0,TRUE,TRUE);
1532  }
1533  FTVHelp* ftv = new FTVHelp(FALSE);
1535  QGString outStr;
1536  FTextStream t(&outStr);
1537  ftv->generateTreeViewInline(t);
1538  ol.writeString(outStr);
1539  delete ftv;
1540  if (addToIndex)
1541  {
1543  }
1544  }
1545 
1546  ol.popGeneratorState();
1547  // ------
1548 
1549  endFile(ol);
1550  ol.popGeneratorState();
1551 }
void endIndexValue(const char *name, bool b)
Definition: outputlist.h:135
void endFile(OutputList &ol, bool skipNavIndex, bool skipEndContents, const QCString &navPath)
Definition: index.cpp:263
LayoutNavEntry * find(LayoutNavEntry::Kind k, const char *file=0) const
Definition: layout.cpp:76
bool isEmpty() const
Definition: qcstring.h:189
void startFile(OutputList &ol, const char *name, const char *manName, const char *title, HighlightedItem hli, bool additionalIndices, const char *altSidebarName)
Definition: index.cpp:244
QCString displayName(bool=TRUE) const
QCString getOutputFileBase() const
void writeString(const char *text)
Definition: outputlist.h:119
bool generateDoc(const char *fileName, int startLine, Definition *ctx, MemberDef *md, const QCString &docStr, bool indexWords, bool isExample, const char *exampleName=0, bool singleLine=FALSE, bool linkFromIndex=FALSE)
Definition: outputlist.cpp:131
void disableAllBut(OutputGenerator::OutputType o)
Definition: outputlist.cpp:49
void startIndexValue(bool b)
Definition: outputlist.h:133
const bool FALSE
Definition: qglobal.h:370
static LayoutDocManager & instance()
Definition: layout.cpp:1359
int briefLine() const
void startIndexKey()
Definition: outputlist.h:129
Simplified and optimized version of QTextStream.
Definition: ftextstream.h:11
void generateTreeViewInline(FTextStream &t)
Definition: ftvhelp.cpp:716
bool parseText(const QCString &textStr)
Definition: outputlist.cpp:175
Base class for the layout of a navigation item at the top of the HTML pages.
Definition: layout.h:118
void startIndexList()
Definition: outputlist.h:125
static void writeNamespaceTree(NamespaceSDict *nsDict, FTVHelp *ftv, bool rootOnly, bool showClasses, bool addToIndex)
Definition: index.cpp:1388
static NamespaceSDict * namespaceSDict
Definition: doxygen.h:120
void popGeneratorState()
Definition: outputlist.cpp:121
void endIndexKey()
Definition: outputlist.h:131
void decContentsDepth()
Definition: index.h:135
Q_EXPORT uint qstrlen(const char *str)
Definition: qcstring.h:81
bool visible()
Definition: layout.h:153
void pushGeneratorState()
Definition: outputlist.cpp:111
SrcLangExt getLanguage() const
QCString intro() const
Definition: layout.h:151
void endIndexList()
Definition: outputlist.h:127
void disable(OutputGenerator::OutputType o)
Definition: outputlist.cpp:79
#define Config_getBool(val)
Definition: config.cpp:664
QCString briefFile() const
virtual QCString briefDescription(bool abbreviate=FALSE) const
void addContentsItem(bool isDir, const char *name, const char *ref, const char *file, const char *anchor, bool separateIndex=FALSE, bool addToNavIndex=FALSE, Definition *def=0)
Definition: index.h:137
LayoutNavEntry * rootNavEntry() const
Definition: layout.cpp:1370
int documentedNamespaces
Definition: index.cpp:60
void startTitle(OutputList &ol, const char *fileName, Definition *def)
Definition: index.cpp:228
void startTextBlock(bool dense=FALSE)
Definition: outputlist.h:404
QCString title() const
Definition: layout.h:150
Translator * theTranslator
Definition: language.cpp:157
void endTextBlock(bool paraBreak=FALSE)
Definition: outputlist.h:406
void endTitle(OutputList &ol, const char *fileName, const char *name)
Definition: index.cpp:237
friend class Iterator
Definition: sortdict.h:289
bool isLinkableInProject() const
void writeObjectLink(const char *ref, const char *file, const char *anchor, const char *name)
Definition: outputlist.h:149
virtual QCString trNamespaceListDescription(bool extractAll)=0
void incContentsDepth()
Definition: index.h:133
QCString & replace(uint index, uint len, const char *s)
Definition: qcstring.cpp:411
const bool TRUE
Definition: qglobal.h:371
static IndexList * indexList
Definition: doxygen.h:149
void startContents()
Definition: outputlist.h:364
virtual QCString trNamespaceList()=0
static void writeNamespaceLinkForMember ( OutputList ol,
MemberDef md,
const char *  separator,
QCString prevNamespaceName 
)
static

Definition at line 2142 of file index.cpp.

2144 {
2145  NamespaceDef *nd=md->getNamespaceDef();
2146  if (nd && prevNamespaceName!=nd->displayName())
2147  {
2148  ol.docify(separator);
2150  nd->displayName());
2151  ol.writeString("\n");
2152  prevNamespaceName = nd->displayName();
2153  }
2154 }
QCString getReference() const
Definition: memberdef.cpp:1001
QCString displayName(bool=TRUE) const
void writeString(const char *text)
Definition: outputlist.h:119
QCString anchor() const
Definition: memberdef.cpp:1031
QCString getOutputFileBase() const
Definition: memberdef.cpp:941
NamespaceDef * getNamespaceDef() const
Definition: memberdef.cpp:4080
void docify(const char *s)
Definition: outputlist.h:145
void writeObjectLink(const char *ref, const char *file, const char *anchor, const char *name)
Definition: outputlist.h:149
static void writeNamespaceMemberIndex ( OutputList ol)
static

Definition at line 2972 of file index.cpp.

2973 {
2975  bool addToIndex = lne==0 || lne->visible();
2976  if (documentedNamespaceMembers[NMHL_All]>0 && addToIndex)
2977  {
2978  Doxygen::indexList->addContentsItem(FALSE,lne ? lne->title() : theTranslator->trNamespaceMembers(),0,"namespacemembers",0);
2980  }
2981  //bool fortranOpt = Config_getBool("OPTIMIZE_FOR_FORTRAN");
2988  if (documentedNamespaceMembers[NMHL_All]>0 && addToIndex)
2989  {
2991  }
2992 
2993 }
LayoutNavEntry * find(LayoutNavEntry::Kind k, const char *file=0) const
Definition: layout.cpp:76
const bool FALSE
Definition: qglobal.h:370
static LayoutDocManager & instance()
Definition: layout.cpp:1359
Base class for the layout of a navigation item at the top of the HTML pages.
Definition: layout.h:118
void decContentsDepth()
Definition: index.h:135
bool visible()
Definition: layout.h:153
virtual QCString trNamespaceMembers()=0
static void writeNamespaceMemberIndexFiltered(OutputList &ol, NamespaceMemberHighlight hl)
Definition: index.cpp:2858
void addContentsItem(bool isDir, const char *name, const char *ref, const char *file, const char *anchor, bool separateIndex=FALSE, bool addToNavIndex=FALSE, Definition *def=0)
Definition: index.h:137
LayoutNavEntry * rootNavEntry() const
Definition: layout.cpp:1370
int documentedNamespaceMembers[NMHL_Total]
Definition: index.cpp:64
QCString title() const
Definition: layout.h:150
Translator * theTranslator
Definition: language.cpp:157
void incContentsDepth()
Definition: index.h:133
static IndexList * indexList
Definition: doxygen.h:149
static void writeNamespaceMemberIndexFiltered ( OutputList ol,
NamespaceMemberHighlight  hl 
)
static

Definition at line 2858 of file index.cpp.

2860 {
2861  if (documentedNamespaceMembers[hl]==0) return;
2862 
2863  static bool disableIndex = Config_getBool("DISABLE_INDEX");
2864 
2865 
2866  bool multiPageIndex=FALSE;
2868  {
2869  multiPageIndex=TRUE;
2870  }
2871 
2872  ol.pushGeneratorState();
2874 
2877  QCString title = lne ? lne->title() : theTranslator->trNamespaceMembers();
2878  bool addToIndex = lne==0 || lne->visible();
2879 
2880  if (addToIndex)
2881  {
2882  Doxygen::indexList->addContentsItem(multiPageIndex,getNmhlInfo(hl)->title,0,
2883  getNmhlInfo(hl)->fname,0,multiPageIndex,TRUE);
2884  if (multiPageIndex) Doxygen::indexList->incContentsDepth();
2885  }
2886 
2887  bool first=TRUE;
2889  MemberIndexList *ml;
2890  for (it.toFirst();(ml=it.current());++it)
2891  {
2892  uint page = ml->letter();
2894  if (multiPageIndex)
2895  {
2896  if (!first)
2897  {
2898  fileName+="_"+letterToLabel(page);
2899  }
2900  QCString cs = QString(QChar(page)).utf8();
2901  if (addToIndex)
2902  {
2904  }
2905  }
2907 
2908  ol.startFile(fileName+extension,0,title);
2909  ol.startQuickIndices();
2910  if (!disableIndex)
2911  {
2913  startQuickIndexList(ol);
2914 
2915  // index item for all namespace member lists
2918  ol.writeString(fixSpaces(getNmhlInfo(0)->title));
2919  endQuickIndexItem(ol);
2920 
2921  int i;
2922  // index items per category member lists
2923  for (i=1;i<NMHL_Total;i++)
2924  {
2925  if (documentedNamespaceMembers[i]>0)
2926  {
2929  ol.writeString(fixSpaces(getNmhlInfo(i)->title));
2930  endQuickIndexItem(ol);
2931  }
2932  }
2933 
2934  endQuickIndexList(ol);
2935 
2936  if (quickIndex)
2937  {
2939  getNmhlInfo(hl)->fname,multiPageIndex);
2940  }
2941 
2942  }
2943  ol.endQuickIndices();
2944  ol.writeSplitBar(fileName);
2945  ol.writeSearchInfo();
2946 
2947  ol.startContents();
2948 
2949  if (hl==NMHL_All)
2950  {
2951  ol.startTextBlock();
2952  ol.parseText(lne ? lne->intro() : theTranslator->trNamespaceMemberDescription(Config_getBool("EXTRACT_ALL")));
2953  ol.endTextBlock();
2954  }
2955  else
2956  {
2957  // hack to work around a mozilla bug, which refuses to switch to
2958  // normal lists otherwise
2959  ol.writeString("&#160;");
2960  }
2961 
2962  writeMemberList(ol,quickIndex,
2963  multiPageIndex?page:-1,
2966  endFile(ol);
2967  }
2968  if (multiPageIndex && addToIndex) Doxygen::indexList->decContentsDepth();
2969  ol.popGeneratorState();
2970 }
const int maxItemsBeforeQuickIndex
Definition: index.cpp:143
const char * fname
Definition: index.cpp:2833
void endFile(OutputList &ol, bool skipNavIndex, bool skipEndContents, const QCString &navPath)
Definition: index.cpp:263
LayoutNavEntry * find(LayoutNavEntry::Kind k, const char *file=0) const
Definition: layout.cpp:76
static void writeQuickMemberIndex(OutputList &ol, const LetterToIndexMap< MemberIndexList > &charUsed, uint page, QCString fullName, bool multiPage)
Definition: index.cpp:2458
static void endQuickIndexList(OutputList &ol)
Definition: index.cpp:170
static QCString htmlFileExtension
Definition: doxygen.h:130
void writeString(const char *text)
Definition: outputlist.h:119
void disableAllBut(OutputGenerator::OutputType o)
Definition: outputlist.cpp:49
static void startQuickIndexList(OutputList &ol, bool letterTabs=FALSE)
Definition: index.cpp:149
void writeSearchInfo()
Definition: outputlist.h:99
const bool FALSE
Definition: qglobal.h:370
static LayoutDocManager & instance()
Definition: layout.cpp:1359
void startQuickIndices()
Definition: outputlist.h:350
The QString class provides an abstraction of Unicode text and the classic C null-terminated char arra...
Definition: qstring.h:350
The QChar class provides a light-weight Unicode character.
Definition: qstring.h:56
bool parseText(const QCString &textStr)
Definition: outputlist.cpp:175
Base class for the layout of a navigation item at the top of the HTML pages.
Definition: layout.h:118
static void endQuickIndexItem(OutputList &ol)
Definition: index.cpp:213
void popGeneratorState()
Definition: outputlist.cpp:121
static LetterToIndexMap< MemberIndexList > g_namespaceIndexLetterUsed[NMHL_Total]
Definition: index.cpp:141
void decContentsDepth()
Definition: index.h:135
uint letter() const
Definition: index.cpp:134
bool visible()
Definition: layout.h:153
static void writeMemberList(OutputList &ol, bool useSections, int page, const LetterToIndexMap< MemberIndexList > &memberLists, DefinitionIntf::DefType type)
Definition: index.cpp:2156
void writeSplitBar(const char *name)
Definition: outputlist.h:354
fileName
Definition: dumpTree.py:9
void pushGeneratorState()
Definition: outputlist.cpp:111
QCString intro() const
Definition: layout.h:151
#define MAX_ITEMS_BEFORE_MULTIPAGE_INDEX
Definition: index.cpp:51
static void startQuickIndexItem(OutputList &ol, const char *l, bool hl, bool compact, bool &first)
Definition: index.cpp:180
#define Config_getBool(val)
Definition: config.cpp:664
virtual QCString trNamespaceMembers()=0
void addContentsItem(bool isDir, const char *name, const char *ref, const char *file, const char *anchor, bool separateIndex=FALSE, bool addToNavIndex=FALSE, Definition *def=0)
Definition: index.h:137
void endQuickIndices()
Definition: outputlist.h:352
LayoutNavEntry * rootNavEntry() const
Definition: layout.cpp:1370
void writeQuickLinks(bool compact, HighlightedItem hli, const char *file)
Definition: outputlist.h:360
virtual QCString trNamespaceMemberDescription(bool extractAll)=0
QCString fixSpaces(const QCString &s)
Definition: index.cpp:223
int documentedNamespaceMembers[NMHL_Total]
Definition: index.cpp:64
void startTextBlock(bool dense=FALSE)
Definition: outputlist.h:404
static QCString letterToLabel(uint startLetter)
Definition: index.cpp:1640
QCString title() const
Definition: layout.h:150
static const NmhlInfo * getNmhlInfo(int hl)
Definition: index.cpp:2837
Translator * theTranslator
Definition: language.cpp:157
void endTextBlock(bool paraBreak=FALSE)
Definition: outputlist.h:406
const char * cs
QCString utf8() const
Definition: qstring.cpp:14507
unsigned uint
Definition: qglobal.h:351
void incContentsDepth()
Definition: index.h:133
const bool TRUE
Definition: qglobal.h:371
static IndexList * indexList
Definition: doxygen.h:149
void startContents()
Definition: outputlist.h:364
void startFile(const char *name, const char *manName, const char *title)
Definition: outputlist.h:97
static void writeNamespaceTree ( NamespaceSDict nsDict,
FTVHelp ftv,
bool  rootOnly,
bool  showClasses,
bool  addToIndex 
)
static

Definition at line 1388 of file index.cpp.

1390 {
1391  if (nsDict)
1392  {
1393  NamespaceSDict::Iterator nli(*nsDict);
1394  NamespaceDef *nd;
1395  for (nli.toFirst();(nd=nli.current());++nli)
1396  {
1397  if (nd->localName().find('@')==-1 &&
1398  (!rootOnly || nd->getOuterScope()==Doxygen::globalScope))
1399  {
1400 
1401  bool hasChildren = namespaceHasVisibleChild(nd,showClasses);
1402  bool isLinkable = nd->isLinkableInProject();
1403 
1404  QCString ref;
1405  QCString file;
1406  if (isLinkable)
1407  {
1408  ref = nd->getReference();
1409  file = nd->getOutputFileBase();
1410  if (nd->getLanguage()==SrcLangExt_VHDL) // UGLY HACK
1411  {
1412  file=file.replace(0,qstrlen("namespace"),"class");
1413  }
1414  }
1415 
1416  if ((isLinkable && !showClasses) || hasChildren)
1417  {
1418  ftv->addContentsItem(hasChildren,nd->localName(),ref,file,0,FALSE,TRUE,nd);
1419 
1420  if (addToIndex)
1421  {
1422  Doxygen::indexList->addContentsItem(hasChildren,nd->localName(),ref,file,QCString(),
1423  hasChildren && !file.isEmpty(),addToIndex);
1424  }
1425 
1426  //printf("*** writeNamespaceTree count=%d addToIndex=%d showClasses=%d classCount=%d\n",
1427  // count,addToIndex,showClasses,classCount);
1428  if (hasChildren)
1429  {
1430  if (addToIndex) Doxygen::indexList->incContentsDepth();
1431  ftv->incContentsDepth();
1432  writeNamespaceTree(nd->getNamespaceSDict(),ftv,FALSE,showClasses,addToIndex);
1433  if (showClasses)
1434  {
1435  writeClassTree(nd->getClassSDict(),ftv,addToIndex,FALSE);
1436  }
1437  ftv->decContentsDepth();
1438  if (addToIndex) Doxygen::indexList->decContentsDepth();
1439  }
1440  }
1441  }
1442  }
1443  }
1444 }
virtual QCString getReference() const
bool isEmpty() const
Definition: qcstring.h:189
QCString getOutputFileBase() const
const bool FALSE
Definition: qglobal.h:370
int find(char c, int index=0, bool cs=TRUE) const
Definition: qcstring.cpp:41
bool namespaceHasVisibleChild(NamespaceDef *nd, bool includeClasses)
Definition: util.cpp:8299
static void writeNamespaceTree(NamespaceSDict *nsDict, FTVHelp *ftv, bool rootOnly, bool showClasses, bool addToIndex)
Definition: index.cpp:1388
static NamespaceDef * globalScope
Definition: doxygen.h:128
void decContentsDepth()
Definition: index.h:135
Q_EXPORT uint qstrlen(const char *str)
Definition: qcstring.h:81
SrcLangExt getLanguage() const
void addContentsItem(bool isDir, const char *name, const char *ref, const char *file, const char *anchor, bool separateIndex, bool addToNavIndex, Definition *def)
Definition: ftvhelp.cpp:183
void addContentsItem(bool isDir, const char *name, const char *ref, const char *file, const char *anchor, bool separateIndex=FALSE, bool addToNavIndex=FALSE, Definition *def=0)
Definition: index.h:137
NamespaceSDict * getNamespaceSDict() const
Definition: namespacedef.h:101
QCString localName() const
virtual Definition * getOuterScope() const
void decContentsDepth()
Definition: ftvhelp.cpp:152
friend class Iterator
Definition: sortdict.h:289
static void writeClassTree(OutputList &ol, const BaseClassList *bcl, bool hideSuper, int level, FTVHelp *ftv, bool addToIndex)
Definition: index.cpp:423
ClassSDict * getClassSDict() const
Definition: namespacedef.h:98
void incContentsDepth()
Definition: ftvhelp.cpp:141
bool isLinkableInProject() const
void incContentsDepth()
Definition: index.h:133
QCString & replace(uint index, uint len, const char *s)
Definition: qcstring.cpp:411
const bool TRUE
Definition: qglobal.h:371
static IndexList * indexList
Definition: doxygen.h:149
static void writePageIndex ( OutputList ol)
static

Definition at line 3162 of file index.cpp.

3163 {
3164  if (indexedPages==0) return;
3165  ol.pushGeneratorState();
3168  QCString title = lne ? lne->title() : theTranslator->trRelatedPages();
3169  startFile(ol,"pages",0,title,HLI_Pages);
3170  startTitle(ol,0);
3171  ol.parseText(title);
3172  endTitle(ol,0,0);
3173  ol.startContents();
3174  ol.startTextBlock();
3176  ol.endTextBlock();
3177 
3178  {
3179  FTVHelp* ftv = new FTVHelp(FALSE);
3181  PageDef *pd=0;
3182  for (pdi.toFirst();(pd=pdi.current());++pdi)
3183  {
3184  if ((pd->getOuterScope()==0 ||
3185  pd->getOuterScope()->definitionType()!=Definition::TypePage) && // not a sub page
3186  !pd->isReference() // not an external page
3187  )
3188  {
3189  writePages(pd,ftv);
3190  }
3191  }
3192  QGString outStr;
3193  FTextStream t(&outStr);
3194  ftv->generateTreeViewInline(t);
3195  ol.writeString(outStr);
3196  delete ftv;
3197  }
3198 
3199 // ol.popGeneratorState();
3200  // ------
3201 
3202  endFile(ol);
3203  ol.popGeneratorState();
3204 }
void endFile(OutputList &ol, bool skipNavIndex, bool skipEndContents, const QCString &navPath)
Definition: index.cpp:263
LayoutNavEntry * find(LayoutNavEntry::Kind k, const char *file=0) const
Definition: layout.cpp:76
void startFile(OutputList &ol, const char *name, const char *manName, const char *title, HighlightedItem hli, bool additionalIndices, const char *altSidebarName)
Definition: index.cpp:244
void writeString(const char *text)
Definition: outputlist.h:119
void disableAllBut(OutputGenerator::OutputType o)
Definition: outputlist.cpp:49
const bool FALSE
Definition: qglobal.h:370
static LayoutDocManager & instance()
Definition: layout.cpp:1359
virtual QCString trRelatedPagesDescription()=0
virtual bool isReference() const
Simplified and optimized version of QTextStream.
Definition: ftextstream.h:11
void generateTreeViewInline(FTextStream &t)
Definition: ftvhelp.cpp:716
bool parseText(const QCString &textStr)
Definition: outputlist.cpp:175
Base class for the layout of a navigation item at the top of the HTML pages.
Definition: layout.h:118
void popGeneratorState()
Definition: outputlist.cpp:121
virtual DefType definitionType() const =0
void pushGeneratorState()
Definition: outputlist.cpp:111
QCString intro() const
Definition: layout.h:151
static PageSDict * pageSDict
Definition: doxygen.h:102
int indexedPages
Definition: index.cpp:61
LayoutNavEntry * rootNavEntry() const
Definition: layout.cpp:1370
virtual QCString trRelatedPages()=0
virtual Definition * getOuterScope() const
void startTitle(OutputList &ol, const char *fileName, Definition *def)
Definition: index.cpp:228
static void writePages(PageDef *pd, FTVHelp *ftv)
Definition: index.cpp:3096
void startTextBlock(bool dense=FALSE)
Definition: outputlist.h:404
A model of a page symbol.
Definition: pagedef.h:29
QCString title() const
Definition: layout.h:150
Translator * theTranslator
Definition: language.cpp:157
void endTextBlock(bool paraBreak=FALSE)
Definition: outputlist.h:406
void endTitle(OutputList &ol, const char *fileName, const char *name)
Definition: index.cpp:237
friend class Iterator
Definition: sortdict.h:289
void startContents()
Definition: outputlist.h:364
static void writePages ( PageDef pd,
FTVHelp ftv 
)
static

Definition at line 3096 of file index.cpp.

3097 {
3098  //printf("writePages()=%s pd=%p mainpage=%p\n",pd->name().data(),pd,Doxygen::mainPage);
3100  bool addToIndex = lne==0 || lne->visible();
3101  if (!addToIndex) return;
3102 
3103  bool hasSubPages = pd->hasSubPages();
3104  bool hasSections = pd->hasSections();
3105 
3106  if (pd->visibleInIndex())
3107  {
3108  QCString pageTitle;
3109 
3110  if (pd->title().isEmpty())
3111  pageTitle=pd->name();
3112  else
3113  pageTitle=filterTitle(pd->title());
3114 
3115  if (ftv)
3116  {
3117  //printf("*** adding %s hasSubPages=%d hasSections=%d\n",pageTitle.data(),hasSubPages,hasSections);
3118  ftv->addContentsItem(
3119  hasSubPages,pageTitle,
3120  pd->getReference(),pd->getOutputFileBase(),
3121  0,hasSubPages,TRUE,pd);
3122  }
3123  if (addToIndex && pd!=Doxygen::mainPage)
3124  {
3126  hasSubPages || hasSections,pageTitle,
3127  pd->getReference(),pd->getOutputFileBase(),
3128  0,hasSubPages,TRUE);
3129  }
3130  }
3131  if (hasSubPages && ftv) ftv->incContentsDepth();
3132  bool doIndent = (hasSections || hasSubPages) &&
3134  if (doIndent)
3135  {
3137  }
3138  if (hasSections)
3139  {
3140  pd->addSectionsToIndex();
3141  }
3142  PageSDict *subPages = pd->getSubPages();
3143  if (subPages)
3144  {
3145  PageSDict::Iterator pi(*subPages);
3146  PageDef *subPage;
3147  for (pi.toFirst();(subPage=pi.current());++pi)
3148  {
3149  writePages(subPage,ftv);
3150  }
3151  }
3152  if (hasSubPages && ftv) ftv->decContentsDepth();
3153  if (doIndent)
3154  {
3156  }
3157  //printf("end writePages()=%s\n",pd->title().data());
3158 }
PageSDict * getSubPages() const
Definition: pagedef.h:56
LayoutNavEntry * find(LayoutNavEntry::Kind k, const char *file=0) const
Definition: layout.cpp:76
virtual QCString getReference() const
bool isEmpty() const
Definition: qcstring.h:189
QCString title() const
Definition: pagedef.h:54
static LayoutDocManager & instance()
Definition: layout.cpp:1359
bool hasSections() const
Definition: definition.cpp:447
void addSectionsToIndex()
Definition: definition.cpp:467
Base class for the layout of a navigation item at the top of the HTML pages.
Definition: layout.h:118
void decContentsDepth()
Definition: index.h:135
bool hasSubPages() const
Definition: pagedef.cpp:300
const QCString & name() const
Definition: definition.h:114
bool visible()
Definition: layout.h:153
bool visibleInIndex() const
Definition: pagedef.cpp:282
static bool mainPageHasOwnTitle()
Definition: index.cpp:3085
void addContentsItem(bool isDir, const char *name, const char *ref, const char *file, const char *anchor, bool separateIndex, bool addToNavIndex, Definition *def)
Definition: ftvhelp.cpp:183
void addContentsItem(bool isDir, const char *name, const char *ref, const char *file, const char *anchor, bool separateIndex=FALSE, bool addToNavIndex=FALSE, Definition *def=0)
Definition: index.h:137
LayoutNavEntry * rootNavEntry() const
Definition: layout.cpp:1370
static void writePages(PageDef *pd, FTVHelp *ftv)
Definition: index.cpp:3096
A model of a page symbol.
Definition: pagedef.h:29
void decContentsDepth()
Definition: ftvhelp.cpp:152
friend class Iterator
Definition: sortdict.h:289
float pi
Definition: units.py:11
void incContentsDepth()
Definition: ftvhelp.cpp:141
QCString getOutputFileBase() const
Definition: pagedef.cpp:58
static PageDef * mainPage
Definition: doxygen.h:103
void incContentsDepth()
Definition: index.h:133
const bool TRUE
Definition: qglobal.h:371
static IndexList * indexList
Definition: doxygen.h:149
QCString filterTitle(const QCString &title)
Definition: util.cpp:7765
static void writeQuickMemberIndex ( OutputList ol,
const LetterToIndexMap< MemberIndexList > &  charUsed,
uint  page,
QCString  fullName,
bool  multiPage 
)
static

Definition at line 2458 of file index.cpp.

2461 {
2462  bool first=TRUE;
2465  MemberIndexList *ml;
2466  for (it.toFirst();(ml=it.current());++it)
2467  {
2468  uint i = ml->letter();
2469  QCString is = letterToLabel(i);
2470  QCString ci = QString(QChar(i)).utf8();
2471  QCString anchor;
2473  if (!multiPage)
2474  anchor="#index_";
2475  else if (first)
2476  anchor=fullName+extension+"#index_";
2477  else
2478  anchor=fullName+"_"+letterToLabel(i)+extension+"#index_";
2479  startQuickIndexItem(ol,anchor+is,i==page,TRUE,first);
2480  ol.writeString(ci);
2481  endQuickIndexItem(ol);
2482  first=FALSE;
2483  }
2484  endQuickIndexList(ol);
2485 }
static void endQuickIndexList(OutputList &ol)
Definition: index.cpp:170
static QCString htmlFileExtension
Definition: doxygen.h:130
void writeString(const char *text)
Definition: outputlist.h:119
static void startQuickIndexList(OutputList &ol, bool letterTabs=FALSE)
Definition: index.cpp:149
const bool FALSE
Definition: qglobal.h:370
The QString class provides an abstraction of Unicode text and the classic C null-terminated char arra...
Definition: qstring.h:350
The QChar class provides a light-weight Unicode character.
Definition: qstring.h:56
static void endQuickIndexItem(OutputList &ol)
Definition: index.cpp:213
uint letter() const
Definition: index.cpp:134
static void startQuickIndexItem(OutputList &ol, const char *l, bool hl, bool compact, bool &first)
Definition: index.cpp:180
static QCString letterToLabel(uint startLetter)
Definition: index.cpp:1640
QCString utf8() const
Definition: qstring.cpp:14507
unsigned uint
Definition: qglobal.h:351
const bool TRUE
Definition: qglobal.h:371
static void writeSingleFileIndex ( OutputList ol,
FileDef fd 
)
static

Definition at line 1088 of file index.cpp.

1089 {
1090  //printf("Found filedef %s\n",fd->name().data());
1091  bool doc = fd->isLinkableInProject();
1092  bool src = fd->generateSourceFile();
1093  bool nameOk = !fd->isDocumentationFile();
1094  if (nameOk && (doc || src) && !fd->isReference())
1095  {
1096  QCString path;
1097  if (Config_getBool("FULL_PATH_NAMES"))
1098  {
1099  path=stripFromPath(fd->getPath().copy());
1100  }
1101  QCString fullName=fd->name();
1102  if (!path.isEmpty())
1103  {
1104  if (path.at(path.length()-1)!='/') fullName.prepend("/");
1105  fullName.prepend(path);
1106  }
1107 
1108  ol.startIndexKey();
1109  ol.docify(path);
1110  if (doc)
1111  {
1112  ol.writeObjectLink(0,fd->getOutputFileBase(),0,fd->name());
1113  //if (addToIndex)
1114  //{
1115  // addMembersToIndex(fd,LayoutDocManager::File,fullName,QCString());
1116  //}
1117  }
1118  else
1119  {
1120  ol.startBold();
1121  ol.docify(fd->name());
1122  ol.endBold();
1123  //if (addToIndex)
1124  //{
1125  // Doxygen::indexList->addContentsItem(FALSE,fullName,0,0,0);
1126  //}
1127  }
1128  if (src)
1129  {
1130  ol.pushGeneratorState();
1132  ol.docify(" ");
1133  ol.startTextLink(fd->includeName(),0);
1134  ol.docify("[");
1136  ol.docify("]");
1137  ol.endTextLink();
1138  ol.popGeneratorState();
1139  }
1140  ol.endIndexKey();
1141  bool hasBrief = !fd->briefDescription().isEmpty();
1142  ol.startIndexValue(hasBrief);
1143  if (hasBrief)
1144  {
1145  //ol.docify(" (");
1146  ol.generateDoc(
1147  fd->briefFile(),fd->briefLine(),
1148  fd,0,
1149  fd->briefDescription(TRUE),
1150  FALSE, // index words
1151  FALSE, // isExample
1152  0, // example name
1153  TRUE, // single line
1154  TRUE // link from index
1155  );
1156  //ol.docify(")");
1157  }
1158  ol.endIndexValue(fd->getOutputFileBase(),hasBrief);
1159  //ol.popGeneratorState();
1160  // --------------------------------------------------------
1161  }
1162 }
void endIndexValue(const char *name, bool b)
Definition: outputlist.h:135
bool isEmpty() const
Definition: qcstring.h:189
uint length() const
Definition: qcstring.h:195
bool generateSourceFile() const
Definition: filedef.cpp:1396
bool generateDoc(const char *fileName, int startLine, Definition *ctx, MemberDef *md, const QCString &docStr, bool indexWords, bool isExample, const char *exampleName=0, bool singleLine=FALSE, bool linkFromIndex=FALSE)
Definition: outputlist.cpp:131
void disableAllBut(OutputGenerator::OutputType o)
Definition: outputlist.cpp:49
char & at(uint i) const
Definition: qcstring.h:326
void startIndexValue(bool b)
Definition: outputlist.h:133
const bool FALSE
Definition: qglobal.h:370
int briefLine() const
virtual bool isReference() const
void startIndexKey()
Definition: outputlist.h:129
void startTextLink(const char *file, const char *anchor)
Definition: outputlist.h:159
bool parseText(const QCString &textStr)
Definition: outputlist.cpp:175
QCString copy() const
Definition: qcstring.h:250
static QCString stripFromPath(const QCString &path, QStrList &l)
Definition: util.cpp:274
void popGeneratorState()
Definition: outputlist.cpp:121
void endIndexKey()
Definition: outputlist.h:131
void endBold()
Definition: outputlist.h:306
void pushGeneratorState()
Definition: outputlist.cpp:111
bool isLinkableInProject() const
Definition: filedef.cpp:1877
QCString name() const
Definition: filedef.cpp:1193
QCString & prepend(const char *s)
Definition: qcstring.cpp:387
#define Config_getBool(val)
Definition: config.cpp:664
QCString briefFile() const
virtual QCString trCode()=0
void startBold()
Definition: outputlist.h:304
virtual QCString briefDescription(bool abbreviate=FALSE) const
QCString getOutputFileBase() const
Definition: filedef.h:83
QCString getPath() const
Definition: filedef.h:110
QCString doc
Translator * theTranslator
Definition: language.cpp:157
bool isDocumentationFile() const
Definition: filedef.cpp:1728
QCString includeName() const
Definition: filedef.cpp:1784
void docify(const char *s)
Definition: outputlist.h:145
void writeObjectLink(const char *ref, const char *file, const char *anchor, const char *name)
Definition: outputlist.h:149
void endTextLink()
Definition: outputlist.h:161
const bool TRUE
Definition: qglobal.h:371
static void writeUserGroupStubPage ( OutputList ol,
LayoutNavEntry lne 
)
static

Definition at line 3722 of file index.cpp.

3723 {
3724  if (lne->baseFile().left(9)=="usergroup")
3725  {
3726  ol.pushGeneratorState();
3728  startFile(ol,lne->baseFile(),0,lne->title(),HLI_UserGroup);
3729  startTitle(ol,0);
3730  ol.parseText(lne->title());
3731  endTitle(ol,0,0);
3732  ol.startContents();
3735  int count=0;
3736  for (li.toFirst();(entry=li.current());++li)
3737  {
3738  if (entry->visible()) count++;
3739  }
3740  if (count>0)
3741  {
3742  ol.writeString("<ul>\n");
3743  for (li.toFirst();(entry=li.current());++li)
3744  {
3745  if (entry->visible())
3746  {
3747  ol.writeString("<li><a href=\""+entry->url()+"\"><span>"+
3748  fixSpaces(entry->title())+"</span></a></li>\n");
3749  }
3750  }
3751  ol.writeString("</ul>\n");
3752  }
3753  endFile(ol);
3754  ol.popGeneratorState();
3755  }
3756 }
void endFile(OutputList &ol, bool skipNavIndex, bool skipEndContents, const QCString &navPath)
Definition: index.cpp:263
QList< Entry > entry
void startFile(OutputList &ol, const char *name, const char *manName, const char *title, HighlightedItem hli, bool additionalIndices, const char *altSidebarName)
Definition: index.cpp:244
void writeString(const char *text)
Definition: outputlist.h:119
void disableAllBut(OutputGenerator::OutputType o)
Definition: outputlist.cpp:49
QCString left(uint len) const
Definition: qcstring.cpp:213
const QList< LayoutNavEntry > & children() const
Definition: layout.h:157
bool parseText(const QCString &textStr)
Definition: outputlist.cpp:175
Base class for the layout of a navigation item at the top of the HTML pages.
Definition: layout.h:118
void popGeneratorState()
Definition: outputlist.cpp:121
void pushGeneratorState()
Definition: outputlist.cpp:111
type * current() const
Definition: qlist.h:146
QCString baseFile() const
Definition: layout.h:149
void startTitle(OutputList &ol, const char *fileName, Definition *def)
Definition: index.cpp:228
QCString fixSpaces(const QCString &s)
Definition: index.cpp:223
QCString title() const
Definition: layout.h:150
void endTitle(OutputList &ol, const char *fileName, const char *name)
Definition: index.cpp:237
void startContents()
Definition: outputlist.h:364

Variable Documentation

int annotatedClasses

Definition at line 55 of file index.cpp.

int annotatedClassesPrinted

Definition at line 56 of file index.cpp.

int documentedClassMembers[CMHL_Total]

Definition at line 62 of file index.cpp.

int documentedDirs

Definition at line 67 of file index.cpp.

int documentedFileMembers[FMHL_Total]

Definition at line 63 of file index.cpp.

int documentedFiles

Definition at line 58 of file index.cpp.

int documentedGroups

Definition at line 59 of file index.cpp.

int documentedHtmlFiles

Definition at line 65 of file index.cpp.

int documentedNamespaceMembers[NMHL_Total]

Definition at line 64 of file index.cpp.

int documentedNamespaces

Definition at line 60 of file index.cpp.

int documentedPages

Definition at line 66 of file index.cpp.

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

Definition at line 57 of file index.cpp.

int indexedPages

Definition at line 61 of file index.cpp.

QArray<bool> indexWritten
static

Definition at line 4070 of file index.cpp.

const int maxItemsBeforeQuickIndex = MAX_ITEMS_BEFORE_QUICK_INDEX

Definition at line 143 of file index.cpp.