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

List of cross-referenced items. More...

#include <src/reflist.h>

Collaboration diagram for RefList:

Public Member Functions

 RefList (const DString &listName, const DString &pageTitle, const DString &secTitle)
bool isEnabled () const
RefItemadd ()
RefItemfind (int itemId)
DString listName () const
DString fileName () const
DString pageTitle () const
DString sectionTitle () const
void generatePage ()

Private Attributes

int m_id = 0
DString m_listName
DString m_fileName
DString m_pageTitle
DString m_secTitle
std::vector< std::unique_ptr< RefItem > > m_entries
std::unordered_map< int, RefItem * > m_lookup

Detailed Description

List of cross-referenced items.

This class represents a list of items that are put at a certain point in the documentation by some special command and are collected in a list. The items cross-reference the documentation and the list.

Examples are the todo list, the test list and the bug list, introduced by the \todo, \test, and \bug commands respectively.

Definition at line 79 of file reflist.h.

Constructor & Destructor Documentation

◆ RefList()

RefList::RefList ( const DString & listName,
const DString & pageTitle,
const DString & secTitle )

Create a list of items that are cross referenced with documentation blocks

Parameters
listNameString representing the name of the list.
pageTitleString representing the title of the list page.
secTitleString representing the title of the section.

Definition at line 24 of file reflist.cpp.

24 :
27{
28}
DString m_pageTitle
Definition reflist.h:112
DString listName() const
Definition reflist.h:101
DString m_secTitle
Definition reflist.h:113
DString m_listName
Definition reflist.h:110
DString pageTitle() const
Definition reflist.h:103
DString m_fileName
Definition reflist.h:111
DString convertNameToFile(const DString &name, bool allowDots, bool allowUnderscore)
Definition util.cpp:3545

References convertNameToFile(), listName(), m_fileName, m_listName, m_pageTitle, m_secTitle, and pageTitle().

Member Function Documentation

◆ add()

RefItem * RefList::add ( )

Adds a new item to the list.

Returns
A unique id for this item.

Definition at line 30 of file reflist.cpp.

31{
32 m_id++;
33 std::unique_ptr<RefItem> item = std::make_unique<RefItem>(m_id,this);
34 RefItem *result = item.get();
35 m_entries.push_back(std::move(item));
36 m_lookup.emplace(m_id,result);
37 return result;
38}
std::unordered_map< int, RefItem * > m_lookup
Definition reflist.h:115
std::vector< std::unique_ptr< RefItem > > m_entries
Definition reflist.h:114
int m_id
Definition reflist.h:109

References m_entries, m_id, and m_lookup.

Referenced by addXRefItemToEntry().

◆ fileName()

DString RefList::fileName ( ) const
inline

Definition at line 102 of file reflist.h.

102{ return m_fileName; }

References m_fileName.

Referenced by DocXRefItem::parse().

◆ find()

RefItem * RefList::find ( int itemId)

Returns an item given it's id that is obtained with addRefItem()

Parameters
itemIditem's identifier.
Returns
A pointer to the todo item's structure.

Definition at line 40 of file reflist.cpp.

41{
42 auto it = m_lookup.find(itemId);
43 return it!=m_lookup.end() ? it->second : nullptr;
44}

References m_lookup.

Referenced by DocXRefItem::parse().

◆ generatePage()

void RefList::generatePage ( )

Definition at line 55 of file reflist.cpp.

56{
57 if (!isEnabled()) return;
58
59 std::stable_sort(m_entries.begin(),m_entries.end(),
60 [](const std::unique_ptr<RefItem> &left,const std::unique_ptr<RefItem> &right)
61 { return dstricmp_sort(left->title(),right->title()) < 0; });
62 //RefItem *item;
63 DString doc;
64 int cnt = 0;
65 doc += "<dl class=\"reflist\">";
66 DString lastGroup;
67 bool first=true;
68 for (const std::unique_ptr<RefItem> &item : m_entries)
69 {
70 if (item->name().empty()) continue;
71 cnt++;
72 bool startNewGroup = item->group()!=lastGroup;
73 if (startNewGroup)
74 {
75 if (!first)
76 {
77 doc += "</dd>";
78 }
79 doc += " <dt>";
80 doc += "\n";
81 if (item->scope())
82 {
83 if (item->scope()->name() != "<globalScope>")
84 {
85 doc += "\\_setscope ";
86 doc += item->scope()->name();
87 doc += " ";
88 }
89 }
90 doc += item->prefix();
91 doc += " \\_internalref ";
92 doc += item->name();
93 // escape \'s in title, see issue #5901
94 DString escapedTitle = substitute(item->title(),"\\","\\\\");
95 doc += " \""+escapedTitle+"\" ";
96 // write declaration in case a function with arguments
97 if (!item->args().empty())
98 {
99 // escape @'s in argument list, needed for Java annotations (see issue #6208)
100 // escape \'s in argument list (see issue #6533)
101 doc += substitute(substitute(item->args(),"@","@@"),"\\","\\\\");
102 }
103 doc += "</dt><dd>";
104 }
105 else
106 {
107 doc += "<p>";
108 }
109 doc += " \\anchor ";
110 doc += item->anchor();
111 doc += " ";
112 doc += item->text();
113 lastGroup = item->group();
114 first = false;
115 }
116 if (!first)
117 {
118 doc += "</dd>";
119 }
120 doc += "</dl>\n";
121 //printf("generatePage('%s')\n",doc.data());
122 if (cnt>0)
123 {
124 addRelatedPage(m_listName,m_pageTitle,doc,m_fileName,1,1,RefItemVector(),nullptr,nullptr,true);
125 }
126}
bool isEnabled() const
Definition reflist.cpp:46
DString substitute(const DString &s, const DString &src, const DString &dst)
substitute all occurrences of src in s by dst
Definition dstring.cpp:476
std::vector< RefItem * > RefItemVector
Definition reflist.h:133
PageDef * addRelatedPage(const DString &name, const DString &ptitle, const DString &doc, const DString &fileName, int docLine, int startLine, const RefItemVector &sli, GroupDef *gd, const TagInfo *tagInfo, bool xref, SrcLangExt lang)
Definition util.cpp:4736

References addRelatedPage(), isEnabled(), m_entries, m_fileName, m_listName, m_pageTitle, and substitute().

◆ isEnabled()

bool RefList::isEnabled ( ) const

Definition at line 46 of file reflist.cpp.

47{
48 if (m_listName=="todo" && !Config_getBool(GENERATE_TODOLIST)) return false;
49 else if (m_listName=="test" && !Config_getBool(GENERATE_TESTLIST)) return false;
50 else if (m_listName=="bug" && !Config_getBool(GENERATE_BUGLIST)) return false;
51 else if (m_listName=="deprecated" && !Config_getBool(GENERATE_DEPRECATEDLIST)) return false;
52 return true;
53}
#define Config_getBool(name)
Definition config.h:33

References Config_getBool, and m_listName.

Referenced by generatePage(), and DocXRefItem::parse().

◆ listName()

DString RefList::listName ( ) const
inline

Definition at line 101 of file reflist.h.

101{ return m_listName; }

References m_listName.

Referenced by DefinitionImpl::_getXRefListId(), addXRefItemToEntry(), and RefList().

◆ pageTitle()

DString RefList::pageTitle ( ) const
inline

Definition at line 103 of file reflist.h.

103{ return m_pageTitle; }

References m_pageTitle.

Referenced by RefList().

◆ sectionTitle()

DString RefList::sectionTitle ( ) const
inline

Definition at line 104 of file reflist.h.

104{ return m_secTitle; }

References m_secTitle.

Referenced by DocXRefItem::parse().

Member Data Documentation

◆ m_entries

std::vector< std::unique_ptr< RefItem > > RefList::m_entries
private

Definition at line 114 of file reflist.h.

Referenced by add(), and generatePage().

◆ m_fileName

DString RefList::m_fileName
private

Definition at line 111 of file reflist.h.

Referenced by fileName(), generatePage(), and RefList().

◆ m_id

int RefList::m_id = 0
private

Definition at line 109 of file reflist.h.

Referenced by add().

◆ m_listName

DString RefList::m_listName
private

Definition at line 110 of file reflist.h.

Referenced by generatePage(), isEnabled(), listName(), and RefList().

◆ m_lookup

std::unordered_map< int, RefItem* > RefList::m_lookup
private

Definition at line 115 of file reflist.h.

Referenced by add(), and find().

◆ m_pageTitle

DString RefList::m_pageTitle
private

Definition at line 112 of file reflist.h.

Referenced by generatePage(), pageTitle(), and RefList().

◆ m_secTitle

DString RefList::m_secTitle
private

Definition at line 113 of file reflist.h.

Referenced by RefList(), and sectionTitle().


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