Doxygen
Loading...
Searching...
No Matches
IndexList Class Reference

A list of index interfaces. More...

#include <src/indexlist.h>

Public Member Functions

void disable ()
 disable the indices
void enable ()
 enable the indices
template<class T, class... As>
void addIndex (As &&... args)
 Add an index generator to the list, using a syntax similar to std::make_unique<T>().
void initialize ()
void finalize ()
void incContentsDepth ()
void decContentsDepth ()
void addContentsItem (bool isDir, const DString &name, const DString &ref, const DString &file, const DString &anchor, bool separateIndex=false, bool addToNavIndex=false, const Definition *def=nullptr, const DString &nameAsHtml=DString())
void addIndexItem (const Definition *context, const MemberDef *md, const DString &sectionAnchor=DString(), const DString &title=DString())
void addIndexFile (const DString &name)
void addImageFile (const DString &name)
void addStyleSheetFile (const DString &name)

Private Types

using IndexPtr = std::unique_ptr<IndexIntf>

Private Member Functions

template<class... Ts, class... As>
void foreach (void(IndexIntf::*methodPtr)(Ts...), As &&... args)
template<class... Ts, class... As>
void foreach_locked (void(IndexIntf::*methodPtr)(Ts...), As &&... args)

Private Attributes

bool m_enabled = true
std::mutex m_mutex
std::vector< IndexPtrm_indices

Detailed Description

A list of index interfaces.

This class itself implements all methods of IndexIntf and just forwards the calls to all items in the list (composite design pattern).

Definition at line 64 of file indexlist.h.

Member Typedef Documentation

◆ IndexPtr

using IndexList::IndexPtr = std::unique_ptr<IndexIntf>
private

Definition at line 66 of file indexlist.h.

Member Function Documentation

◆ addContentsItem()

void IndexList::addContentsItem ( bool isDir,
const DString & name,
const DString & ref,
const DString & file,
const DString & anchor,
bool separateIndex = false,
bool addToNavIndex = false,
const Definition * def = nullptr,
const DString & nameAsHtml = DString() )
inline

Definition at line 113 of file indexlist.h.

116 { if (m_enabled) foreach_locked(&IndexIntf::addContentsItem,isDir,name,ref,file,anchor,separateIndex,addToNavIndex,def,nameAsHtml); }
virtual void addContentsItem(bool isDir, const DString &name, const DString &ref, const DString &file, const DString &anchor, bool separateIndex, bool addToNavIndex, const Definition *def, const DString &nameAsHtml)=0
bool m_enabled
Definition indexlist.h:131
void foreach_locked(void(IndexIntf::*methodPtr)(Ts...), As &&... args)
Definition indexlist.h:78

References IndexIntf::addContentsItem(), foreach_locked(), and m_enabled.

Referenced by addMembersToIndex(), PageDefImpl::addSectionsToIndex(), writeAlphabeticalExceptionIndex(), writeAlphabeticalIndex(), writeAlphabeticalInterfaceIndex(), writeAlphabeticalStructIndex(), writeAnnotatedIndexGeneric(), writeClassTreeForList(), writeClassTreeInsideNamespaceElement(), writeClassTreeToOutput(), writeConceptList(), writeDirHierarchy(), writeDirTreeNode(), writeExampleIndex(), writeFileIndex(), writeHierarchicalExceptionIndex(), writeHierarchicalIndex(), writeHierarchicalInterfaceIndex(), writeMemberToIndex(), writeNamespaceIndex(), and writeNamespaceTreeElement().

◆ addImageFile()

◆ addIndex()

template<class T, class... As>
void IndexList::addIndex ( As &&... args)
inline

Add an index generator to the list, using a syntax similar to std::make_unique<T>().

Definition at line 98 of file indexlist.h.

99 { m_indices.push_back(std::make_unique<T>(std::forward<As>(args)...)); }
std::vector< IndexPtr > m_indices
Definition indexlist.h:133

References m_indices.

Referenced by parseInput().

◆ addIndexFile()

void IndexList::addIndexFile ( const DString & name)
inline

Definition at line 121 of file indexlist.h.

virtual void addIndexFile(const DString &name)=0

References IndexIntf::addIndexFile(), foreach_locked(), and m_enabled.

Referenced by HtmlGenerator::startFile().

◆ addIndexItem()

void IndexList::addIndexItem ( const Definition * context,
const MemberDef * md,
const DString & sectionAnchor = DString(),
const DString & title = DString() )
inline

Definition at line 118 of file indexlist.h.

119 { if (m_enabled) foreach_locked(&IndexIntf::addIndexItem,context,md,sectionAnchor,title); }
virtual void addIndexItem(const Definition *context, const MemberDef *md, const DString &sectionAnchor, const DString &title)=0

References IndexIntf::addIndexItem(), foreach_locked(), and m_enabled.

Referenced by addToIndices(), and HtmlDocVisitor::operator()().

◆ addStyleSheetFile()

void IndexList::addStyleSheetFile ( const DString & name)
inline

◆ decContentsDepth()

◆ disable()

void IndexList::disable ( )
inline

disable the indices

Definition at line 89 of file indexlist.h.

90 { m_enabled = false; }

References m_enabled.

Referenced by writeAnnotatedIndexGeneric(), writeHierarchicalExceptionIndex(), writeHierarchicalIndex(), and writeHierarchicalInterfaceIndex().

◆ enable()

void IndexList::enable ( )
inline

enable the indices

Definition at line 93 of file indexlist.h.

94 { m_enabled = true; }

References m_enabled.

Referenced by writeAnnotatedIndexGeneric(), writeHierarchicalExceptionIndex(), writeHierarchicalIndex(), and writeHierarchicalInterfaceIndex().

◆ finalize()

void IndexList::finalize ( )
inline

Definition at line 104 of file indexlist.h.

105 { foreach(&IndexIntf::finalize); }
virtual void finalize()=0

References IndexIntf::finalize().

Referenced by generateOutput().

◆ foreach()

template<class... Ts, class... As>
void IndexList::foreach ( void(IndexIntf::* methodPtr )(Ts...),
As &&... args )
inlineprivate

Definition at line 69 of file indexlist.h.

70 {
71 for (const auto &intf : m_indices)
72 {
73 (intf.get()->*methodPtr)(std::forward<As>(args)...);
74 }
75 }

◆ foreach_locked()

template<class... Ts, class... As>
void IndexList::foreach_locked ( void(IndexIntf::* methodPtr )(Ts...),
As &&... args )
inlineprivate

Definition at line 78 of file indexlist.h.

79 {
80 std::lock_guard<std::mutex> lock(m_mutex);
81 for (const auto &intf : m_indices)
82 {
83 (intf.get()->*methodPtr)(std::forward<As>(args)...);
84 }
85 }
std::mutex m_mutex
Definition indexlist.h:132

References m_indices, and m_mutex.

Referenced by addContentsItem(), addImageFile(), addIndexFile(), addIndexItem(), addStyleSheetFile(), decContentsDepth(), and incContentsDepth().

◆ incContentsDepth()

◆ initialize()

void IndexList::initialize ( )
inline

Definition at line 101 of file indexlist.h.

102 { foreach(&IndexIntf::initialize); }
virtual void initialize()=0

References IndexIntf::initialize().

Referenced by parseInput().

Member Data Documentation

◆ m_enabled

bool IndexList::m_enabled = true
private

◆ m_indices

std::vector<IndexPtr> IndexList::m_indices
private

Definition at line 133 of file indexlist.h.

Referenced by addIndex(), and foreach_locked().

◆ m_mutex

std::mutex IndexList::m_mutex
private

Definition at line 132 of file indexlist.h.

Referenced by foreach_locked().


The documentation for this class was generated from the following file: