|
Packit |
1c1d7e |
/******************************************************************************
|
|
Packit |
1c1d7e |
*
|
|
Packit |
1c1d7e |
*
|
|
Packit |
1c1d7e |
*
|
|
Packit |
1c1d7e |
* Copyright (C) 1997-2015 by Dimitri van Heesch.
|
|
Packit |
1c1d7e |
*
|
|
Packit |
1c1d7e |
* Permission to use, copy, modify, and distribute this software and its
|
|
Packit |
1c1d7e |
* documentation under the terms of the GNU General Public License is hereby
|
|
Packit |
1c1d7e |
* granted. No representations are made about the suitability of this software
|
|
Packit |
1c1d7e |
* for any purpose. It is provided "as is" without express or implied warranty.
|
|
Packit |
1c1d7e |
* See the GNU General Public License for more details.
|
|
Packit |
1c1d7e |
*
|
|
Packit |
1c1d7e |
* Documents produced by Doxygen are derivative works derived from the
|
|
Packit |
1c1d7e |
* input used in their production; they are not affected by this license.
|
|
Packit |
1c1d7e |
*
|
|
Packit |
1c1d7e |
*/
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
#ifndef INDEX_H
|
|
Packit |
1c1d7e |
#define INDEX_H
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
#include <qlist.h>
|
|
Packit |
1c1d7e |
#include <qcstring.h>
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
class Definition;
|
|
Packit |
1c1d7e |
class MemberDef;
|
|
Packit |
1c1d7e |
class OutputList;
|
|
Packit |
1c1d7e |
class FTextStream;
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
/** \brief Abstract interface for index generators. */
|
|
Packit |
1c1d7e |
class IndexIntf
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
public:
|
|
Packit |
1c1d7e |
virtual ~IndexIntf() {}
|
|
Packit |
1c1d7e |
virtual void initialize() = 0;
|
|
Packit |
1c1d7e |
virtual void finalize() = 0;
|
|
Packit |
1c1d7e |
virtual void incContentsDepth() = 0;
|
|
Packit |
1c1d7e |
virtual void decContentsDepth() = 0;
|
|
Packit |
1c1d7e |
virtual void addContentsItem(bool isDir, const char *name, const char *ref,
|
|
Packit |
1c1d7e |
const char *file, const char *anchor, bool separateIndex,
|
|
Packit |
1c1d7e |
bool addToNavIndex,Definition *def) = 0;
|
|
Packit |
1c1d7e |
virtual void addIndexItem(Definition *context,MemberDef *md,
|
|
Packit |
1c1d7e |
const char *sectionAnchor,const char *title) = 0;
|
|
Packit |
1c1d7e |
virtual void addIndexFile(const char *name) = 0;
|
|
Packit |
1c1d7e |
virtual void addImageFile(const char *name) = 0;
|
|
Packit |
1c1d7e |
virtual void addStyleSheetFile(const char *name) = 0;
|
|
Packit |
1c1d7e |
};
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
/** \brief A list of index interfaces.
|
|
Packit |
1c1d7e |
*
|
|
Packit |
1c1d7e |
* This class itself implements all methods of IndexIntf and
|
|
Packit |
1c1d7e |
* just forwards the calls to all items in the list.
|
|
Packit |
1c1d7e |
*/
|
|
Packit |
1c1d7e |
class IndexList : public IndexIntf
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
private:
|
|
Packit |
1c1d7e |
QList<IndexIntf> m_intfs;
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
// --- foreach implementations for various number of arguments
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void foreach(void (IndexIntf::*methodPtr)())
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
QListIterator<IndexIntf> li(m_intfs);
|
|
Packit |
1c1d7e |
for (li.toFirst();li.current();++li) (li.current()->*methodPtr)();
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
template<typename A1>
|
|
Packit |
1c1d7e |
void foreach(void (IndexIntf::*methodPtr)(A1),A1 a1)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
QListIterator<IndexIntf> li(m_intfs);
|
|
Packit |
1c1d7e |
for (li.toFirst();li.current();++li) (li.current()->*methodPtr)(a1);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
template<typename A1,typename A2,typename A3>
|
|
Packit |
1c1d7e |
void foreach(void (IndexIntf::*methodPtr)(A1,A2,A3),A1 a1,A2 a2,A3 a3)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
QListIterator<IndexIntf> li(m_intfs);
|
|
Packit |
1c1d7e |
for (li.toFirst();li.current();++li) (li.current()->*methodPtr)(a1,a2,a3);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
template<typename A1,typename A2,typename A3,typename A4>
|
|
Packit |
1c1d7e |
void foreach(void (IndexIntf::*methodPtr)(A1,A2,A3,A4),A1 a1,A2 a2,A3 a3,A4 a4)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
QListIterator<IndexIntf> li(m_intfs);
|
|
Packit |
1c1d7e |
for (li.toFirst();li.current();++li) (li.current()->*methodPtr)(a1,a2,a3,a4);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
template<typename A1,typename A2,typename A3,typename A4,typename A5>
|
|
Packit |
1c1d7e |
void foreach(void (IndexIntf::*methodPtr)(A1,A2,A3,A4,A5),A1 a1,A2 a2,A3 a3,A4 a4,A5 a5)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
QListIterator<IndexIntf> li(m_intfs);
|
|
Packit |
1c1d7e |
for (li.toFirst();li.current();++li) (li.current()->*methodPtr)(a1,a2,a3,a4,a5);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
template<typename A1,typename A2,typename A3,typename A4,typename A5,typename A6>
|
|
Packit |
1c1d7e |
void foreach(void (IndexIntf::*methodPtr)(A1,A2,A3,A4,A5,A6),A1 a1,A2 a2,A3 a3,A4 a4,A5 a5,A6 a6)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
QListIterator<IndexIntf> li(m_intfs);
|
|
Packit |
1c1d7e |
for (li.toFirst();li.current();++li) (li.current()->*methodPtr)(a1,a2,a3,a4,a5,a6);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
template<typename A1,typename A2,typename A3,typename A4,typename A5,typename A6,typename A7,typename A8>
|
|
Packit |
1c1d7e |
void foreach(void (IndexIntf::*methodPtr)(A1,A2,A3,A4,A5,A6,A7,A8),A1 a1,A2 a2,A3 a3,A4 a4,A5 a5,A6 a6,A7 a7,A8 a8)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
QListIterator<IndexIntf> li(m_intfs);
|
|
Packit |
1c1d7e |
for (li.toFirst();li.current();++li) (li.current()->*methodPtr)(a1,a2,a3,a4,a5,a6,a7,a8);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
template<typename A1,typename A2,typename A3,typename A4,typename A5,typename A6,typename A7,typename A8,typename A9>
|
|
Packit |
1c1d7e |
void foreach(void (IndexIntf::*methodPtr)(A1,A2,A3,A4,A5,A6,A7,A8,A9),A1 a1,A2 a2,A3 a3,A4 a4,A5 a5,A6 a6,A7 a7,A8 a8,A9 a9)
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
QListIterator<IndexIntf> li(m_intfs);
|
|
Packit |
1c1d7e |
for (li.toFirst();li.current();++li) (li.current()->*methodPtr)(a1,a2,a3,a4,a5,a6,a7,a8,a9);
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
public:
|
|
Packit |
1c1d7e |
/** Creates a list of indexes */
|
|
Packit |
1c1d7e |
IndexList() { m_intfs.setAutoDelete(TRUE); m_enabled=TRUE; }
|
|
Packit |
1c1d7e |
/** Add an index generator to the list */
|
|
Packit |
1c1d7e |
void addIndex(IndexIntf *intf)
|
|
Packit |
1c1d7e |
{ m_intfs.append(intf); }
|
|
Packit |
1c1d7e |
void disable()
|
|
Packit |
1c1d7e |
{ m_enabled = FALSE; }
|
|
Packit |
1c1d7e |
void enable()
|
|
Packit |
1c1d7e |
{ m_enabled = TRUE; }
|
|
Packit |
1c1d7e |
bool isEnabled() const
|
|
Packit |
1c1d7e |
{ return m_enabled; }
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
// IndexIntf implementation
|
|
Packit |
1c1d7e |
void initialize()
|
|
Packit |
1c1d7e |
{ foreach(&IndexIntf::initialize); }
|
|
Packit |
1c1d7e |
void finalize()
|
|
Packit |
1c1d7e |
{ foreach(&IndexIntf::finalize); }
|
|
Packit |
1c1d7e |
void incContentsDepth()
|
|
Packit |
1c1d7e |
{ if (m_enabled) foreach(&IndexIntf::incContentsDepth); }
|
|
Packit |
1c1d7e |
void decContentsDepth()
|
|
Packit |
1c1d7e |
{ if (m_enabled) foreach(&IndexIntf::decContentsDepth); }
|
|
Packit |
1c1d7e |
void addContentsItem(bool isDir, const char *name, const char *ref,
|
|
Packit |
1c1d7e |
const char *file, const char *anchor,bool separateIndex=FALSE,bool addToNavIndex=FALSE,
|
|
Packit |
1c1d7e |
Definition *def=0)
|
|
Packit |
1c1d7e |
{ if (m_enabled) foreach<bool,const char *,const char *,const char *,const char*,bool,bool,Definition *>
|
|
Packit |
1c1d7e |
(&IndexIntf::addContentsItem,isDir,name,ref,file,anchor,separateIndex,addToNavIndex,def); }
|
|
Packit |
1c1d7e |
void addIndexItem(Definition *context,MemberDef *md,const char *sectionAnchor=0,const char *title=0)
|
|
Packit |
1c1d7e |
{ if (m_enabled) foreach<Definition *,MemberDef *,const char *,const char *>
|
|
Packit |
1c1d7e |
(&IndexIntf::addIndexItem,context,md,sectionAnchor,title); }
|
|
Packit |
1c1d7e |
void addIndexFile(const char *name)
|
|
Packit |
1c1d7e |
{ if (m_enabled) foreach<const char *>(&IndexIntf::addIndexFile,name); }
|
|
Packit |
1c1d7e |
void addImageFile(const char *name)
|
|
Packit |
1c1d7e |
{ if (m_enabled) foreach<const char *>(&IndexIntf::addImageFile,name); }
|
|
Packit |
1c1d7e |
void addStyleSheetFile(const char *name)
|
|
Packit |
1c1d7e |
{ if (m_enabled) foreach<const char *>(&IndexIntf::addStyleSheetFile,name); }
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
private:
|
|
Packit |
1c1d7e |
bool m_enabled;
|
|
Packit |
1c1d7e |
};
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
enum IndexSections
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
isTitlePageStart,
|
|
Packit |
1c1d7e |
isTitlePageAuthor,
|
|
Packit |
1c1d7e |
isMainPage,
|
|
Packit |
1c1d7e |
isModuleIndex,
|
|
Packit |
1c1d7e |
isDirIndex,
|
|
Packit |
1c1d7e |
isNamespaceIndex,
|
|
Packit |
1c1d7e |
isClassHierarchyIndex,
|
|
Packit |
1c1d7e |
isCompoundIndex,
|
|
Packit |
1c1d7e |
isFileIndex,
|
|
Packit |
1c1d7e |
isPageIndex,
|
|
Packit |
1c1d7e |
isModuleDocumentation,
|
|
Packit |
1c1d7e |
isDirDocumentation,
|
|
Packit |
1c1d7e |
isNamespaceDocumentation,
|
|
Packit |
1c1d7e |
isClassDocumentation,
|
|
Packit |
1c1d7e |
isFileDocumentation,
|
|
Packit |
1c1d7e |
isExampleDocumentation,
|
|
Packit |
1c1d7e |
isPageDocumentation,
|
|
Packit |
1c1d7e |
isPageDocumentation2,
|
|
Packit |
1c1d7e |
isEndIndex
|
|
Packit |
1c1d7e |
};
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
enum HighlightedItem
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
HLI_None=0,
|
|
Packit |
1c1d7e |
HLI_Main,
|
|
Packit |
1c1d7e |
HLI_Modules,
|
|
Packit |
1c1d7e |
//HLI_Directories,
|
|
Packit |
1c1d7e |
HLI_Namespaces,
|
|
Packit |
1c1d7e |
HLI_Hierarchy,
|
|
Packit |
1c1d7e |
HLI_Classes,
|
|
Packit |
1c1d7e |
HLI_Annotated,
|
|
Packit |
1c1d7e |
HLI_Files,
|
|
Packit |
1c1d7e |
HLI_NamespaceMembers,
|
|
Packit |
1c1d7e |
HLI_Functions,
|
|
Packit |
1c1d7e |
HLI_Globals,
|
|
Packit |
1c1d7e |
HLI_Pages,
|
|
Packit |
1c1d7e |
HLI_Examples,
|
|
Packit |
1c1d7e |
HLI_Search,
|
|
Packit |
1c1d7e |
HLI_UserGroup,
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
HLI_ClassVisible,
|
|
Packit |
1c1d7e |
HLI_NamespaceVisible,
|
|
Packit |
1c1d7e |
HLI_FileVisible
|
|
Packit |
1c1d7e |
};
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
enum ClassMemberHighlight
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
CMHL_All = 0,
|
|
Packit |
1c1d7e |
CMHL_Functions,
|
|
Packit |
1c1d7e |
CMHL_Variables,
|
|
Packit |
1c1d7e |
CMHL_Typedefs,
|
|
Packit |
1c1d7e |
CMHL_Enums,
|
|
Packit |
1c1d7e |
CMHL_EnumValues,
|
|
Packit |
1c1d7e |
CMHL_Properties,
|
|
Packit |
1c1d7e |
CMHL_Events,
|
|
Packit |
1c1d7e |
CMHL_Related,
|
|
Packit |
1c1d7e |
CMHL_Total = CMHL_Related+1
|
|
Packit |
1c1d7e |
};
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
enum FileMemberHighlight
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
FMHL_All = 0,
|
|
Packit |
1c1d7e |
FMHL_Functions,
|
|
Packit |
1c1d7e |
FMHL_Variables,
|
|
Packit |
1c1d7e |
FMHL_Typedefs,
|
|
Packit |
1c1d7e |
FMHL_Enums,
|
|
Packit |
1c1d7e |
FMHL_EnumValues,
|
|
Packit |
1c1d7e |
FMHL_Defines,
|
|
Packit |
1c1d7e |
FMHL_Total = FMHL_Defines+1
|
|
Packit |
1c1d7e |
};
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
enum NamespaceMemberHighlight
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
NMHL_All = 0,
|
|
Packit |
1c1d7e |
NMHL_Functions,
|
|
Packit |
1c1d7e |
NMHL_Variables,
|
|
Packit |
1c1d7e |
NMHL_Typedefs,
|
|
Packit |
1c1d7e |
NMHL_Enums,
|
|
Packit |
1c1d7e |
NMHL_EnumValues,
|
|
Packit |
1c1d7e |
NMHL_Total = NMHL_EnumValues+1
|
|
Packit |
1c1d7e |
};
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
enum ClassHighlight
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
CHL_All = 0,
|
|
Packit |
1c1d7e |
CHL_Classes,
|
|
Packit |
1c1d7e |
CHL_Structs,
|
|
Packit |
1c1d7e |
CHL_Unions,
|
|
Packit |
1c1d7e |
CHL_Interfaces,
|
|
Packit |
1c1d7e |
CHL_Protocols,
|
|
Packit |
1c1d7e |
CHL_Categories,
|
|
Packit |
1c1d7e |
CHL_Exceptions,
|
|
Packit |
1c1d7e |
CHL_Total = CHL_Exceptions+1
|
|
Packit |
1c1d7e |
};
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void writeGraphInfo(OutputList &ol);
|
|
Packit |
1c1d7e |
void writeIndexHierarchy(OutputList &ol);
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void countDataStructures();
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
extern int annotatedClasses;
|
|
Packit |
1c1d7e |
extern int hierarchyClasses;
|
|
Packit |
1c1d7e |
extern int documentedFiles;
|
|
Packit |
1c1d7e |
extern int documentedGroups;
|
|
Packit |
1c1d7e |
extern int documentedNamespaces;
|
|
Packit |
1c1d7e |
extern int indexedPages;
|
|
Packit |
1c1d7e |
extern int documentedClassMembers[CMHL_Total];
|
|
Packit |
1c1d7e |
extern int documentedFileMembers[FMHL_Total];
|
|
Packit |
1c1d7e |
extern int documentedNamespaceMembers[NMHL_Total];
|
|
Packit |
1c1d7e |
extern int documentedDirs;
|
|
Packit |
1c1d7e |
extern int documentedHtmlFiles;
|
|
Packit |
1c1d7e |
extern int documentedPages;
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void startTitle(OutputList &ol,const char *fileName,Definition *def=0);
|
|
Packit |
1c1d7e |
void endTitle(OutputList &ol,const char *fileName,const char *name);
|
|
Packit |
1c1d7e |
void startFile(OutputList &ol,const char *name,const char *manName,
|
|
Packit |
1c1d7e |
const char *title,HighlightedItem hli=HLI_None,
|
|
Packit |
1c1d7e |
bool additionalIndices=FALSE,const char *altSidebarName=0);
|
|
Packit |
1c1d7e |
void endFile(OutputList &ol,bool skipNavIndex=FALSE,bool skipEndContents=FALSE,
|
|
Packit |
1c1d7e |
const QCString &navPath=QCString());
|
|
Packit |
1c1d7e |
void endFileWithNavPath(Definition *d,OutputList &ol);
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
void initClassMemberIndices();
|
|
Packit |
1c1d7e |
void initFileMemberIndices();
|
|
Packit |
1c1d7e |
void initNamespaceMemberIndices();
|
|
Packit |
1c1d7e |
void addClassMemberNameToIndex(MemberDef *md);
|
|
Packit |
1c1d7e |
void addFileMemberNameToIndex(MemberDef *md);
|
|
Packit |
1c1d7e |
void addNamespaceMemberNameToIndex(MemberDef *md);
|
|
Packit |
1c1d7e |
QCString fixSpaces(const QCString &s);
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
#endif
|