Chameleon

Chameleon Svn Source Tree

Root/branches/xZenu/src/util/doxygen/src/reflist.cpp

Source at commit 1322 created 12 years 8 months ago.
By meklort, Add doxygen to utils folder
1/******************************************************************************
2 *
3 * $Id: reflist.cpp,v 1.2 2001/03/19 19:27:41 root Exp $
4 *
5 *
6 * Copyright (C) 1997-2011 by Dimitri van Heesch.
7 *
8 * Permission to use, copy, modify, and distribute this software and its
9 * documentation under the terms of the GNU General Public License is hereby
10 * granted. No representations are made about the suitability of this software
11 * for any purpose. It is provided "as is" without express or implied warranty.
12 * See the GNU General Public License for more details.
13 *
14 * Documents produced by Doxygen are derivative works derived from the
15 * input used in their production; they are not affected by this license.
16 *
17 */
18
19#include <stdio.h>
20#include "reflist.h"
21#include "util.h"
22
23/*! Create a list of items that are cross referenced with documentation blocks
24 * @param listName String representing the name of the list.
25 * @param pageTitle String representing the title of the list page.
26 * @param secTitle String representing the title of the section.
27 */
28RefList::RefList(const char *listName,
29 const char *pageTitle,
30 const char *secTitle
31 )
32{
33 m_itemList = 0;
34 m_dict = 0;
35 m_dictIterator = 0;
36 m_id = 0;
37 m_listName = listName;
38 m_pageTitle = pageTitle;
39 m_secTitle = secTitle;
40}
41
42/*! Destroy the todo list. Currently not called! */
43RefList::~RefList()
44{
45 delete m_dictIterator;
46 delete m_dict;
47 delete m_itemList;
48}
49
50/*! Adds a new item to the list.
51 * \returns A unique id for this item.
52 */
53int RefList::addRefItem()
54{
55 if (m_dict==0)
56 {
57 m_dict = new QIntDict<RefItem>(1009);
58 m_dict->setAutoDelete(TRUE);
59 m_dictIterator = new QIntDictIterator<RefItem>(*m_dict);
60 }
61 RefItem *item = new RefItem;
62 m_id++;
63 m_dict->insert(m_id,item);
64 return m_id;
65}
66
67/*! Returns an item given it's id that is obtained with addRefItem()
68 * \param itemId item's identifier.
69 * \returns A pointer to the todo item's structure.
70 */
71RefItem *RefList::getRefItem(int itemId)
72{
73 return m_dict ? m_dict->find(itemId) : 0;
74}
75
76/*! Returns the first item in the dictionary or 0 if
77 * non is available.
78 * Items are not sorted.
79 */
80RefItem *RefList::getFirstRefItem()
81{
82 return m_dictIterator ? m_dictIterator->toFirst() : 0;
83}
84
85/*! Returns the next item in the dictionary or 0 if
86 * we are at the end of the list.
87 * Items are not sorted.
88 */
89RefItem *RefList::getNextRefItem()
90{
91 return m_dictIterator ? m_dictIterator->operator++() : 0;
92}
93
94/*! Returns the name of the list as set in the constructor. */
95QCString RefList::listName() const
96{
97 return m_listName;
98}
99
100QCString RefList::pageTitle() const
101{
102 return m_pageTitle;
103}
104
105QCString RefList::sectionTitle() const
106{
107 return m_secTitle;
108}
109
110void RefList::insertIntoList(const char *key,RefItem *item)
111{
112 if (m_itemList==0)
113 {
114 m_itemList = new SortedRefItems(1009);
115 }
116 RefItem *ri = m_itemList->find(key);
117 if (ri==0)
118 {
119 m_itemList->append(key,item);
120 }
121 else // item already added to the list (i.e. multiple item for the same
122 // entity)
123 {
124 if (ri!=item)
125 {
126 ri->extraItems.append(item);
127 }
128 }
129}
130
131void RefList::generatePage()
132{
133 if (m_itemList==0) return;
134 m_itemList->sort();
135 SDict<RefItem>::Iterator it(*m_itemList);
136 RefItem *item;
137 for (it.toFirst();(item=it.current());++it)
138 {
139 QCString doc;
140 doc = "\\anchor ";
141 doc += item->listAnchor;
142 doc += " <dl><dt>";
143 doc += item->prefix;
144 doc += " \\_internalref ";
145 doc += item->name;
146 doc += " \"";
147 doc += item->title;
148 doc += "\"";
149 if (!item->args.isEmpty()) doc += item->args;
150 doc += "</dt>\n<dd>";
151 doc += item->text;
152 QListIterator<RefItem> li(item->extraItems);
153 RefItem *extraItem;
154 for (li.toFirst();(extraItem=li.current());++li)
155 {
156 doc += "<p>" + extraItem->text;
157 }
158 doc += "</dd></dl>\n";
159 addRelatedPage(m_listName,m_pageTitle,doc,0,m_listName,1,0,0,0);
160 }
161}
162
163

Archive Download this file

Revision: 1322