My Project
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
namespacedef.h
Go to the documentation of this file.
1 /******************************************************************************
2  *
3  *
4  *
5  * Copyright (C) 1997-2015 by Dimitri van Heesch.
6  *
7  * Permission to use, copy, modify, and distribute this software and its
8  * documentation under the terms of the GNU General Public License is hereby
9  * granted. No representations are made about the suitability of this software
10  * for any purpose. It is provided "as is" without express or implied warranty.
11  * See the GNU General Public License for more details.
12  *
13  * Documents produced by Doxygen are derivative works derived from the
14  * input used in their production; they are not affected by this license.
15  *
16  */
17 
18 #ifndef NAMESPACEDEF_H
19 #define NAMESPACEDEF_H
20 
21 #include <qstrlist.h>
22 #include <qdict.h>
23 #include "sortdict.h"
24 #include "definition.h"
25 #include "filedef.h"
26 
27 class MemberList;
28 class ClassDef;
29 class ClassList;
30 class OutputList;
31 class ClassSDict;
32 class MemberDef;
33 class NamespaceList;
34 class MemberGroupSDict;
35 class NamespaceSDict;
36 class FTextStream;
37 
39 class NamespaceDef : public Definition
40 {
41  public:
42  NamespaceDef(const char *defFileName,int defLine,int defColumn,
43  const char *name,const char *ref=0,
44  const char *refFile=0,const char*type=0,
45  bool isPublished=false);
46  ~NamespaceDef();
47  DefType definitionType() const { return TypeNamespace; }
48  QCString getOutputFileBase() const;
49  QCString anchor() const { return QCString(); }
50  void insertUsedFile(FileDef *fd);
51 
53  void writeMemberPages(OutputList &ol);
54  void writeQuickMemberLinks(OutputList &ol,MemberDef *currentMd) const;
55  void writeTagFile(FTextStream &);
56 
57  void insertClass(ClassDef *cd);
58  void insertNamespace(NamespaceDef *nd);
59  void insertMember(MemberDef *md);
60 
61  void computeAnchors();
62  int countMembers();
67  void combineUsingRelations();
68  QCString displayName(bool=TRUE) const;
69  QCString localName() const;
70 
71  bool isConstantGroup() const { return CONSTANT_GROUP == m_type; }
72  bool isModule() const { return MODULE == m_type; }
73  bool isLibrary() const { return LIBRARY == m_type; }
74 
75  bool isLinkableInProject() const;
76  bool isLinkable() const;
77  bool hasDetailedDescription() const;
81  void sortMemberLists();
82 
83  virtual Definition *findInnerCompound(const char *name);
85  void addListReferences();
86  void setFileName(const QCString &fn);
87 
88  bool subGrouping() const { return m_subGrouping; }
89 
91  const QList<MemberList> &getMemberLists() const { return m_memberLists; }
92  MemberDef *getMemberByName(const QCString &) const;
93 
96 
98  ClassSDict *getClassSDict() const { return classSDict; }
99 
102 
103  QCString title() const;
104  QCString compoundTypeString() const;
105 
106  bool visited;
107 
108  private:
111  void writeMemberDeclarations(OutputList &ol,MemberListType lt,const QCString &title);
112  void writeMemberDocumentation(OutputList &ol,MemberListType lt,const QCString &title);
113  void writeDetailedDescription(OutputList &ol,const QCString &title);
117  void writeClassDeclarations(OutputList &ol,const QCString &title);
118  void writeInlineClasses(OutputList &ol);
119  void writeNamespaceDeclarations(OutputList &ol,const QCString &title,
120  bool isConstantGroup=false);
121  void writeMemberGroups(OutputList &ol);
122  void writeAuthorSection(OutputList &ol);
125  void writeSummaryLinks(OutputList &ol);
127 
128  QCString fileName;
130 
134 
136  QList<MemberList> m_memberLists;
143 };
144 
146 class NamespaceList : public QList<NamespaceDef>
147 {
148  public:
150  int compareValues(const NamespaceDef *nd1,const NamespaceDef *nd2) const
151  {
152  return qstricmp(nd1->name(), nd2->name());
153  }
154 };
155 
157 class NamespaceListIterator : public QListIterator<NamespaceDef>
158 {
159  public:
161  QListIterator<NamespaceDef>(l) {}
162 };
163 
165 class NamespaceDict : public QDict<NamespaceDef>
166 {
167  public:
168  NamespaceDict(int size) : QDict<NamespaceDef>(size) {}
170 };
171 
173 class NamespaceSDict : public SDict<NamespaceDef>
174 {
175  public:
176  NamespaceSDict(int size=17) : SDict<NamespaceDef>(size) {}
178  void writeDeclaration(OutputList &ol,const char *title,
179  bool isConstantGroup=false, bool localName=FALSE);
180  bool declVisible() const;
181  private:
182  int compareValues(const NamespaceDef *item1,const NamespaceDef *item2) const
183  {
184  return qstricmp(item1->name(),item2->name());
185  }
186 };
187 
188 
189 
190 #endif