Doxygen
defgen.cpp
浏览该文件的文档.
1 /******************************************************************************
2  *
3  *
4  *
5  *
6  * Copyright (C) 1997-2015 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 <stdlib.h>
20 
21 #include <fstream>
22 
23 #include "defgen.h"
24 #include "doxygen.h"
25 #include "message.h"
26 #include "config.h"
27 #include "classlist.h"
28 #include "util.h"
29 #include "defargs.h"
30 #include "outputgen.h"
31 #include "dot.h"
32 #include "dotclassgraph.h"
33 #include "arguments.h"
34 #include "memberlist.h"
35 #include "namespacedef.h"
36 #include "filedef.h"
37 #include "filename.h"
38 #include "dir.h"
39 #include "textstream.h"
40 
41 #define DEF_DB(x)
42 
43 static inline void writeDEFString(TextStream &t,const QCString &s)
44 {
45  t << '\'';
46  if (!s.isEmpty())
47  {
48  const char* p=s.data();
49  char c;
50 
51  while ((c = *(p++)))
52  {
53  if (c == '\'') t << '\\';
54  t << c;
55  }
56  }
57  t << '\'';
58 }
59 
60 static void generateDEFForMember(const MemberDef *md,
61  TextStream &t,
62  const Definition *def,
63  const QCString &prefix)
64 {
65  QCString memPrefix;
66 
67  // + declaration
68  // - reimplements
69  // - reimplementedBy
70  // - exceptions
71  // - const/volatile specifiers
72  // - examples
73  // + source definition
74  // - source references
75  // - source referenced by
76  // - include code
77 
78  if (md->memberType()==MemberType_EnumValue) return;
79 
80  QCString scopeName;
81  if (md->getClassDef())
82  scopeName=md->getClassDef()->name();
83  else if (md->getNamespaceDef())
84  scopeName=md->getNamespaceDef()->name();
85 
86  t << " " << prefix << "-member = {\n";
87  memPrefix = " ";
88  memPrefix.append( prefix );
89  memPrefix.append( "-mem-" );
90 
91  QCString memType;
92  bool isFunc=FALSE;
93  switch (md->memberType())
94  {
95  case MemberType_Define: memType="define"; break;
96  case MemberType_EnumValue: ASSERT(0); break;
97  case MemberType_Property: memType="property"; break;
98  case MemberType_Event: memType="event"; break;
99  case MemberType_Variable: memType="variable"; break;
100  case MemberType_Typedef: memType="typedef"; break;
101  case MemberType_Enumeration: memType="enum"; break;
102  case MemberType_Interface: memType="interface"; break;
103  case MemberType_Service: memType="service"; break;
104  case MemberType_Sequence: memType="sequence"; break;
105  case MemberType_Dictionary: memType="dictionary"; break;
106  case MemberType_Function: memType="function"; isFunc=TRUE; break;
107  case MemberType_Signal: memType="signal"; isFunc=TRUE; break;
108  case MemberType_Friend: memType="friend"; isFunc=TRUE; break;
109  case MemberType_DCOP: memType="dcop"; isFunc=TRUE; break;
110  case MemberType_Slot: memType="slot"; isFunc=TRUE; break;
111  }
112 
113  t << memPrefix << "kind = '" << memType << "';\n";
114  t << memPrefix << "id = '"
115  << md->getOutputFileBase() << "_1" << md->anchor()
116  << "';\n";
117 
118  t << memPrefix << "virt = ";
119  switch (md->virtualness())
120  {
121  case Normal: t << "normal;\n"; break;
122  case Virtual: t << "virtual;\n"; break;
123  case Pure: t << "pure-virtual;\n"; break;
124  default: ASSERT(0);
125  }
126 
127  t << memPrefix << "prot = ";
128  switch(md->protection())
129  {
130  case Public: t << "public;\n"; break;
131  case Protected: t << "protected;\n"; break;
132  case Private: t << "private;\n"; break;
133  case Package: t << "package;\n"; break;
134  }
135 
136  if (md->memberType()!=MemberType_Define &&
138  )
139  {
140  QCString typeStr = replaceAnonymousScopes(md->typeString());
141  t << memPrefix << "type = <<_EnD_oF_dEf_TeXt_\n" << typeStr << "\n"
142  << "_EnD_oF_dEf_TeXt_;\n";
143  }
144 
145  t << memPrefix << "name = '" << md->name() << "';\n";
146 
147  if (isFunc) //function
148  {
149  const ArgumentList &defAl = md->argumentList();
151  QCString fcnPrefix = " " + memPrefix + "param-";
152 
153  auto defIt = defAl.begin();
154  for (const Argument &a : declAl)
155  {
156  const Argument *defArg = 0;
157  if (defIt!=defAl.end())
158  {
159  defArg = &(*defIt);
160  ++defIt;
161  }
162  t << memPrefix << "param = {\n";
163  if (!a.attrib.isEmpty())
164  {
165  t << fcnPrefix << "attributes = ";
166  writeDEFString(t,a.attrib);
167  t << ";\n";
168  }
169  if (!a.type.isEmpty())
170  {
171  t << fcnPrefix << "type = <<_EnD_oF_dEf_TeXt_\n"
172  << a.type << "\n_EnD_oF_dEf_TeXt_;\n";
173  }
174  if (!a.name.isEmpty())
175  {
176  t << fcnPrefix << "declname = ";
177  writeDEFString(t,a.name);
178  t << ";\n";
179  }
180  if (defArg && !defArg->name.isEmpty() && defArg->name!=a.name)
181  {
182  t << fcnPrefix << "defname = ";
183  writeDEFString(t,defArg->name);
184  t << ";\n";
185  }
186  if (!a.array.isEmpty())
187  {
188  t << fcnPrefix << "array = ";
189  writeDEFString(t,a.array);
190  t << ";\n";
191  }
192  if (!a.defval.isEmpty())
193  {
194  t << fcnPrefix << "defval = <<_EnD_oF_dEf_TeXt_\n"
195  << a.defval << "\n_EnD_oF_dEf_TeXt_;\n";
196  }
197  t << " }; /*" << fcnPrefix << "-param */\n";
198  }
199  }
200  else if ( md->memberType()==MemberType_Define
201  && md->argsString()!=0)
202  {
203  QCString defPrefix = " " + memPrefix + "def-";
204  for (const Argument &a : md->argumentList())
205  {
206  t << memPrefix << "param = {\n";
207  t << defPrefix << "name = '" << a.type << "';\n";
208  t << " }; /*" << defPrefix << "-param */\n";
209  }
210  }
211 
212  if (!md->initializer().isEmpty())
213  {
214  t << memPrefix << "initializer = <<_EnD_oF_dEf_TeXt_\n"
215  << md->initializer() << "\n_EnD_oF_dEf_TeXt_;\n";
216  }
217  // TODO: exceptions, const volatile
218  if (md->memberType()==MemberType_Enumeration) // enum
219  {
220  for (const auto &emd : md->enumFieldList())
221  {
222  t << memPrefix << "enum = { enum-name = " << emd->name() << ';';
223  if (!emd->initializer().isEmpty())
224  {
225  t << " enum-value = ";
226  writeDEFString(t,emd->initializer());
227  t << ';';
228  }
229  t << " };\n";
230  }
231  }
232 
233  t << memPrefix << "desc-file = '" << md->getDefFileName() << "';\n";
234  t << memPrefix << "desc-line = '" << md->getDefLine() << "';\n";
235  t << memPrefix << "briefdesc = <<_EnD_oF_dEf_TeXt_\n"
236  << md->briefDescription() << "\n_EnD_oF_dEf_TeXt_;\n";
237  t << memPrefix << "documentation = <<_EnD_oF_dEf_TeXt_\n"
238  << md->documentation() << "\n_EnD_oF_dEf_TeXt_;\n";
239 
240  //printf("md->getReferencesMembers()=%p\n",md->getReferencesMembers());
241 
242  QCString refPrefix = " " + memPrefix + "ref-";
243  auto refList = md->getReferencesMembers();
244  for (const auto &rmd : refList)
245  {
246  if (rmd->getStartBodyLine()!=-1 && rmd->getBodyDef())
247  {
248  t << memPrefix << "referenceto = {\n";
249  t << refPrefix << "id = '"
250  << rmd->getBodyDef()->getOutputFileBase()
251  << "_1" // encoded ':' character (see util.cpp:convertNameToFile)
252  << rmd->anchor() << "';\n";
253 
254  t << refPrefix << "line = '"
255  << rmd->getStartBodyLine() << "';\n";
256 
257  QCString scope = rmd->getScopeString();
258  QCString name = rmd->name();
259  if (!scope.isEmpty() && scope!=def->name())
260  {
261  name.prepend(scope+"::");
262  }
263 
264  t << refPrefix << "name = ";
265  writeDEFString(t,name);
266  t << ';' << "\n };\n";
267  }
268  }
269  auto refByList = md->getReferencedByMembers();
270  for (const auto &rmd : refByList)
271  {
272  if (rmd->getStartBodyLine()!=-1 && rmd->getBodyDef())
273  {
274  t << memPrefix << "referencedby = {\n";
275  t << refPrefix << "id = '"
276  << rmd->getBodyDef()->getOutputFileBase()
277  << "_1" // encoded ':' character (see util.cpp:convertNameToFile)
278  << rmd->anchor() << "';\n";
279 
280  t << refPrefix << "line = '"
281  << rmd->getStartBodyLine() << "';\n";
282 
283  QCString scope = rmd->getScopeString();
284  QCString name = rmd->name();
285  if (!scope.isEmpty() && scope!=def->name())
286  {
287  name.prepend(scope+"::");
288  }
289 
290  t << refPrefix << "name = ";
291  writeDEFString(t,name);
292  t << ';' << "\n };\n";
293  }
294  }
295 
296  t << " }; /* " << prefix << "-member */\n";
297 }
298 
299 
300 static void generateDEFClassSection(const ClassDef *cd,
301  TextStream &t,
302  const MemberList *ml,
303  const QCString &kind)
304 {
305  if (cd && ml && !ml->empty())
306  {
307  t << " cp-section = {\n";
308  t << " sec-kind = '" << kind << "';\n";
309 
310  for (const auto &md : *ml)
311  {
312  generateDEFForMember(md,t,cd,"sec");
313  }
314  t << " }; /* cp-section */\n";
315  }
316 }
317 
318 static void generateDEFForClass(const ClassDef *cd,TextStream &t)
319 {
320  // + brief description
321  // + detailed description
322  // - template arguments
323  // - include files
324  // + inheritance diagram
325  // + list of direct super classes
326  // + list of direct sub classes
327  // + collaboration diagram
328  // - list of all members
329  // + user defined member sections
330  // + standard member sections
331  // + detailed member documentation
332  // - examples
333 
334  if (cd->isReference()) return; // skip external references.
335  if (cd->name().find('@')!=-1) return; // skip anonymous compounds.
336  if (cd->templateMaster()!=0) return; // skip generated template instances.
337 
338  t << cd->compoundTypeString() << " = {\n";
339  t << " cp-id = '" << cd->getOutputFileBase() << "';\n";
340  t << " cp-name = '" << cd->name() << "';\n";
341 
342  for (const auto &bcd : cd->baseClasses())
343  {
344  t << " cp-ref = {\n" << " ref-type = base;\n";
345  t << " ref-id = '"
346  << bcd.classDef->getOutputFileBase() << "';\n";
347  t << " ref-prot = ";
348  switch (bcd.prot)
349  {
350  case Public: t << "public;\n"; break;
351  case Package: // package scope is not possible
352  case Protected: t << "protected;\n"; break;
353  case Private: t << "private;\n"; break;
354  }
355  t << " ref-virt = ";
356  switch(bcd.virt)
357  {
358  case Normal: t << "non-virtual;"; break;
359  case Virtual: t << "virtual;"; break;
360  case Pure: t << "pure-virtual;"; break;
361  }
362  t << "\n };\n";
363  }
364 
365  for (const auto &bcd : cd->subClasses())
366  {
367  t << " cp-ref = {\n" << " ref-type = derived;\n";
368  t << " ref-id = '"
369  << bcd.classDef->getOutputFileBase() << "';\n";
370  t << " ref-prot = ";
371  switch (bcd.prot)
372  {
373  case Public: t << "public;\n"; break;
374  case Package: // packet scope is not possible!
375  case Protected: t << "protected;\n"; break;
376  case Private: t << "private;\n"; break;
377  }
378  t << " ref-virt = ";
379  switch (bcd.virt)
380  {
381  case Normal: t << "non-virtual;"; break;
382  case Virtual: t << "virtual;"; break;
383  case Pure: t << "pure-virtual;"; break;
384  }
385  t << "\n };\n";
386  }
387 
388  size_t numMembers = 0;
389  for (const auto &ml : cd->getMemberLists())
390  {
391  if ((ml->listType()&MemberListType_detailedLists)==0)
392  {
393  numMembers+=ml->size();
394  }
395  }
396  if (numMembers>0)
397  {
413  generateDEFClassSection(cd,t,cd->getMemberList(MemberListType_proStaticMethods),"protected-static-func");
414  generateDEFClassSection(cd,t,cd->getMemberList(MemberListType_proStaticAttribs),"protected-static-attrib");
420  generateDEFClassSection(cd,t,cd->getMemberList(MemberListType_priStaticAttribs),"private-static-attrib");
423  }
424 
425  t << " cp-filename = '" << cd->getDefFileName() << "';\n";
426  t << " cp-fileline = '" << cd->getDefLine() << "';\n";
427  t << " cp-briefdesc = <<_EnD_oF_dEf_TeXt_\n"
428  << cd->briefDescription() << "\n_EnD_oF_dEf_TeXt_;\n";
429 
430  t << " cp-documentation = <<_EnD_oF_dEf_TeXt_\n"
431  << cd->documentation() << "\n_EnD_oF_dEf_TeXt_;\n";
432 
433  DotClassGraph inheritanceGraph(cd,Inheritance);
434  if (!inheritanceGraph.isTrivial())
435  {
436  t << " cp-inheritancegraph = <<_EnD_oF_dEf_TeXt_\n";
437  inheritanceGraph.writeDEF(t);
438  t << "\n_EnD_oF_dEf_TeXt_;\n";
439  }
440  DotClassGraph collaborationGraph(cd,Collaboration);
441  if (!collaborationGraph.isTrivial())
442  {
443  t << " cp-collaborationgraph = <<_EnD_oF_dEf_TeXt_\n";
444  collaborationGraph.writeDEF(t);
445  t << "\n_EnD_oF_dEf_TeXt_;\n";
446  }
447  t << "}; /* " << cd->compoundTypeString() << " */\n";
448 }
449 
450 static void generateDEFSection(const Definition *d,
451  TextStream &t,
452  const MemberList *ml,
453  const QCString &kind)
454 {
455  if (ml && !ml->empty())
456  {
457  t << " " << kind << " = {\n";
458  for (const auto &md : *ml)
459  {
460  generateDEFForMember(md,t,d,kind);
461  }
462  t << " };\n";
463  }
464 }
465 
467 {
468  if (nd->isReference()) return; // skip external references
469  t << " namespace = {\n";
470  t << " ns-id = '" << nd->getOutputFileBase() << "';\n";
471  t << " ns-name = ";
472  writeDEFString(t,nd->name());
473  t << ";\n";
474 
483 
484  t << " ns-filename = '" << nd->getDefFileName() << "';\n";
485  t << " ns-fileline = '" << nd->getDefLine() << "';\n";
486  t << " ns-briefdesc = <<_EnD_oF_dEf_TeXt_\n"
487  << nd->briefDescription() << "\n_EnD_oF_dEf_TeXt_;\n";
488 
489  t << " ns-documentation = <<_EnD_oF_dEf_TeXt_\n"
490  << nd->documentation() << "\n_EnD_oF_dEf_TeXt_;\n";
491  t << " };\n";
492 }
493 
494 static void generateDEFForFile(const FileDef *fd,TextStream &t)
495 {
496  if (fd->isReference()) return; // skip external references
497 
498  t << "file = {\n";
499  t << " file-id = '" << fd->getOutputFileBase() << "';\n";
500  t << " file-name = ";
501  writeDEFString(t,fd->name());
502  t << ";\n";
503 
512 
513  t << " file-full-name = '" << fd->getDefFileName() << "';\n";
514  t << " file-first-line = '" << fd->getDefLine() << "';\n";
515 
516  t << " file-briefdesc = <<_EnD_oF_dEf_TeXt_\n"
517  << fd->briefDescription() << "\n_EnD_oF_dEf_TeXt_;\n";
518 
519  t << " file-documentation = <<_EnD_oF_dEf_TeXt_\n"
520  << fd->documentation() << "\n_EnD_oF_dEf_TeXt_;\n";
521 
522  t << "}; /* file */\n";
523 }
524 
525 
527 {
528  QCString outputDirectory = Config_getString(OUTPUT_DIRECTORY)+"/def";
529  Dir defDir(outputDirectory.str());
530  if (!defDir.exists() && !defDir.mkdir(outputDirectory.str()))
531  {
532  err("Could not create def directory in %s\n",qPrint(outputDirectory));
533  return;
534  }
535 
536  QCString fileName=outputDirectory+"/doxygen.def";
537  std::ofstream f(fileName.str(),std::ostream::out | std::ostream::binary);
538  if (!f.is_open())
539  {
540  err("Cannot open file %s for writing!\n",qPrint(fileName));
541  return;
542  }
543  TextStream t(&f);
544  t << "AutoGen Definitions dummy;\n";
545 
549  {
550  for (const auto &cd : *Doxygen::classLinkedMap)
551  {
552  generateDEFForClass(cd.get(),t);
553  }
554  for (const auto &fn : *Doxygen::inputNameLinkedMap)
555  {
556  for (const auto &fd : *fn)
557  {
558  generateDEFForFile(fd.get(),t);
559  }
560  }
561  for (const auto &nd : *Doxygen::namespaceLinkedMap)
562  {
563  generateDEFForNamespace(nd.get(),t);
564  }
565  }
566  else
567  {
568  t << "dummy_value = true;\n";
569  }
570 }
NamespaceDef::getOutputFileBase
virtual QCString getOutputFileBase() const =0
replaceAnonymousScopes
QCString replaceAnonymousScopes(const QCString &s, const QCString &replacement)
Definition: util.cpp:223
MemberType_Variable
@ MemberType_Variable
Definition: types.h:278
MemberListType_priStaticMethods
@ MemberListType_priStaticMethods
Definition: types.h:114
MemberListType_priStaticAttribs
@ MemberListType_priStaticAttribs
Definition: types.h:125
Normal
@ Normal
Definition: types.h:29
MemberListType_signals
@ MemberListType_signals
Definition: types.h:131
MemberDef::argsString
virtual QCString argsString() const =0
writeDEFString
static void writeDEFString(TextStream &t, const QCString &s)
Definition: defgen.cpp:43
MemberDef::briefDescription
virtual QCString briefDescription(bool abbr=FALSE) const =0
Definition
The common base class of all entity definitions found in the sources.
Definition: definition.h:76
MemberDef::documentation
virtual QCString documentation() const =0
NamespaceDef
An abstract interface of a namespace symbol.
Definition: namespacedef.h:54
MemberType_EnumValue
@ MemberType_EnumValue
Definition: types.h:281
MemberListType_services
@ MemberListType_services
Definition: types.h:187
Dir
Class representing a directory in the file system
Definition: dir.h:68
Private
@ Private
Definition: types.h:26
MemberType_Signal
@ MemberType_Signal
Definition: types.h:282
ArgumentList
This class represents an function or template argument list.
Definition: arguments.h:59
generateDEFForFile
static void generateDEFForFile(const FileDef *fd, TextStream &t)
Definition: defgen.cpp:494
ClassDef::compoundTypeString
virtual QCString compoundTypeString() const =0
Returns the type of compound as a string
MemberType_Interface
@ MemberType_Interface
Definition: types.h:288
Definition::getDefLine
virtual int getDefLine() const =0
MemberListType_priAttribs
@ MemberListType_priAttribs
Definition: types.h:121
QCString::isEmpty
bool isEmpty() const
Returns TRUE iff the string is empty
Definition: qcstring.h:144
ClassDef::getMemberLists
virtual const MemberLists & getMemberLists() const =0
Returns the list containing the list of members sorted per type
namespacedef.h
QCString::size
uint size() const
Returns the length of the string, not counting the 0-terminator.
Definition: qcstring.h:150
MemberListType_pubTypes
@ MemberListType_pubTypes
Definition: types.h:126
Definition::getReferencedByMembers
virtual const MemberVector & getReferencedByMembers() const =0
MemberType_Friend
@ MemberType_Friend
Definition: types.h:284
MemberListType_priSlots
@ MemberListType_priSlots
Definition: types.h:117
generateDEFSection
static void generateDEFSection(const Definition *d, TextStream &t, const MemberList *ml, const QCString &kind)
Definition: defgen.cpp:450
MemberType_Enumeration
@ MemberType_Enumeration
Definition: types.h:280
MemberListType_dcopMethods
@ MemberListType_dcopMethods
Definition: types.h:133
Virtual
@ Virtual
Definition: types.h:29
QCString::str
std::string str() const
Definition: qcstring.h:442
MemberType_Typedef
@ MemberType_Typedef
Definition: types.h:279
Public
@ Public
Definition: types.h:26
Package
@ Package
Definition: types.h:26
MemberListType_decDictionaryMembers
@ MemberListType_decDictionaryMembers
Definition: types.h:192
textstream.h
err
void err(const char *fmt,...)
Definition: message.cpp:203
MemberListType_friends
@ MemberListType_friends
Definition: types.h:132
TextStream
Text streaming class that buffers data.
Definition: textstream.h:33
generateDEFForMember
static void generateDEFForMember(const MemberDef *md, TextStream &t, const Definition *def, const QCString &prefix)
Definition: defgen.cpp:60
QCString::find
int find(char c, int index=0, bool cs=TRUE) const
Definition: qcstring.cpp:38
MemberListType_proAttribs
@ MemberListType_proAttribs
Definition: types.h:119
MemberListType_pubMethods
@ MemberListType_pubMethods
Definition: types.h:107
filename.h
ArgumentList::end
iterator end()
Definition: arguments.h:87
Definition::getLanguage
virtual SrcLangExt getLanguage() const =0
Returns the programming language this definition was written in.
ArgumentList::begin
iterator begin()
Definition: arguments.h:86
MemberListType_interfaces
@ MemberListType_interfaces
Definition: types.h:184
ClassDef::templateMaster
virtual const ClassDef * templateMaster() const =0
Returns the template master of which this class is an instance.
MemberListType_decSequenceMembers
@ MemberListType_decSequenceMembers
Definition: types.h:190
Doxygen::inputNameLinkedMap
static FileNameLinkedMap * inputNameLinkedMap
Definition: doxygen.h:88
MemberType_Service
@ MemberType_Service
Definition: types.h:289
MemberDef::anchor
virtual QCString anchor() const =0
outputgen.h
dot.h
MemberType_Function
@ MemberType_Function
Definition: types.h:277
MemberDef
A model of a class/file/namespace member symbol.
Definition: memberdef.h:45
MemberListType_decProtoMembers
@ MemberListType_decProtoMembers
Definition: types.h:150
MemberListType_pubSlots
@ MemberListType_pubSlots
Definition: types.h:115
ClassDef
A abstract class representing of a compound symbol.
Definition: classdef.h:103
MemberListType_decVarMembers
@ MemberListType_decVarMembers
Definition: types.h:154
classlist.h
MemberType_Slot
@ MemberType_Slot
Definition: types.h:283
MemberListType_proStaticMethods
@ MemberListType_proStaticMethods
Definition: types.h:112
MemberVector::empty
bool empty() const
Definition: memberlist.h:47
message.h
FileDef::name
virtual QCString name() const =0
MemberDef::virtualness
virtual Specifier virtualness(int count=0) const =0
MemberDef::enumFieldList
virtual const MemberVector & enumFieldList() const =0
Definition::getReferencesMembers
virtual const MemberVector & getReferencesMembers() const =0
ClassDef::getOutputFileBase
virtual QCString getOutputFileBase() const =0
Returns the unique base name (without extension) of the class's file on disk
ClassDef::baseClasses
virtual const BaseClassList & baseClasses() const =0
Returns the list of base classes from which this class directly inherits.
FileDef::getMemberList
virtual MemberList * getMemberList(MemberListType lt) const =0
arguments.h
Definition::isReference
virtual bool isReference() const =0
Definition::name
virtual QCString name() const =0
doxygen.h
MemberType_DCOP
@ MemberType_DCOP
Definition: types.h:285
Argument
This class contains the information about the argument of a function or template
Definition: arguments.h:26
MemberDef::getClassDef
virtual const ClassDef * getClassDef() const =0
generateDEFForNamespace
static void generateDEFForNamespace(const NamespaceDef *nd, TextStream &t)
Definition: defgen.cpp:466
defgen.h
NamespaceDef::getMemberList
virtual MemberList * getMemberList(MemberListType lt) const =0
defargs.h
Definition::briefDescription
virtual QCString briefDescription(bool abbreviate=FALSE) const =0
TRUE
#define TRUE
Definition: qcstring.h:36
MemberDef::getNamespaceDef
virtual const NamespaceDef * getNamespaceDef() const =0
filedef.h
generateDEFClassSection
static void generateDEFClassSection(const ClassDef *cd, TextStream &t, const MemberList *ml, const QCString &kind)
Definition: defgen.cpp:300
MemberDef::protection
virtual Protection protection() const =0
MemberListType_decEnumMembers
@ MemberListType_decEnumMembers
Definition: types.h:152
Collaboration
@ Collaboration
Definition: dotgraph.h:29
memberlist.h
MemberListType_priTypes
@ MemberListType_priTypes
Definition: types.h:129
DotClassGraph
Representation of a class inheritance or dependency graph
Definition: dotclassgraph.h:28
MemberListType_pubStaticAttribs
@ MemberListType_pubStaticAttribs
Definition: types.h:122
ClassDef::subClasses
virtual const BaseClassList & subClasses() const =0
Returns the list of sub classes that directly derive from this class
dotclassgraph.h
MemberType_Property
@ MemberType_Property
Definition: types.h:286
MemberListType_decDefineMembers
@ MemberListType_decDefineMembers
Definition: types.h:149
DotClassGraph::writeDEF
void writeDEF(TextStream &t)
Definition: dotclassgraph.cpp:478
MemberType_Dictionary
@ MemberType_Dictionary
Definition: types.h:291
generateDEF
void generateDEF()
Definition: defgen.cpp:526
MemberListType_proMethods
@ MemberListType_proMethods
Definition: types.h:108
MemberListType_decFuncMembers
@ MemberListType_decFuncMembers
Definition: types.h:153
MemberListType_proTypes
@ MemberListType_proTypes
Definition: types.h:127
Protected
@ Protected
Definition: types.h:26
MemberListType_proStaticAttribs
@ MemberListType_proStaticAttribs
Definition: types.h:123
MemberListType_detailedLists
@ MemberListType_detailedLists
Definition: types.h:103
MemberDef::getOutputFileBase
virtual QCString getOutputFileBase() const =0
QCString::append
QCString & append(char c)
Definition: qcstring.h:318
MemberListType_related
@ MemberListType_related
Definition: types.h:130
MemberListType_priMethods
@ MemberListType_priMethods
Definition: types.h:110
Definition::documentation
virtual QCString documentation() const =0
ClassDef::isReference
virtual bool isReference() const =0
Returns TRUE if this class is imported via a tag file
MemberType_Event
@ MemberType_Event
Definition: types.h:287
DotClassGraph::isTrivial
bool isTrivial() const
Definition: dotclassgraph.cpp:351
MemberListType_proSlots
@ MemberListType_proSlots
Definition: types.h:116
MemberListType_decTypedefMembers
@ MemberListType_decTypedefMembers
Definition: types.h:151
MemberType_Sequence
@ MemberType_Sequence
Definition: types.h:290
qPrint
const char * qPrint(const char *s)
Definition: qcstring.h:589
Config_getString
#define Config_getString(name)
Definition: config.h:32
Definition::getDefFileName
virtual QCString getDefFileName() const =0
Inheritance
@ Inheritance
Definition: dotgraph.h:29
Argument::name
QCString name
Definition: arguments.h:52
MemberDef::argumentList
virtual const ArgumentList & argumentList() const =0
config.h
MemberListType_pubAttribs
@ MemberListType_pubAttribs
Definition: types.h:118
Doxygen::namespaceLinkedMap
static NamespaceLinkedMap * namespaceLinkedMap
Definition: doxygen.h:97
ASSERT
#define ASSERT(x)
Definition: qcstring.h:44
QCString::data
const char * data() const
Returns a pointer to the contents of the string in the form of a 0-terminated C string
Definition: qcstring.h:153
ClassDef::getMemberList
virtual MemberList * getMemberList(MemberListType lt) const =0
Returns the members in the list identified by lt
FileDef
A model of a file symbol.
Definition: filedef.h:73
Dir::exists
bool exists() const
Definition: dir.cpp:199
MemberType_Define
@ MemberType_Define
Definition: types.h:276
MemberListType_properties
@ MemberListType_properties
Definition: types.h:134
dir.h
generateDEFForClass
static void generateDEFForClass(const ClassDef *cd, TextStream &t)
Definition: defgen.cpp:318
Doxygen::classLinkedMap
static ClassLinkedMap * classLinkedMap
Definition: doxygen.h:78
MemberDef::initializer
virtual const QCString & initializer() const =0
FileDef::getOutputFileBase
virtual QCString getOutputFileBase() const =0
Dir::mkdir
bool mkdir(const std::string &path, bool acceptsAbsPath=true) const
Definition: dir.cpp:237
util.h
A bunch of utility functions.
MemberDef::typeString
virtual QCString typeString() const =0
MemberListType_pubStaticMethods
@ MemberListType_pubStaticMethods
Definition: types.h:111
stringToArgumentList
std::unique_ptr< ArgumentList > stringToArgumentList(SrcLangExt lang, const QCString &argsString, QCString *extraTypeChars=0)
MemberList
A list of MemberDef objects as shown in documentation sections.
Definition: memberlist.h:81
QCString::prepend
QCString & prepend(const char *s)
Definition: qcstring.h:339
MemberDef::memberType
virtual MemberType memberType() const =0
FALSE
#define FALSE
Definition: qcstring.h:33
Pure
@ Pure
Definition: types.h:29
QCString
This is an alternative implementation of QCString.
Definition: qcstring.h:108