Chameleon

Chameleon Svn Source Tree

Root/branches/xZenu/src/util/doxygen/src/memberdef.h

Source at commit 1322 created 12 years 8 months ago.
By meklort, Add doxygen to utils folder
1/******************************************************************************
2 *
3 *
4 *
5 * Copyright (C) 1997-2011 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 MEMBERDEF_H
19#define MEMBERDEF_H
20
21#include "qtbc.h"
22#include <qlist.h>
23#include <qdict.h>
24#include <qstack.h>
25
26#include "entry.h"
27#include "definition.h"
28#include "sortdict.h"
29
30class ClassDef;
31class NamespaceDef;
32class GroupDef;
33class FileDef;
34class MemberList;
35class MemberGroup;
36class ExampleSDict;
37class OutputList;
38class GroupDef;
39class QTextStream;
40class ArgumentList;
41class MemberDefImpl;
42
43struct SourceReference
44{
45 FileDef *fd;
46 QCString anchor;
47};
48
49class MemberDef : public Definition
50{
51 public:
52
53 enum MemberType {
54 Define,
55 Function,
56 Variable,
57 Typedef,
58 Enumeration,
59 EnumValue,
60 Signal,
61 Slot,
62 Friend,
63 DCOP,
64 Property,
65 Event
66 };
67
68 MemberDef(const char *defFileName,int defLine,
69 const char *type,const char *name,const char *args,
70 const char *excp,Protection prot,Specifier virt,bool stat,
71 Relationship related,MemberType t,const ArgumentList *tal,
72 const ArgumentList *al);
73 ~MemberDef();
74 DefType definitionType() const { return TypeMember; }
75 // move this member into a different scope
76 void moveTo(Definition *);
77
78 //-----------------------------------------------------------------------------------
79 // ---- getters -----
80 //-----------------------------------------------------------------------------------
81
82 // link id
83 QCString getOutputFileBase() const;
84 QCString getReference() const;
85 QCString anchor() const;
86
87 const char *declaration() const;
88 const char *definition() const;
89 const char *typeString() const;
90 const char *argsString() const;
91 const char *excpString() const;
92 const char *bitfieldString() const;
93 const char *extraTypeChars() const;
94 const QCString &initializer() const;
95 int initializerLines() const;
96 int getMemberSpecifiers() const;
97 MemberList *getSectionList(Definition *d) const;
98
99 // scope query members
100 ClassDef *getClassDef() const;
101 FileDef *getFileDef() const;
102 NamespaceDef* getNamespaceDef() const;
103
104 // grabbing the property read/write accessor names
105 const char *getReadAccessor() const;
106 const char *getWriteAccessor() const;
107
108 // querying the grouping definition
109 GroupDef *getGroupDef() const;
110 Grouping::GroupPri_t getGroupPri() const;
111 const char *getGroupFileName() const;
112 int getGroupStartLine() const;
113 bool getGroupHasDocs() const;
114 QCString qualifiedName() const;
115 QCString objCMethodName(bool localLink,bool showStatic) const;
116
117 // direct kind info
118 Protection protection() const;
119 Specifier virtualness(int count=0) const;
120 MemberType memberType() const;
121 QCString memberTypeName() const;
122
123 // getter methods
124 bool isSignal() const;
125 bool isSlot() const;
126 bool isVariable() const;
127 bool isEnumerate() const;
128 bool isEnumValue() const;
129 bool isTypedef() const;
130 bool isFunction() const;
131 bool isDefine() const;
132 bool isFriend() const;
133 bool isDCOP() const;
134 bool isProperty() const;
135 bool isEvent() const;
136 bool isRelated() const;
137 bool isForeign() const;
138 bool isStatic() const;
139 bool isInline() const;
140 bool isExplicit() const;
141 bool isMutable() const;
142 bool isGettable() const;
143 bool isSettable() const;
144 bool isReadable() const;
145 bool isWritable() const;
146 bool isAddable() const;
147 bool isRemovable() const;
148 bool isRaisable() const;
149 bool isFinal() const;
150 bool isAbstract() const;
151 bool isOverride() const;
152 bool isInitonly() const;
153 bool isOptional() const;
154 bool isRequired() const;
155 bool isNonAtomic() const;
156 bool isCopy() const;
157 bool isAssign() const;
158 bool isRetain() const;
159 bool isNew() const;
160 bool isSealed() const;
161 bool isImplementation() const;
162 bool isExternal() const;
163 bool isTemplateSpecialization() const;
164 bool hasDocumentedParams() const;
165 bool hasDocumentedReturnType() const;
166 bool isObjCMethod() const;
167 bool isObjCProperty() const;
168 bool isConstructor() const;
169 bool isDestructor() const;
170 bool hasOneLineInitializer() const;
171 bool hasMultiLineInitializer() const;
172 bool protectionVisible() const;
173
174 // output info
175 bool isLinkableInProject() const;
176 bool isLinkable() const;
177 bool hasDocumentation() const; // overrides hasDocumentation in definition.h
178 //bool hasUserDocumentation() const; // overrides hasUserDocumentation
179 bool isBriefSectionVisible() const;
180 bool isDetailedSectionVisible(bool inGroup,bool inFile) const;
181 bool isDetailedSectionLinkable() const;
182 bool isFriendClass() const;
183 bool isDocumentedFriendClass() const;
184
185 MemberDef *reimplements() const;
186 LockingPtr<MemberList> reimplementedBy() const;
187
188 //int inbodyLine() const;
189 //QCString inbodyFile() const;
190 //const QCString &inbodyDocumentation() const;
191
192 ClassDef *relatedAlso() const;
193
194 bool hasDocumentedEnumValues() const;
195 MemberDef *getAnonymousEnumType() const;
196 bool isDocsForDefinition() const;
197 MemberDef *getEnumScope() const;
198 LockingPtr<MemberList> enumFieldList() const;
199
200 bool hasExamples();
201 LockingPtr<ExampleSDict> getExamples() const;
202 bool isPrototype() const;
203
204 // argument related members
205 LockingPtr<ArgumentList> argumentList() const;
206 LockingPtr<ArgumentList> declArgumentList() const;
207 LockingPtr<ArgumentList> templateArguments() const;
208 LockingPtr< QList<ArgumentList> > definitionTemplateParameterLists() const;
209
210 // member group related members
211 int getMemberGroupId() const;
212 MemberGroup *getMemberGroup() const;
213
214 bool fromAnonymousScope() const;
215 bool anonymousDeclShown() const;
216
217 // callgraph related members
218 bool hasCallGraph() const;
219 bool hasCallerGraph() const;
220 bool visibleMemberGroup(bool hideNoHeader);
221
222 MemberDef *templateMaster() const;
223 QCString getScopeString() const;
224 ClassDef *getClassDefOfAnonymousType();
225
226 // cached typedef functions
227 bool isTypedefValCached() const;
228 ClassDef *getCachedTypedefVal() const;
229 QCString getCachedTypedefTemplSpec() const;
230 QCString getCachedResolvedTypedef() const;
231
232 MemberDef *memberDefinition() const;
233 MemberDef *memberDeclaration() const;
234 MemberDef *inheritsDocsFrom() const;
235 MemberDef *getGroupAlias() const;
236
237 ClassDef *category() const;
238
239 //-----------------------------------------------------------------------------------
240 // ---- setters -----
241 //-----------------------------------------------------------------------------------
242
243 // set functions
244 void setMemberType(MemberType t);
245 void setDefinition(const char *d);
246 void setFileDef(FileDef *fd);
247 void setAnchor(const char *a);
248 void setProtection(Protection p);
249 void setMemberSpecifiers(int s);
250 void mergeMemberSpecifiers(int s);
251 void setInitializer(const char *i);
252 void setBitfields(const char *s);
253 void setMaxInitLines(int lines);
254 void setMemberClass(ClassDef *cd);
255 void setSectionList(Definition *d,MemberList *sl);
256 void setGroupDef(GroupDef *gd,Grouping::GroupPri_t pri,
257 const QCString &fileName,int startLine,bool hasDocs,
258 MemberDef *member=0);
259 void setExplicitExternal(bool b);
260 void setReadAccessor(const char *r);
261 void setWriteAccessor(const char *w);
262 void setTemplateSpecialization(bool b);
263
264 void makeRelated();
265 void makeForeign();
266 void setHasDocumentedParams(bool b);
267 void setHasDocumentedReturnType(bool b);
268 void setInheritsDocsFrom(MemberDef *md);
269 void setTagInfo(TagInfo *i);
270 void setArgsString(const char *as);
271
272 // relation to other members
273 void setReimplements(MemberDef *md);
274 void insertReimplementedBy(MemberDef *md);
275
276 // in-body documentation
277 //void setInbodyDocumentation(const char *docs,const char *file,int line);
278
279 void setRelatedAlso(ClassDef *cd);
280
281 // enumeration specific members
282 void insertEnumField(MemberDef *md);
283 void setEnumScope(MemberDef *md);
284 void setEnumClassScope(ClassDef *cd);
285 void setDocumentedEnumValues(bool value);
286 void setAnonymousEnumType(MemberDef *md);
287
288 // example related members
289 bool addExample(const char *anchor,const char *name,const char *file);
290
291 // prototype related members
292 void setPrototype(bool p);
293
294 // argument related members
295 void setArgumentList(ArgumentList *al);
296 void setDeclArgumentList(ArgumentList *al);
297 void setDefinitionTemplateParameterLists(QList<ArgumentList> *lists);
298 void setTypeConstraints(ArgumentList *al);
299
300 // namespace related members
301 void setNamespace(NamespaceDef *nd);
302
303 // member group related members
304 void setMemberGroup(MemberGroup *grp);
305 void setMemberGroupId(int id);
306 void makeImplementationDetail();
307
308 // anonymous scope members
309 void setFromAnonymousScope(bool b);
310 void setFromAnonymousMember(MemberDef *m);
311
312 void enableCallGraph(bool e);
313 void enableCallerGraph(bool e);
314
315 void setTemplateMaster(MemberDef *mt);
316 void addListReference(Definition *d);
317 void setDocsForDefinition(bool b);
318 void setGroupAlias(MemberDef *md);
319
320 void cacheTypedefVal(ClassDef *val,const QCString &templSpec,const QCString &resolvedType);
321 void invalidateTypedefValCache();
322
323 void invalidateCachedArgumentTypes();
324
325 // declaration <-> definition relation
326 void setMemberDefinition(MemberDef *md);
327 void setMemberDeclaration(MemberDef *md);
328
329 void setAnonymousUsed();
330 void copyArgumentNames(MemberDef *bmd);
331
332 void setCategory(ClassDef *);
333
334 void setDocumentation(const char *d,const char *docFile,int docLine,bool stripWhiteSpace=TRUE);
335 void setBriefDescription(const char *b,const char *briefFile,int briefLine);
336 void setInbodyDocumentation(const char *d,const char *inbodyFile,int inbodyLine);
337
338 //-----------------------------------------------------------------------------------
339 // --- actions ----
340 //-----------------------------------------------------------------------------------
341
342 // output generation
343 void writeDeclaration(OutputList &ol,
344 ClassDef *cd,NamespaceDef *nd,FileDef *fd,GroupDef *gd,
345 bool inGroup);
346 void writeDocumentation(MemberList *ml,OutputList &ol,
347 const char *scopeName,Definition *container,
348 bool inGroup,bool showEnumValues=FALSE,bool
349 showInline=FALSE);
350 void warnIfUndocumented();
351
352 MemberDef *createTemplateInstanceMember(ArgumentList *formalArgs,
353 ArgumentList *actualArgs);
354
355 void writeEnumDeclaration(OutputList &typeDecl,
356 ClassDef *cd,NamespaceDef *nd,FileDef *fd,GroupDef *gd);
357
358 void findSectionsInDocumentation();
359
360 bool visited;
361
362 protected:
363 void flushToDisk() const;
364 void loadFromDisk() const;
365 private:
366 void lock() const;
367 void unlock() const;
368 void saveToDisk() const;
369 void makeResident() const;
370 void _computeLinkableInProject();
371 void _computeIsConstructor();
372 void _computeIsDestructor();
373
374 static int s_indentLevel;
375 // disable copying of member defs
376 MemberDef(const MemberDef &);
377 MemberDef &operator=(const MemberDef &);
378
379 void writeLink(OutputList &ol,
380 ClassDef *cd,NamespaceDef *nd,FileDef *fd,GroupDef *gd,
381 bool onlyText=FALSE);
382
383 MemberDefImpl *m_impl;
384 int m_cacheHandle;
385 off_t m_storagePos; // location where the item is stored in file (if impl==0)
386 bool m_flushPending;
387 uchar m_isLinkableCached; // 0 = not cached, 1=FALSE, 2=TRUE
388 uchar m_isConstructorCached; // 0 = not cached, 1=FALSE, 2=TRUE
389 uchar m_isDestructorCached; // 0 = not cached, 1=FALSE, 2=TRUE
390};
391
392#endif
393

Archive Download this file

Revision: 1322