doxygen  1.8.18
About: Doxygen is a source code documentation generator tool for C++, C, Objective-C, C#, PHP, Java, Python, IDL (diverse flavors), Fortran, VHDL, Tcl, and to some extent D. Different output formats are supported.
  Fossies Dox: doxygen-1.8.18.src.tar.gz  ("unofficial" and yet experimental doxygen-generated source code documentation)  

groupdef.cpp
Go to the documentation of this file.
1 
18 #include <ctype.h>
19 #include <qregexp.h>
20 #include "groupdef.h"
21 #include "classdef.h"
22 #include "filedef.h"
23 #include "classlist.h"
24 #include "outputlist.h"
25 #include "namespacedef.h"
26 #include "language.h"
27 #include "util.h"
28 #include "memberlist.h"
29 #include "message.h"
30 #include "membergroup.h"
31 #include "doxygen.h"
32 #include "pagedef.h"
33 #include "docparser.h"
34 #include "searchindex.h"
35 #include "dot.h"
36 #include "dotgroupcollaboration.h"
37 #include "vhdldocgen.h"
38 #include "layout.h"
39 #include "arguments.h"
40 #include "entry.h"
41 #include "membername.h"
42 #include "dirdef.h"
43 #include "config.h"
44 #include "definitionimpl.h"
45 
46 //---------------------------------------------------------------------------
47 
48 class GroupDefImpl : public DefinitionImpl, public GroupDef
49 {
50  public:
51  GroupDefImpl(const char *fileName,int line,const char *name,const char *title,const char *refFileName=0);
52  virtual ~GroupDefImpl();
53 
54  virtual DefType definitionType() const { return TypeGroup; }
55  virtual QCString getOutputFileBase() const;
56  virtual QCString anchor() const { return QCString(); }
57  virtual QCString displayName(bool=TRUE) const { return hasGroupTitle() ? m_title : DefinitionImpl::name(); }
58  virtual const char *groupTitle() const { return m_title; }
59  virtual void setGroupTitle( const char *newtitle );
60  virtual bool hasGroupTitle( ) const { return m_titleSet; }
61  virtual void addFile(const FileDef *def);
62  virtual bool addClass(const ClassDef *def);
63  virtual bool addNamespace(const NamespaceDef *def);
64  virtual void addGroup(const GroupDef *def);
65  virtual void addPage(PageDef *def);
66  virtual void addExample(const PageDef *def);
67  virtual void addDir(const DirDef *dd);
68  virtual bool insertMember(MemberDef *def,bool docOnly=FALSE);
69  virtual void removeMember(MemberDef *md);
70  virtual bool findGroup(const GroupDef *def) const; // true if def is a subgroup of this group
71  virtual void writeDocumentation(OutputList &ol);
72  virtual void writeMemberPages(OutputList &ol);
73  virtual void writeQuickMemberLinks(OutputList &ol,const MemberDef *currentMd) const;
74  virtual void writeTagFile(FTextStream &);
75  virtual int numDocMembers() const;
76  virtual bool isLinkableInProject() const;
77  virtual bool isLinkable() const;
78  virtual bool isASubGroup() const;
79  virtual void computeAnchors();
80  virtual void countMembers();
81 
82  virtual void addMembersToMemberGroup();
84  virtual void findSectionsInDocumentation();
85 
86  virtual void addListReferences();
87  virtual void sortMemberLists();
88  virtual bool subGrouping() const { return m_subGrouping; }
89 
90  virtual void setGroupScope(Definition *d) { m_groupScope = d; }
91  virtual Definition *getGroupScope() const { return m_groupScope; }
92 
93  virtual MemberList *getMemberList(MemberListType lt) const;
94  virtual const QList<MemberList> &getMemberLists() const { return m_memberLists; }
95 
96  /* user defined member groups */
98 
99  virtual FileList * getFiles() const { return m_fileList; }
100  virtual ClassSDict * getClasses() const { return m_classSDict; }
101  virtual NamespaceSDict * getNamespaces() const { return m_namespaceSDict; }
102  virtual GroupList * getSubGroups() const { return m_groupList; }
103  virtual PageSDict * getPages() const { return m_pageDict; }
104  virtual DirList * getDirs() const { return m_dirList; }
105  virtual PageSDict * getExamples() const { return m_exampleDict; }
106  virtual bool hasDetailedDescription() const;
107  virtual void sortSubGroups();
108 
109  private:
110  void addMemberListToGroup(MemberList *,bool (MemberDef::*)() const);
113  void writeMemberDeclarations(OutputList &ol,MemberListType lt,const QCString &title);
116  void writeGroupGraph(OutputList &ol);
117  void writeFiles(OutputList &ol,const QCString &title);
118  void writeNamespaces(OutputList &ol,const QCString &title);
119  void writeNestedGroups(OutputList &ol,const QCString &title);
120  void writeDirs(OutputList &ol,const QCString &title);
121  void writeClasses(OutputList &ol,const QCString &title);
122  void writeInlineClasses(OutputList &ol);
124  void writeDetailedDescription(OutputList &ol,const QCString &title);
126  void writeMemberGroups(OutputList &ol);
131  void writeAuthorSection(OutputList &ol);
132  void writeSummaryLinks(OutputList &ol) const;
133  void updateLanguage(const Definition *);
134 
135  QCString m_title; // title of the group
136  bool m_titleSet; // true if title is not the same as the name
137  QCString m_fileName; // base name of the generated file
138  FileList * m_fileList; // list of files in the group
139  ClassSDict * m_classSDict; // list of classes in the group
140  NamespaceSDict * m_namespaceSDict; // list of namespaces in the group
141  GroupList * m_groupList; // list of sub groups.
142  PageSDict * m_pageDict; // list of pages in the group
143  PageSDict * m_exampleDict; // list of examples in the group
144  DirList * m_dirList; // list of directories in the group
151 
152 };
153 
154 GroupDef *createGroupDef(const char *fileName,int line,const char *name,
155  const char *title,const char *refFileName)
156 {
157  return new GroupDefImpl(fileName,line,name,title,refFileName);
158 }
159 
160 
161 //---------------------------------------------------------------------------
162 
163 GroupDefImpl::GroupDefImpl(const char *df,int dl,const char *na,const char *t,
164  const char *refFileName) : DefinitionImpl(df,dl,1,na)
165 {
166  m_fileList = new FileList;
167  m_classSDict = new ClassSDict(17);
168  m_groupList = new GroupList;
170  m_pageDict = new PageSDict(17);
171  m_exampleDict = new PageSDict(17);
172  m_dirList = new DirList;
175  if (refFileName)
176  {
177  m_fileName=stripExtension(refFileName);
178  }
179  else
180  {
181  m_fileName = convertNameToFile(QCString("group_")+na);
182  }
183  setGroupTitle( t );
186 
188 
189  //visited = 0;
190  m_groupScope = 0;
191  m_subGrouping=Config_getBool(SUBGROUPING);
192 }
193 
195 {
196  delete m_fileList;
197  delete m_classSDict;
198  delete m_groupList;
199  delete m_namespaceSDict;
200  delete m_pageDict;
201  delete m_exampleDict;
202  delete m_allMemberList;
204  delete m_memberGroupSDict;
205  delete m_dirList;
206 }
207 
208 void GroupDefImpl::setGroupTitle( const char *t )
209 {
210  if ( t && *t )
211  {
212  m_title = t;
213  m_titleSet = TRUE;
214  }
215  else
216  {
217  m_title = name();
218  m_title[0]=(char)toupper(m_title[0]);
219  m_titleSet = FALSE;
220  }
221 }
222 
223 
225 {
227  MemberGroup *mg;
228  for (;(mg=mgli.current());++mgli)
229  {
231  }
232 }
233 
235 {
238  MemberGroup *mg;
239  for (;(mg=mgli.current());++mgli)
240  {
241  mg->findSectionsInDocumentation(this);
242  }
243 
245  MemberList *ml;
246  for (mli.toFirst();(ml=mli.current());++mli)
247  {
249  {
250  ml->findSectionsInDocumentation(this);
251  }
252  }
253 }
254 
256 {
257  static bool sortBriefDocs = Config_getBool(SORT_BRIEF_DOCS);
258  if (def->isHidden()) return;
259  updateLanguage(def);
260  if (sortBriefDocs)
261  m_fileList->inSort(def);
262  else
263  m_fileList->append(def);
264 }
265 
267 {
268  static bool sortBriefDocs = Config_getBool(SORT_BRIEF_DOCS);
269  if (cd->isHidden()) return FALSE;
270  updateLanguage(cd);
271  QCString qn = cd->name();
272  if (m_classSDict->find(qn)==0)
273  {
274  //printf("--- addClass %s sort=%d\n",qn.data(),sortBriefDocs);
275  if (sortBriefDocs)
276  {
277  m_classSDict->inSort(qn,cd);
278  }
279  else
280  {
281  int i=qn.findRev("::");
282  if (i==-1) i=qn.find('.');
283  bool found=FALSE;
284  //printf("i=%d\n",i);
285  if (i>0)
286  {
287  // add nested classes (e.g. A::B, A::C) after their parent (A) in
288  // order of insertion
289  QCString scope = qn.left(i);
290  int j=m_classSDict->findAt(scope);
291  if (j!=-1)
292  {
293  while (j<(int)m_classSDict->count() &&
294  m_classSDict->at(j)->qualifiedName().left(i)==scope)
295  {
296  //printf("skipping over %s\n",classSDict->at(j)->qualifiedName().data());
297  j++;
298  }
299  //printf("Found scope at index %d\n",j);
300  m_classSDict->insertAt(j,qn,cd);
301  found=TRUE;
302  }
303  }
304  if (!found) // no insertion point found -> just append
305  {
306  m_classSDict->append(qn,cd);
307  }
308  }
309  return TRUE;
310  }
311  return FALSE;
312 }
313 
315 {
316  static bool sortBriefDocs = Config_getBool(SORT_BRIEF_DOCS);
317  if (def->isHidden()) return FALSE;
318  updateLanguage(def);
319  if (m_namespaceSDict->find(def->name())==0)
320  {
321  if (sortBriefDocs)
322  m_namespaceSDict->inSort(def->name(),def);
323  else
324  m_namespaceSDict->append(def->name(),def);
325  return TRUE;
326  }
327  return FALSE;
328 }
329 
330 void GroupDefImpl::addDir(const DirDef *def)
331 {
332  if (def->isHidden()) return;
333  if (Config_getBool(SORT_BRIEF_DOCS))
334  m_dirList->inSort(def);
335  else
336  m_dirList->append(def);
337 }
338 
340 {
341  if (def->isHidden()) return;
342  //printf("Making page %s part of a group\n",def->name.data());
343  m_pageDict->append(def->name(),def);
344  def->makePartOfGroup(this);
345 }
346 
348 {
349  if (def->isHidden()) return;
350  m_exampleDict->append(def->name(),def);
351 }
352 
353 
355 {
357  MemberList *ml;
358  for (mli.toFirst();(ml=mli.current());++mli)
359  {
361  {
363  }
364  }
365 
366  //printf("GroupDefImpl::addMembersToMemberGroup() memberGroupList=%d\n",memberGroupList->count());
368  MemberGroup *mg;
369  for (;(mg=mgli.current());++mgli)
370  {
371  mg->setInGroup(TRUE);
372  }
373 }
374 
375 
376 bool GroupDefImpl::insertMember(MemberDef *md,bool docOnly)
377 {
378  if (md->isHidden()) return FALSE;
379  updateLanguage(md);
380  //printf("GroupDef(%s)::insertMember(%s)\n", title.data(), md->name().data());
381  MemberNameInfo *mni=0;
382  if ((mni=(*m_allMemberNameInfoSDict)[md->name()]))
383  { // member with this name already found
384  MemberNameInfoIterator srcMnii(*mni);
385  const MemberInfo *srcMi;
386  for ( ; (srcMi=srcMnii.current()) ; ++srcMnii )
387  {
388  const MemberDef *srcMd = srcMi->memberDef;
389  if (srcMd==md) return FALSE; // already added before!
390 
391  bool sameScope = srcMd->getOuterScope()==md->getOuterScope() || // same class or namespace
392  // both inside a file => definition and declaration do not have to be in the same file
395 
396  const ArgumentList &srcMdAl = srcMd->argumentList();
397  const ArgumentList &mdAl = md->argumentList();
398  const ArgumentList &tSrcMdAl = srcMd->templateArguments();
399  const ArgumentList &tMdAl = md->templateArguments();
400 
401  if (srcMd->isFunction() && md->isFunction() && // both are a function
402  (tSrcMdAl.size()==tMdAl.size()) && // same number of template arguments
403  matchArguments2(srcMd->getOuterScope(),srcMd->getFileDef(),srcMdAl,
404  md->getOuterScope(),md->getFileDef(),mdAl,
405  TRUE
406  ) && // matching parameters
407  sameScope // both are found in the same scope
408  )
409  {
410  if (srcMd->getGroupAlias()==0)
411  {
412  md->setGroupAlias(srcMd);
413  }
414  else if (md!=srcMd->getGroupAlias())
415  {
416  md->setGroupAlias(srcMd->getGroupAlias());
417  }
418  return FALSE; // member is the same as one that is already added
419  }
420  }
421  mni->append(new MemberInfo(md,md->protection(),md->virtualness(),FALSE));
422  }
423  else
424  {
425  mni = new MemberNameInfo(md->name());
426  mni->append(new MemberInfo(md,md->protection(),md->virtualness(),FALSE));
428  }
429  //printf("Added member!\n");
430  m_allMemberList->append(md);
431  switch(md->memberType())
432  {
433  case MemberType_Variable:
434  if (!docOnly)
435  {
437  }
439  break;
440  case MemberType_Function:
441  if (!docOnly)
442  {
444  }
446  break;
447  case MemberType_Typedef:
448  if (!docOnly)
449  {
451  }
453  break;
455  if (!docOnly)
456  {
458  }
460  break;
461  case MemberType_EnumValue:
462  if (!docOnly)
463  {
465  }
467  break;
468  case MemberType_Define:
469  if (!docOnly)
470  {
472  }
474  break;
475  case MemberType_Signal:
476  if (!docOnly)
477  {
479  }
481  break;
482  case MemberType_Slot:
483  if (md->protection()==Public)
484  {
485  if (!docOnly)
486  {
488  }
490  }
491  else if (md->protection()==Protected)
492  {
493  if (!docOnly)
494  {
496  }
498  }
499  else
500  {
501  if (!docOnly)
502  {
504  }
506  }
507  break;
508  case MemberType_Event:
509  if (!docOnly)
510  {
512  }
514  break;
515  case MemberType_Property:
516  if (!docOnly)
517  {
519  }
521  break;
522  case MemberType_Friend:
523  if (!docOnly)
524  {
526  }
528  break;
529  default:
530  err("GroupDefImpl::insertMembers(): "
531  "member '%s' (typeid=%d) with scope '%s' inserted in group scope '%s'!\n",
532  md->name().data(),md->memberType(),
533  md->getClassDef() ? md->getClassDef()->name().data() : "",
534  name().data());
535  }
536  return TRUE;
537 }
538 
540 {
541  // fprintf(stderr, "GroupDef(%s)::removeMember( %s )\n", title.data(), md->name().data());
543  if (mni)
544  {
545  MemberNameInfoIterator mnii(*mni);
546  while( mnii.current() )
547  {
548  if( mnii.current()->memberDef == md )
549  {
550  mni->remove(mnii.current());
551  break;
552  }
553  ++mnii;
554  }
555  if( mni->isEmpty() )
556  {
558  }
559 
561  switch(md->memberType())
562  {
563  case MemberType_Variable:
566  break;
567  case MemberType_Function:
570  break;
571  case MemberType_Typedef:
574  break;
578  break;
579  case MemberType_EnumValue:
582  break;
583  case MemberType_Define:
586  break;
587  case MemberType_Signal:
590  break;
591  case MemberType_Slot:
592  if (md->protection()==Public)
593  {
596  }
597  else if (md->protection()==Protected)
598  {
601  }
602  else
603  {
606  }
607  break;
608  case MemberType_Event:
611  break;
612  case MemberType_Property:
615  break;
616  case MemberType_Friend:
619  break;
620  default:
621  err("GroupDefImpl::removeMember(): unexpected member remove in file!\n");
622  }
623  }
624 }
625 
626 bool GroupDefImpl::findGroup(const GroupDef *def) const
627 {
628  if (this==def)
629  {
630  return TRUE;
631  }
632  else if (m_groupList)
633  {
635  GroupDef *gd;
636  for (;(gd=it.current());++it)
637  {
638  if (gd->findGroup(def))
639  {
640  return TRUE;
641  }
642  }
643  }
644  return FALSE;
645 }
646 
648 {
649  //printf("adding group '%s' to group '%s'\n",def->name().data(),name().data());
650  //if (Config_getBool(SORT_MEMBER_DOCS))
651  // groupList->inSort(def);
652  //else
653  m_groupList->append(def);
654 }
655 
657 {
658  GroupList *groups = partOfGroups();
659  return groups!=0 && groups->count()!=0;
660 }
661 
663 {
665  MemberList *ml;
666  for (;(ml=mli.current());++mli)
667  {
668  ml->countDecMembers();
669  ml->countDocMembers();
670  }
671  if (m_memberGroupSDict)
672  {
674  MemberGroup *mg;
675  for (;(mg=mgli.current());++mgli)
676  {
677  mg->countDecMembers();
678  mg->countDocMembers();
679  }
680  }
681 }
682 
684 {
685  return m_fileList->count()+
686  m_classSDict->count()+
688  m_groupList->count()+
690  m_pageDict->count()+
691  m_exampleDict->count();
692 }
693 
696 {
697  //printf("GroupDefImpl::computeAnchors()\n");
699 }
700 
702 {
703  tagFile << " <compound kind=\"group\">" << endl;
704  tagFile << " <name>" << convertToXML(name()) << "</name>" << endl;
705  tagFile << " <title>" << convertToXML(m_title) << "</title>" << endl;
706  tagFile << " <filename>" << convertToXML(getOutputFileBase()) << Doxygen::htmlFileExtension << "</filename>" << endl;
709  LayoutDocEntry *lde;
710  for (eli.toFirst();(lde=eli.current());++eli)
711  {
712  switch (lde->kind())
713  {
715  {
716  if (m_classSDict)
717  {
719  ClassDef *cd;
720  for (ci.toFirst();(cd=ci.current());++ci)
721  {
722  if (cd->isLinkableInProject())
723  {
724  tagFile << " <class kind=\"" << cd->compoundTypeString()
725  << "\">" << convertToXML(cd->name()) << "</class>" << endl;
726  }
727  }
728  }
729  }
730  break;
732  {
733  if (m_namespaceSDict)
734  {
736  NamespaceDef *nd;
737  for (ni.toFirst();(nd=ni.current());++ni)
738  {
739  if (nd->isLinkableInProject())
740  {
741  tagFile << " <namespace>" << convertToXML(nd->name())
742  << "</namespace>" << endl;
743  }
744  }
745  }
746  }
747  break;
749  {
750  if (m_fileList)
751  {
753  FileDef *fd;
754  for (;(fd=it.current());++it)
755  {
756  if (fd->isLinkableInProject())
757  {
758  tagFile << " <file>" << convertToXML(fd->name()) << "</file>" << endl;
759  }
760  }
761  }
762  }
763  break;
765  {
766  if (m_pageDict)
767  {
769  PageDef *pd=0;
770  for (pdi.toFirst();(pd=pdi.current());++pdi)
771  {
772  QCString pageName = pd->getOutputFileBase();
773  if (pd->isLinkableInProject())
774  {
775  tagFile << " <page>" << convertToXML(pageName) << "</page>" << endl;
776  }
777  }
778  }
779  }
780  break;
782  {
783  if (m_dirList)
784  {
786  DirDef *dd;
787  for (;(dd=it.current());++it)
788  {
789  if (dd->isLinkableInProject())
790  {
791  tagFile << " <dir>" << convertToXML(dd->displayName()) << "</dir>" << endl;
792  }
793  }
794  }
795  }
796  break;
798  {
799  if (m_groupList)
800  {
802  GroupDef *gd;
803  for (;(gd=it.current());++it)
804  {
805  if (gd->isVisible())
806  {
807  tagFile << " <subgroup>" << convertToXML(gd->name()) << "</subgroup>" << endl;
808  }
809  }
810  }
811  }
812  break;
814  {
816  MemberList * ml = getMemberList(lmd->type);
817  if (ml)
818  {
819  ml->writeTagFile(tagFile);
820  }
821  }
822  break;
824  {
825  if (m_memberGroupSDict)
826  {
828  MemberGroup *mg;
829  for (;(mg=mgli.current());++mgli)
830  {
831  mg->writeTagFile(tagFile);
832  }
833  }
834  }
835  break;
836  default:
837  break;
838  }
839  }
840  writeDocAnchorsToTagFile(tagFile);
841  tagFile << " </compound>" << endl;
842 }
843 
845 {
846  if ((!briefDescription().isEmpty() && Config_getBool(REPEAT_BRIEF))
847  || !documentation().isEmpty() || !inbodyDocumentation().isEmpty()
848  )
849  {
850  ol.pushGeneratorState();
851  if (m_pageDict->count()!=(uint)numDocMembers()) // not only pages -> classical layout
852  {
853  ol.pushGeneratorState();
855  ol.writeRuler();
856  ol.popGeneratorState();
857  ol.pushGeneratorState();
859  ol.writeAnchor(0,"details");
860  ol.popGeneratorState();
861  }
862  else
863  {
864  ol.disableAllBut(OutputGenerator::Man); // always print title for man page
865  }
866  ol.startGroupHeader();
867  ol.parseText(title);
868  ol.endGroupHeader();
869  ol.popGeneratorState();
870 
871  // repeat brief description
872  if (!briefDescription().isEmpty() && Config_getBool(REPEAT_BRIEF))
873  {
875  }
876  // write separator between brief and details
877  if (!briefDescription().isEmpty() && Config_getBool(REPEAT_BRIEF) &&
878  !documentation().isEmpty())
879  {
880  ol.pushGeneratorState();
883  // ol.newParagraph(); // FIXME:PARA
884  ol.enableAll();
887  ol.writeString("\n\n");
888  ol.popGeneratorState();
889  }
890 
891  // write detailed documentation
892  if (!documentation().isEmpty())
893  {
894  ol.generateDoc(docFile(),docLine(),this,0,documentation()+"\n",TRUE,FALSE);
895  }
896 
897  // write inbody documentation
898  if (!inbodyDocumentation().isEmpty())
899  {
901  }
902  }
903 }
904 
906 {
907  if (hasBriefDescription())
908  {
909  DocRoot *rootNode = validatingParseDoc(briefFile(),briefLine(),this,0,
911  if (rootNode && !rootNode->isEmpty())
912  {
913  ol.startParagraph();
914  ol.pushGeneratorState();
916  ol.writeString(" - ");
917  ol.popGeneratorState();
918  ol.writeDoc(rootNode,this,0);
919  ol.pushGeneratorState();
921  ol.writeString(" \n");
923 
924  if (Config_getBool(REPEAT_BRIEF) ||
925  !documentation().isEmpty()
926  )
927  {
929  ol.startTextLink(0,"details");
931  ol.endTextLink();
932  }
933  ol.popGeneratorState();
934  ol.endParagraph();
935  }
936  delete rootNode;
937  }
938  ol.writeSynopsis();
939 }
940 
942 {
943  if (Config_getBool(HAVE_DOT) /*&& Config_getBool(GROUP_GRAPHS)*/ )
944  {
945  DotGroupCollaboration graph(this);
946  if (!graph.isTrivial())
947  {
948  msg("Generating dependency graph for group %s\n",qualifiedName().data());
949  ol.pushGeneratorState();
951  //ol.startParagraph();
954  ol.endGroupCollaboration(graph);
955  //ol.endParagraph();
956  ol.popGeneratorState();
957  }
958  }
959 }
960 
962 {
963  // write list of files
964  if (m_fileList->count()>0)
965  {
966  ol.startMemberHeader("files");
967  ol.parseText(title);
968  ol.endMemberHeader();
969  ol.startMemberList();
971  FileDef *fd;
972  for (;(fd=it.current());++it)
973  {
974  if (!fd->hasDocumentation()) continue;
978  ol.insertMemberAlign();
979  ol.writeObjectLink(fd->getReference(),fd->getOutputFileBase(),0,fd->name());
980  ol.endMemberItem();
981  if (!fd->briefDescription().isEmpty() && Config_getBool(BRIEF_MEMBER_DESC))
982  {
986  }
987  ol.endMemberDeclaration(0,0);
988  }
989  ol.endMemberList();
990  }
991 }
992 
994 {
995  // write list of namespaces
997 }
998 
1000 {
1001  // write list of groups
1002  int count=0;
1003  if (m_groupList->count()>0)
1004  {
1006  GroupDef *gd;
1007  for (;(gd=it.current());++it)
1008  {
1009  if (gd->isVisible()) count++;
1010  }
1011  }
1012  if (count>0)
1013  {
1014  ol.startMemberHeader("groups");
1015  ol.parseText(title);
1016  ol.endMemberHeader();
1017  ol.startMemberList();
1018  if (Config_getBool(SORT_GROUP_NAMES))
1019  {
1020  m_groupList->sort();
1021  }
1023  GroupDef *gd;
1024  for (;(gd=it.current());++it)
1025  {
1026  if (gd->isVisible())
1027  {
1028  if (!gd->hasDocumentation()) continue;
1030  ol.startMemberItem(gd->getOutputFileBase(),0);
1031  //ol.docify(theTranslator->trGroup(FALSE,TRUE));
1032  //ol.docify(" ");
1033  ol.insertMemberAlign();
1034  ol.writeObjectLink(gd->getReference(),gd->getOutputFileBase(),0,gd->groupTitle());
1035  ol.endMemberItem();
1036  if (!gd->briefDescription().isEmpty() && Config_getBool(BRIEF_MEMBER_DESC))
1037  {
1040  ol.endMemberDescription();
1041  }
1042  ol.endMemberDeclaration(0,0);
1043  }
1044  }
1045  ol.endMemberList();
1046  }
1047 }
1048 
1050 {
1051  // write list of directories
1052  if (m_dirList->count()>0)
1053  {
1054  ol.startMemberHeader("dirs");
1055  ol.parseText(title);
1056  ol.endMemberHeader();
1057  ol.startMemberList();
1059  DirDef *dd;
1060  for (;(dd=it.current());++it)
1061  {
1062  if (!dd->hasDocumentation()) continue;
1064  ol.startMemberItem(dd->getOutputFileBase(),0);
1066  ol.insertMemberAlign();
1067  ol.writeObjectLink(dd->getReference(),dd->getOutputFileBase(),0,dd->shortName());
1068  ol.endMemberItem();
1069  if (!dd->briefDescription().isEmpty() && Config_getBool(BRIEF_MEMBER_DESC))
1070  {
1073  ol.endMemberDescription();
1074  }
1075  ol.endMemberDeclaration(0,0);
1076  }
1077 
1078  ol.endMemberList();
1079  }
1080 }
1081 
1083 {
1084  // write list of classes
1085  m_classSDict->writeDeclaration(ol,0,title,FALSE);
1086 }
1087 
1089 {
1091 }
1092 
1094 {
1095  PageDef *pd=0;
1097  for (pdi.toFirst();(pd=pdi.current());++pdi)
1098  {
1099  if (!pd->isReference())
1100  {
1101  const SectionInfo *si=0;
1102  if (pd->hasTitle() && !pd->name().isEmpty() &&
1103  (si=SectionManager::instance().find(pd->name()))!=0)
1104  {
1106  ol.docify(si->title());
1108  }
1109  ol.startTextBlock();
1110  ol.generateDoc(pd->docFile(),pd->docLine(),pd,0,pd->documentation()+pd->inbodyDocumentation(),TRUE,FALSE,0,TRUE,FALSE);
1111  ol.endTextBlock();
1112  }
1113  }
1114 }
1115 
1117 {
1118  /* write user defined member groups */
1119  if (m_memberGroupSDict)
1120  {
1122  /* write user defined member groups */
1124  MemberGroup *mg;
1125  for (;(mg=mgli.current());++mgli)
1126  {
1127  mg->writeDeclarations(ol,0,0,0,this);
1128  }
1129  }
1130 }
1131 
1133 {
1134  ol.startMemberSections();
1135 }
1136 
1138 {
1139  ol.endMemberSections();
1140 }
1141 
1143 {
1144  //printf("** GroupDefImpl::startMemberDocumentation()\n");
1145  if (Config_getBool(SEPARATE_MEMBER_PAGES))
1146  {
1147  ol.pushGeneratorState();
1150  }
1151 }
1152 
1154 {
1155  //printf("** GroupDefImpl::endMemberDocumentation()\n");
1156  if (Config_getBool(SEPARATE_MEMBER_PAGES))
1157  {
1158  ol.popGeneratorState();
1160  }
1161 }
1162 
1164 {
1165  // write Author section (Man only)
1166  ol.pushGeneratorState();
1168  ol.startGroupHeader();
1170  ol.endGroupHeader();
1172  ol.popGeneratorState();
1173 }
1174 
1176 {
1177  ol.pushGeneratorState();
1181  LayoutDocEntry *lde;
1182  bool first=TRUE;
1183  SrcLangExt lang = getLanguage();
1184  for (eli.toFirst();(lde=eli.current());++eli)
1185  {
1188  (lde->kind()==LayoutDocEntry::GroupFiles && m_fileList->count()>0) ||
1190  (lde->kind()==LayoutDocEntry::GroupDirs && m_dirList->count()>0)
1191  )
1192  {
1194  QCString label = lde->kind()==LayoutDocEntry::GroupClasses ? "nested-classes" :
1195  lde->kind()==LayoutDocEntry::GroupNamespaces ? "namespaces" :
1196  lde->kind()==LayoutDocEntry::GroupFiles ? "files" :
1197  lde->kind()==LayoutDocEntry::GroupNestedGroups ? "groups" :
1198  "dirs";
1199  ol.writeSummaryLink(0,label,ls->title(lang),first);
1200  first=FALSE;
1201  }
1202  else if (lde->kind()==LayoutDocEntry::MemberDecl)
1203  {
1205  MemberList * ml = getMemberList(lmd->type);
1206  if (ml && ml->declVisible())
1207  {
1208  ol.writeSummaryLink(0,MemberList::listTypeAsString(ml->listType()),lmd->title(lang),first);
1209  first=FALSE;
1210  }
1211  }
1212  }
1213  if (!first)
1214  {
1215  ol.writeString(" </div>\n");
1216  }
1217  ol.popGeneratorState();
1218 }
1219 
1221 {
1222  //static bool generateTreeView = Config_getBool(GENERATE_TREEVIEW);
1223  ol.pushGeneratorState();
1225 
1226  ol.startHeaderSection();
1227  writeSummaryLinks(ol);
1229  ol.pushGeneratorState();
1231  ol.parseText(m_title);
1232  ol.popGeneratorState();
1233  addGroupListToTitle(ol,this);
1234  ol.pushGeneratorState();
1237  ol.popGeneratorState();
1238  ol.pushGeneratorState();
1241  ol.popGeneratorState();
1242  ol.endHeaderSection();
1243  ol.startContents();
1244 
1246  {
1248  static QRegExp we("[a-zA-Z_][-a-zA-Z_0-9]*");
1249  int i=0,p=0,l=0;
1250  while ((i=we.match(m_title,p,&l))!=-1) // foreach word in the title
1251  {
1253  p=i+l;
1254  }
1255  }
1256 
1258 
1259  //---------------------------------------- start flexible part -------------------------------
1260 
1261  SrcLangExt lang=getLanguage();
1264  LayoutDocEntry *lde;
1265  for (eli.toFirst();(lde=eli.current());++eli)
1266  {
1267  switch (lde->kind())
1268  {
1271  break;
1274  break;
1276  {
1278  writeClasses(ol,ls->title(lang));
1279  }
1280  break;
1282  {
1283  writeInlineClasses(ol);
1284  }
1285  break;
1287  {
1289  writeNamespaces(ol,ls->title(lang));
1290  }
1291  break;
1293  writeMemberGroups(ol);
1294  break;
1296  {
1298  writeMemberDeclarations(ol,lmd->type,lmd->title(lang));
1299  }
1300  break;
1303  break;
1305  {
1307  writeDetailedDescription(ol,ls->title(lang));
1308  }
1309  break;
1312  break;
1314  {
1316  writeMemberDocumentation(ol,lmd->type,lmd->title(lang));
1317  }
1318  break;
1321  break;
1323  {
1325  writeNestedGroups(ol,ls->title(lang));
1326  }
1327  break;
1330  break;
1332  {
1334  writeDirs(ol,ls->title(lang));
1335  }
1336  break;
1338  {
1340  writeFiles(ol,ls->title(lang));
1341  }
1342  break;
1344  writeGroupGraph(ol);
1345  break;
1347  writeAuthorSection(ol);
1348  break;
1377  err("Internal inconsistency: member %d should not be part of "
1378  "LayoutDocManager::Group entry list\n",lde->kind());
1379  break;
1380  }
1381  }
1382 
1383  //---------------------------------------- end flexible part -------------------------------
1384 
1385  endFile(ol);
1386 
1387  ol.popGeneratorState();
1388 
1389  if (Config_getBool(SEPARATE_MEMBER_PAGES))
1390  {
1391  m_allMemberList->sort();
1392  writeMemberPages(ol);
1393  }
1394 
1395 }
1396 
1398 {
1399  ol.pushGeneratorState();
1401 
1403  MemberList *ml;
1404  for (mli.toFirst();(ml=mli.current());++mli)
1405  {
1407  {
1408  ml->writeDocumentationPage(ol,name(),this);
1409  }
1410  }
1411 
1412  ol.popGeneratorState();
1413 }
1414 
1416 {
1417  static bool createSubDirs=Config_getBool(CREATE_SUBDIRS);
1418 
1419  ol.writeString(" <div class=\"navtab\">\n");
1420  ol.writeString(" <table>\n");
1421 
1423  MemberDef *md;
1424  for (mli.toFirst();(md=mli.current());++mli)
1425  {
1426  if (md->getGroupDef()==this && md->isLinkable() && !md->isEnumValue())
1427  {
1428  ol.writeString(" <tr><td class=\"navtab\">");
1429  if (md->isLinkableInProject())
1430  {
1431  if (md==currentMd) // selected item => highlight
1432  {
1433  ol.writeString("<a class=\"qindexHL\" ");
1434  }
1435  else
1436  {
1437  ol.writeString("<a class=\"qindex\" ");
1438  }
1439  ol.writeString("href=\"");
1440  if (createSubDirs) ol.writeString("../../");
1442  ol.writeString("\">");
1443  ol.writeString(convertToHtml(md->localName()));
1444  ol.writeString("</a>");
1445  }
1446  ol.writeString("</td></tr>\n");
1447  }
1448  }
1449 
1450  ol.writeString(" </table>\n");
1451  ol.writeString(" </div>\n");
1452 }
1453 
1454 
1455 
1456 //---- helper functions ------------------------------------------------------
1457 
1458 void addClassToGroups(const Entry *root,ClassDef *cd)
1459 {
1460  for (const Grouping &g : root->groups)
1461  {
1462  GroupDef *gd=0;
1463  if (!g.groupname.isEmpty() && (gd=Doxygen::groupSDict->find(g.groupname)))
1464  {
1465  if (gd->addClass(cd))
1466  {
1467  cd->makePartOfGroup(gd);
1468  }
1469  //printf("Compound %s: in group %s\n",cd->name().data(),gd->groupTitle());
1470  }
1471  }
1472 }
1473 
1475 {
1476  //printf("root->groups.size()=%d\n",root->groups.size());
1477  for (const Grouping &g : root->groups)
1478  {
1479  GroupDef *gd=0;
1480  //printf("group '%s'\n",s->data());
1481  if (!g.groupname.isEmpty() && (gd=Doxygen::groupSDict->find(g.groupname)))
1482  {
1483  if (gd->addNamespace(nd)) nd->makePartOfGroup(gd);
1484  //printf("Namespace %s: in group %s\n",nd->name().data(),s->data());
1485  }
1486  }
1487 }
1488 
1489 void addDirToGroups(const Entry *root,DirDef *dd)
1490 {
1491  //printf("*** root->groups.size()=%d\n",root->groups.size());
1492  for (const Grouping &g : root->groups)
1493  {
1494  GroupDef *gd=0;
1495  //printf("group '%s'\n",g->groupname.data());
1496  if (!g.groupname.isEmpty() && (gd=Doxygen::groupSDict->find(g.groupname)))
1497  {
1498  gd->addDir(dd);
1499  dd->makePartOfGroup(gd);
1500  //printf("Dir %s: in group %s\n",dd->name().data(),g->groupname.data());
1501  }
1502  }
1503 }
1504 
1505 void addGroupToGroups(const Entry *root,GroupDef *subGroup)
1506 {
1507  //printf("addGroupToGroups for %s groups=%d\n",root->name.data(),root->groups.size());
1508  for (const Grouping &g : root->groups)
1509  {
1510  GroupDef *gd=0;
1511  if (!g.groupname.isEmpty() && (gd=Doxygen::groupSDict->find(g.groupname)))
1512  {
1513  if (gd==subGroup)
1514  {
1515  warn(root->fileName,root->startLine,"Refusing to add group %s to itself",
1516  gd->name().data());
1517  }
1518  else if (subGroup->findGroup(gd))
1519  {
1520  warn(root->fileName,root->startLine,"Refusing to add group %s to group %s, since the latter is already a "
1521  "subgroup of the former\n", subGroup->name().data(),gd->name().data());
1522  }
1523  else if (!gd->findGroup(subGroup))
1524  {
1525  gd->addGroup(subGroup);
1526  subGroup->makePartOfGroup(gd);
1527  }
1528  }
1529  }
1530 }
1531 
1533 void addMemberToGroups(const Entry *root,MemberDef *md)
1534 {
1535  //printf("addMemberToGroups: Root %p = %s, md %p=%s groups=%d\n",
1536  // root, root->name.data(), md, md->name().data(), root->groups->count() );
1537 
1538  // Search entry's group list for group with highest pri.
1540  GroupDef *fgd=0;
1541  for (const Grouping &g : root->groups)
1542  {
1543  GroupDef *gd=0;
1544  if (!g.groupname.isEmpty() &&
1545  (gd=Doxygen::groupSDict->find(g.groupname)) &&
1546  g.pri >= pri)
1547  {
1548  if (fgd && gd!=fgd && g.pri==pri)
1549  {
1550  warn(root->fileName.data(), root->startLine,
1551  "Member %s found in multiple %s groups! "
1552  "The member will be put in group %s, and not in group %s",
1553  md->name().data(), Grouping::getGroupPriName( pri ),
1554  gd->name().data(), fgd->name().data()
1555  );
1556  }
1557 
1558  fgd = gd;
1559  pri = g.pri;
1560  }
1561  }
1562  //printf("fgd=%p\n",fgd);
1563 
1564  // put member into group defined by this entry?
1565  if (fgd)
1566  {
1567  GroupDef *mgd = const_cast<GroupDef*>(md->getGroupDef());
1568  //printf("mgd=%p\n",mgd);
1569  bool insertit = FALSE;
1570  if (mgd==0)
1571  {
1572  insertit = TRUE;
1573  }
1574  else if (mgd!=fgd)
1575  {
1576  bool moveit = FALSE;
1577 
1578  // move member from one group to another if
1579  // - the new one has a higher priority
1580  // - the new entry has the same priority, but with docs where the old one had no docs
1581  if (md->getGroupPri()<pri)
1582  {
1583  moveit = TRUE;
1584  }
1585  else
1586  {
1587  if (md->getGroupPri()==pri)
1588  {
1589  if (!root->doc.isEmpty() && !md->getGroupHasDocs())
1590  {
1591  moveit = TRUE;
1592  }
1593  else if (!root->doc.isEmpty() && md->getGroupHasDocs())
1594  {
1596  "Member documentation for %s found several times in %s groups!\n"
1597  "%s:%d: The member will remain in group %s, and won't be put into group %s",
1598  md->name().data(), Grouping::getGroupPriName( pri ),
1599  root->fileName.data(), root->startLine,
1600  mgd->name().data(),
1601  fgd->name().data()
1602  );
1603  }
1604  }
1605  }
1606 
1607  if (moveit)
1608  {
1609  //printf("removeMember\n");
1610  mgd->removeMember(md);
1611  insertit = TRUE;
1612  }
1613  }
1614 
1615  if (insertit)
1616  {
1617  //printf("insertMember found at %s line %d: %s: related %s\n",
1618  // md->getDefFileName().data(),md->getDefLine(),
1619  // md->name().data(),root->relates.data());
1620  bool success = fgd->insertMember(md);
1621  if (success)
1622  {
1623  //printf("insertMember successful\n");
1624  md->setGroupDef(fgd,pri,root->fileName,root->startLine,
1625  !root->doc.isEmpty());
1627  if (cd)
1628  {
1629  cd->setGroupDefForAllMembers(fgd,pri,root->fileName,root->startLine,root->doc.length() != 0);
1630  }
1631  }
1632  }
1633  }
1634 }
1635 
1636 
1637 void addExampleToGroups(const Entry *root,PageDef *eg)
1638 {
1639  for (const Grouping &g : root->groups)
1640  {
1641  GroupDef *gd=0;
1642  if (!g.groupname.isEmpty() && (gd=Doxygen::groupSDict->find(g.groupname)))
1643  {
1644  gd->addExample(eg);
1645  eg->makePartOfGroup(gd);
1646  //printf("Example %s: in group %s\n",eg->name().data(),s->data());
1647  }
1648  }
1649 }
1650 
1652 {
1653  return m_fileName;
1654 }
1655 
1657 {
1658  {
1659  const std::vector<RefItem*> &xrefItems = xrefListItems();
1660  addRefItem(xrefItems,
1663  getOutputFileBase(),name(),
1664  0,
1665  0
1666  );
1667  }
1669  MemberGroup *mg;
1670  for (;(mg=mgli.current());++mgli)
1671  {
1672  mg->addListReferences(this);
1673  }
1675  MemberList *ml;
1676  for (mli.toFirst();(ml=mli.current());++mli)
1677  {
1679  {
1680  ml->addListReferences(this);
1681  }
1682  }
1683 }
1684 
1686 {
1689  MemberList *ml;
1690  for (mli.toFirst();(ml=mli.current());++mli)
1691  {
1692  if (ml->listType()==lt)
1693  {
1694  return ml;
1695  }
1696  }
1697  // not found, create a new member list
1698  ml = new MemberList(lt);
1699  m_memberLists.append(ml);
1700  ml->setInGroup(TRUE);
1701  return ml;
1702 }
1703 
1705 {
1706  static bool sortBriefDocs = Config_getBool(SORT_BRIEF_DOCS);
1707  static bool sortMemberDocs = Config_getBool(SORT_MEMBER_DOCS);
1708  MemberList *ml = createMemberList(lt);
1709  ml->setNeedsSorting(
1710  ((ml->listType()&MemberListType_declarationLists) && sortBriefDocs) ||
1711  ((ml->listType()&MemberListType_documentationLists) && sortMemberDocs));
1712  ml->append(md);
1713 }
1714 
1716 {
1718  MemberList *ml;
1719  for (;(ml=mli.current());++mli)
1720  {
1721  if (ml->needsSorting()) { ml->sort(); ml->setNeedsSorting(FALSE); }
1722  }
1723 }
1724 
1726 {
1728  MemberList *ml;
1729  for (;(ml=mli.current());++mli)
1730  {
1731  if (ml->listType()==lt)
1732  {
1733  return ml;
1734  }
1735  }
1736  return 0;
1737 }
1738 
1740 {
1741  static bool optimizeVhdl = Config_getBool(OPTIMIZE_OUTPUT_VHDL);
1742 
1743  MemberList * ml = getMemberList(lt);
1744  if (optimizeVhdl && ml)
1745  {
1746  VhdlDocGen::writeVhdlDeclarations(ml,ol,this,0,0,0);
1747  return;
1748  }
1749  if (ml)
1750  {
1751  ml->writeDeclarations(ol,0,0,0,this,title,0);
1752  }
1753 }
1754 
1756 {
1757  MemberList * ml = getMemberList(lt);
1758  if (ml) ml->writeDocumentation(ol,name(),this,title);
1759 }
1760 
1762 {
1763  MemberList *ml = getMemberList(lt);
1764  if (ml) ml->remove(md);
1765 }
1766 
1768 {
1769  m_groupList->sort();
1770 }
1771 
1773 {
1774  return !isReference() && isLinkable();
1775 }
1776 
1778 {
1779  return hasUserDocumentation();
1780 }
1781 
1782 // let the "programming language" for a group depend on what is inserted into it.
1783 // First item that has an associated languages determines the language for the whole group.
1785 {
1787  {
1788  setLanguage(d->getLanguage());
1789  }
1790 }
1791 
1793 {
1794  static bool repeatBrief = Config_getBool(REPEAT_BRIEF);
1795  return ((!briefDescription().isEmpty() && repeatBrief) ||
1796  !documentation().isEmpty());
1797 }
1798 
LayoutDocEntry::MemberDecl
@ MemberDecl
Definition: layout.h:36
LayoutDocEntry::FileConstantGroups
@ FileConstantGroups
Definition: layout.h:53
GroupDefImpl::getExamples
virtual PageSDict * getExamples() const
Definition: groupdef.cpp:105
GroupDefImpl::addMemberToList
void addMemberToList(MemberListType lt, MemberDef *md)
Definition: groupdef.cpp:1704
PageDef::hasTitle
virtual bool hasTitle() const =0
SrcLangExt_Unknown
@ SrcLangExt_Unknown
Definition: types.h:44
LayoutDocEntry::MemberGroups
@ MemberGroups
Definition: layout.h:35
MemberList::append
void append(const MemberDef *md)
Definition: memberlist.cpp:262
OutputGenerator::Man
@ Man
Definition: outputgen.h:325
outputlist.h
DefinitionImpl::name
virtual QCString name() const
Definition: definition.cpp:2184
MemberDef::argumentList
virtual const ArgumentList & argumentList() const =0
QRegExp
Definition of QRegExp class.
Definition: qregexp.h:47
MemberListType_decEnumValMembers
@ MemberListType_decEnumValMembers
Definition: types.h:155
ArgumentList
This class represents an function or template argument list.
Definition: arguments.h:60
LayoutDocEntry::GroupDirs
@ GroupDirs
Definition: layout.h:60
GroupDefImpl::writePageDocumentation
void writePageDocumentation(OutputList &ol)
Definition: groupdef.cpp:1093
LayoutDocEntrySection::title
QCString title(SrcLangExt lang) const
Definition: layout.cpp:1598
MemberList::addListReferences
void addListReferences(Definition *def)
Definition: memberlist.cpp:935
GroupDefImpl
Copyright (C) 1997-2015 by Dimitri van Heesch.
Definition: groupdef.cpp:49
GroupDefImpl::addMemberListToGroup
void addMemberListToGroup(MemberList *, bool(MemberDef::*)() const)
QCString::isEmpty
bool isEmpty() const
Returns TRUE iff the string is empty.
Definition: qcstring.h:191
QList::remove
bool remove(uint i)
Definition: qlist.h:76
GroupDefImpl::writeQuickMemberLinks
virtual void writeQuickMemberLinks(OutputList &ol, const MemberDef *currentMd) const
Definition: groupdef.cpp:1415
warn
void warn(const char *file, int line, const char *fmt,...)
Definition: message.cpp:195
OutputList::endParagraph
void endParagraph()
Definition: outputlist.h:97
LayoutDocEntry::NamespaceNestedNamespaces
@ NamespaceNestedNamespaces
Definition: layout.h:48
MemberType_Variable
@ MemberType_Variable
Definition: types.h:200
OutputList::enableAll
void enableAll()
Definition: outputlist.cpp:56
MemberListIterator
An iterator for MemberDef objects in a MemberList.
Definition: memberlist.h:124
GroupDefImpl::groupTitle
virtual const char * groupTitle() const
Definition: groupdef.cpp:58
startFile
void startFile(OutputList &ol, const char *name, const char *manName, const char *title, HighlightedItem hli, bool additionalIndices, const char *altSidebarName)
Definition: index.cpp:273
QList::setAutoDelete
void setAutoDelete(bool enable)
Definition: qlist.h:99
MemberListType_decEventMembers
@ MemberListType_decEventMembers
Definition: types.h:160
PageDef
A model of a page symbol.
Definition: pagedef.h:30
GroupDefImpl::writeMemberDeclarations
void writeMemberDeclarations(OutputList &ol, MemberListType lt, const QCString &title)
Definition: groupdef.cpp:1739
NamespaceSDict
A sorted dictionary of NamespaceDef objects.
Definition: namespacedef.h:155
MemberList::listTypeAsString
static QCString listTypeAsString(MemberListType type)
Definition: memberlist.cpp:993
membergroup.h
MemberList::needsSorting
bool needsSorting() const
Definition: memberlist.h:67
Translator::trGeneratedAutomatically
virtual QCString trGeneratedAutomatically(const char *s)=0
MemberListType
MemberListType
Definition: types.h:101
GroupDefImpl::m_allMemberList
MemberList * m_allMemberList
Definition: groupdef.cpp:145
GroupDefImpl::m_fileName
QCString m_fileName
Definition: groupdef.cpp:137
MemberListType_docProSlotMembers
@ MemberListType_docProSlotMembers
Definition: types.h:172
MemberDef::getGroupStartLine
virtual int getGroupStartLine() const =0
Grouping::groupname
QCString groupname
name of the group
Definition: types.h:95
uint
unsigned uint
Definition: qglobal.h:351
MemberListType_docEnumMembers
@ MemberListType_docEnumMembers
Definition: types.h:167
MemberDef::isFunction
virtual bool isFunction() const =0
ClassDef
A abstract class representing of a compound symbol.
Definition: classdef.h:61
DirDef::shortName
virtual const QCString & shortName() const =0
GroupDef::addGroup
virtual void addGroup(const GroupDef *def)=0
MemberType_EnumValue
@ MemberType_EnumValue
Definition: types.h:203
GroupDefImpl::setGroupScope
virtual void setGroupScope(Definition *d)
Definition: groupdef.cpp:90
GroupDefImpl::findGroup
virtual bool findGroup(const GroupDef *def) const
Definition: groupdef.cpp:626
MemberGroup::distributeMemberGroupDocumentation
void distributeMemberGroupDocumentation()
Definition: membergroup.cpp:212
GroupDefImpl::updateLanguage
void updateLanguage(const Definition *)
Definition: groupdef.cpp:1784
GroupDefImpl::writeNestedGroups
void writeNestedGroups(OutputList &ol, const QCString &title)
Definition: groupdef.cpp:999
MemberListType_decProSlotMembers
@ MemberListType_decProSlotMembers
Definition: types.h:157
HLI_Modules
@ HLI_Modules
Definition: index.h:139
MemberType_Signal
@ MemberType_Signal
Definition: types.h:204
GroupDefImpl::m_title
QCString m_title
Definition: groupdef.cpp:135
GroupDefImpl::~GroupDefImpl
virtual ~GroupDefImpl()
Definition: groupdef.cpp:194
pagedef.h
GroupDefImpl::GroupDefImpl
GroupDefImpl(const char *fileName, int line, const char *name, const char *title, const char *refFileName=0)
Definition: groupdef.cpp:163
Doxygen::searchIndex
static SearchIndexIntf * searchIndex
Definition: doxygen.h:122
LayoutDocEntry::NamespaceExceptions
@ NamespaceExceptions
Definition: layout.h:49
DefinitionImpl::docLine
virtual int docLine() const
Definition: definition.cpp:1896
MemberGroup::addListReferences
void addListReferences(Definition *d)
Definition: membergroup.cpp:339
ClassDef::isLinkableInProject
virtual bool isLinkableInProject() const =0
returns TRUE iff a link is possible to this item within this project.
LayoutDocEntry::ClassInlineClasses
@ ClassInlineClasses
Definition: layout.h:42
OutputList::insertMemberAlign
void insertMemberAlign(bool templ=FALSE)
Definition: outputlist.h:216
DefinitionImpl::partOfGroups
virtual GroupList * partOfGroups() const
Definition: definition.cpp:2080
MemberList::count
uint count() const
Definition: memberlist.cpp:277
DefinitionImpl::isReference
virtual bool isReference() const
Definition: definition.cpp:2055
MemberNameInfoSDict
Sorted dictionary of MemberNameInfo objects.
Definition: membername.h:77
ClassDef::setGroupDefForAllMembers
virtual void setGroupDefForAllMembers(GroupDef *g, Grouping::GroupPri_t pri, const QCString &fileName, int startLine, bool hasDocs)=0
LayoutDocEntry::ClassAllMembersLink
@ ClassAllMembersLink
Definition: layout.h:44
QCString::findRev
int findRev(char c, int index=-1, bool cs=TRUE) const
Definition: qcstring.cpp:97
DocRoot::isEmpty
bool isEmpty() const
Definition: docparser.h:1483
LayoutDocEntry::FileStructs
@ FileStructs
Definition: layout.h:53
OutputList::writeObjectLink
void writeObjectLink(const char *ref, const char *file, const char *anchor, const char *name)
Definition: outputlist.h:129
LayoutDocEntry::MemberDeclStart
@ MemberDeclStart
Definition: layout.h:36
FTextStream
Simplified and optimized version of QTextStream.
Definition: ftextstream.h:12
DefinitionImpl
Copyright (C) 1997-2019 by Dimitri van Heesch.
Definition: definitionimpl.h:24
MemberListType_allMembersList
@ MemberListType_allMembersList
Definition: types.h:147
GroupDefImpl::m_classSDict
ClassSDict * m_classSDict
Definition: groupdef.cpp:139
OutputList::endMemberDescription
void endMemberDescription()
Definition: outputlist.h:291
Translator::trDir
virtual QCString trDir(bool first_capital, bool singular)=0
OutputList::endGroupCollaboration
void endGroupCollaboration(DotGroupCollaboration &g)
Definition: outputlist.h:388
qregexp.h
LayoutDocEntry::FileExceptions
@ FileExceptions
Definition: layout.h:53
QList::append
void append(const type *d)
Definition: qlist.h:73
namespacedef.h
OutputList::pushGeneratorState
void pushGeneratorState()
Definition: outputlist.cpp:98
OutputList::parseText
void parseText(const QCString &textStr)
Definition: outputlist.cpp:151
GroupDefImpl::displayName
virtual QCString displayName(bool=TRUE) const
Definition: groupdef.cpp:57
GroupDefImpl::endMemberDocumentation
void endMemberDocumentation(OutputList &ol)
Definition: groupdef.cpp:1153
membername.h
Grouping::GroupPri_t
GroupPri_t
Grouping priority.
Definition: types.h:68
LayoutDocEntry::FileSourceLink
@ FileSourceLink
Definition: layout.h:55
LayoutDocEntryMemberDecl
Represents of a member declaration list with configurable title and subtitle.
Definition: layout.h:91
SrcLangExt
SrcLangExt
Language as given by extension.
Definition: types.h:43
MemberDef::getClassDefOfAnonymousType
virtual ClassDef * getClassDefOfAnonymousType() const =0
OutputList::startTitleHead
void startTitleHead(const char *fileName)
Definition: outputlist.h:87
MemberType_Friend
@ MemberType_Friend
Definition: types.h:206
DefinitionImpl::docFile
virtual QCString docFile() const
Definition: definition.cpp:1901
GroupDefImpl::m_fileList
FileList * m_fileList
Definition: groupdef.cpp:138
GroupDef::addNamespace
virtual bool addNamespace(const NamespaceDef *def)=0
GroupDefImpl::endMemberDeclarations
void endMemberDeclarations(OutputList &ol)
Definition: groupdef.cpp:1137
LayoutDocEntryMemberDef
Represents of a member definition list with configurable title.
Definition: layout.h:107
MemberType_Enumeration
@ MemberType_Enumeration
Definition: types.h:202
addNamespaceToGroups
void addNamespaceToGroups(const Entry *root, NamespaceDef *nd)
Definition: groupdef.cpp:1474
GroupDef::addExample
virtual void addExample(const PageDef *def)=0
QListIterator
The QListIterator class provides an iterator for QList collections.
Definition: qlist.h:128
GroupDefImpl::m_exampleDict
PageSDict * m_exampleDict
Definition: groupdef.cpp:143
Definition::makePartOfGroup
virtual void makePartOfGroup(GroupDef *gd)=0
Definition::isHidden
virtual bool isHidden() const =0
MemberType_Typedef
@ MemberType_Typedef
Definition: types.h:201
GroupDefImpl::m_memberLists
QList< MemberList > m_memberLists
Definition: groupdef.cpp:148
GroupDefImpl::getOutputFileBase
virtual QCString getOutputFileBase() const
Definition: groupdef.cpp:1651
SDict::inSort
void inSort(const char *key, const T *d)
Definition: sortdict.h:197
PageDef::getOutputFileBase
virtual QCString getOutputFileBase() const =0
GroupDefImpl::writeMemberDocumentation
void writeMemberDocumentation(OutputList &ol, MemberListType lt, const QCString &title)
Definition: groupdef.cpp:1755
Translator::trFile
virtual QCString trFile(bool first_capital, bool singular)=0
validatingParseDoc
DocRoot * validatingParseDoc(const char *fileName, int startLine, const Definition *ctx, const MemberDef *md, const char *input, bool indexWords, bool isExample, const char *exampleName, bool singleLine, bool linkFromIndex)
Definition: docparser.cpp:7574
data
const char *const void * data
Definition: iconv.h:120
MemberDef::templateArguments
virtual const ArgumentList & templateArguments() const =0
LayoutDocEntry::GroupFiles
@ GroupFiles
Definition: layout.h:60
OutputList::generateDoc
void generateDoc(const char *fileName, int startLine, const Definition *ctx, const MemberDef *md, const QCString &docStr, bool indexWords, bool isExample, const char *exampleName=0, bool singleLine=FALSE, bool linkFromIndex=FALSE)
Definition: outputlist.cpp:114
definitionimpl.h
MemberListType_docDefineMembers
@ MemberListType_docDefineMembers
Definition: types.h:164
GroupDefImpl::removeMember
virtual void removeMember(MemberDef *md)
Definition: groupdef.cpp:539
Public
@ Public
Definition: types.h:27
QCString::length
uint length() const
Returns the length of the string, excluding the 0-terminator.
Definition: qcstring.h:197
languages.l
l
Definition: languages.py:75
FileList
Class representing a list of FileDef objects.
Definition: filedef.h:191
MemberGroup::findSectionsInDocumentation
void findSectionsInDocumentation(const Definition *d)
Definition: membergroup.cpp:353
VhdlDocGen::writeVhdlDeclarations
static void writeVhdlDeclarations(const MemberList *, OutputList &, const GroupDef *, const ClassDef *, const FileDef *, const NamespaceDef *)
Definition: vhdldocgen.cpp:1689
DefinitionIntf::DefType
DefType
Definition: definition.h:79
err
void err(const char *fmt,...)
Definition: message.cpp:238
Definition::docFile
virtual QCString docFile() const =0
GroupDefImpl::writeMemberPages
virtual void writeMemberPages(OutputList &ol)
Definition: groupdef.cpp:1397
GroupDefImpl::isASubGroup
virtual bool isASubGroup() const
Definition: groupdef.cpp:656
LayoutDocEntry::FileClasses
@ FileClasses
Definition: layout.h:53
Definition::briefDescription
virtual QCString briefDescription(bool abbreviate=FALSE) const =0
QList< MemberList >
GroupDefImpl::m_subGrouping
bool m_subGrouping
Definition: groupdef.cpp:150
MemberList::writeDeclarations
void writeDeclarations(OutputList &ol, const ClassDef *cd, const NamespaceDef *nd, const FileDef *fd, const GroupDef *gd, const char *title, const char *subtitle, bool showEnumValues=FALSE, bool showInline=FALSE, const ClassDef *inheritedFrom=0, MemberListType lt=MemberListType_pubMethods) const
Writes the list of members to the output.
Definition: memberlist.cpp:604
GroupDefImpl::writeBriefDescription
void writeBriefDescription(OutputList &ol)
Definition: groupdef.cpp:905
GroupDefImpl::getGroupScope
virtual Definition * getGroupScope() const
Definition: groupdef.cpp:91
SIntDict::sort
void sort()
Definition: sortdict.h:518
OutputList::disable
void disable(OutputGenerator::OutputType o)
Definition: outputlist.cpp:72
LayoutDocEntry::DirGraph
@ DirGraph
Definition: layout.h:64
MemberDef::anchor
virtual QCString anchor() const =0
LayoutDocEntry::FileIncludes
@ FileIncludes
Definition: layout.h:54
OutputList::startContents
void startContents()
Definition: outputlist.h:344
GroupDefImpl::addExample
virtual void addExample(const PageDef *def)
Definition: groupdef.cpp:347
MemberDef::getOutputFileBase
virtual QCString getOutputFileBase() const =0
config.h
FileDef::name
virtual QCString name() const =0
OutputList::endGroupHeader
void endGroupHeader(int extraLevels=0)
Definition: outputlist.h:158
LayoutDocEntrySection
Definition: layout.h:81
SectionInfo::title
QCString title() const
Definition: section.h:67
LayoutDocEntry::ClassUsedFiles
@ ClassUsedFiles
Definition: layout.h:45
OutputList::endMemberItem
void endMemberItem()
Definition: outputlist.h:198
DefinitionImpl::hasBriefDescription
virtual bool hasBriefDescription() const
returns TRUE if this class has a brief description
Definition: definition.cpp:2156
convertToHtml
QCString convertToHtml(const char *s, bool keepEntities)
Definition: util.cpp:5498
MemberGroupSDict
A sorted dictionary of MemberGroup objects.
Definition: membergroup.h:121
QCString
This is an alternative implementation of QCString.
Definition: qcstring.h:134
Definition::docLine
virtual int docLine() const =0
GroupDef::getOutputFileBase
virtual QCString getOutputFileBase() const =0
GroupDefImpl::hasDetailedDescription
virtual bool hasDetailedDescription() const
Definition: groupdef.cpp:1792
LayoutDocEntry::MemberDeclEnd
@ MemberDeclEnd
Definition: layout.h:36
createGroupDef
GroupDef * createGroupDef(const char *fileName, int line, const char *name, const char *title, const char *refFileName)
Definition: groupdef.cpp:154
GroupDef
A model of a group of symbols.
Definition: groupdef.h:48
QList::isEmpty
bool isEmpty() const
Definition: qlist.h:67
OutputList::endMemberDeclaration
void endMemberDeclaration(const char *anchor, const char *inheritId)
Definition: outputlist.h:295
DefinitionImpl::getLanguage
virtual SrcLangExt getLanguage() const
Returns the programming language this definition was written in.
Definition: definition.cpp:2120
LinkedMap::find
const T * find(const char *k) const
find an element given the key.
Definition: linkedmap.h:39
ClassSDict
A sorted dictionary of ClassDef objects.
Definition: classlist.h:57
MemberGroup::countDocMembers
void countDocMembers()
Definition: membergroup.cpp:200
OutputList::startMemberDescription
void startMemberDescription(const char *anchor, const char *inheritId=0, bool typ=false)
Definition: outputlist.h:289
Definition::localName
virtual QCString localName() const =0
MemberListType_declarationLists
@ MemberListType_declarationLists
Definition: types.h:104
SDict::append
void append(const char *key, const T *d)
Definition: sortdict.h:135
FileDef
A model of a file symbol.
Definition: filedef.h:65
GroupDefImpl::writeClasses
void writeClasses(OutputList &ol, const QCString &title)
Definition: groupdef.cpp:1082
MemberGroup
A class representing a group of members.
Definition: membergroup.h:42
Config_getString
#define Config_getString(val)
Definition: config.h:34
MemberListType_decFriendMembers
@ MemberListType_decFriendMembers
Definition: types.h:161
LayoutDocEntry::NamespaceStructs
@ NamespaceStructs
Definition: layout.h:49
addClassToGroups
void addClassToGroups(const Entry *root, ClassDef *cd)
Definition: groupdef.cpp:1458
SectionManager::instance
static SectionManager & instance()
returns a reference to the singleton
Definition: section.h:146
addRefItem
void addRefItem(const std::vector< RefItem * > &sli, const char *key, const char *prefix, const char *name, const char *title, const char *args, const Definition *scope)
Definition: util.cpp:6218
Translator::trMore
virtual QCString trMore()=0
OutputList::writeRuler
void writeRuler()
Definition: outputlist.h:220
MemberDef::setGroupAlias
virtual void setGroupAlias(const MemberDef *md)=0
OutputList::startTextBlock
void startTextBlock(bool dense=FALSE)
Definition: outputlist.h:392
MemberInfo::memberDef
MemberDef * memberDef
Definition: membername.h:46
PageSDict
Definition: pagedef.h:71
MemberDef
A model of a class/file/namespace member symbol.
Definition: memberdef.h:45
LayoutDocEntry::GroupInlineClasses
@ GroupInlineClasses
Definition: layout.h:59
LayoutDocEntryMemberDef::title
QCString title(SrcLangExt lang) const
Definition: layout.cpp:1617
IndexList::addIndexItem
void addIndexItem(const Definition *context, const MemberDef *md, const char *sectionAnchor=0, const char *title=0)
Definition: index.h:98
QCString::find
int find(char c, int index=0, bool cs=TRUE) const
Definition: qcstring.cpp:42
GroupDef::removeMember
virtual void removeMember(MemberDef *md)=0
addDirToGroups
void addDirToGroups(const Entry *root, DirDef *dd)
Definition: groupdef.cpp:1489
TRUE
@ TRUE
Definition: mscgen_bool.h:29
GroupDefImpl::getFiles
virtual FileList * getFiles() const
Definition: groupdef.cpp:99
FALSE
@ FALSE
Definition: mscgen_bool.h:28
MemberListType_docFriendMembers
@ MemberListType_docFriendMembers
Definition: types.h:176
dot.h
MemberGroup::writeTagFile
void writeTagFile(FTextStream &)
Definition: membergroup.cpp:364
entry.h
MemberType_Function
@ MemberType_Function
Definition: types.h:199
GroupDefImpl::getMemberGroupSDict
virtual MemberGroupSDict * getMemberGroupSDict() const
Definition: groupdef.cpp:97
GroupDefImpl::m_memberGroupSDict
MemberGroupSDict * m_memberGroupSDict
Definition: groupdef.cpp:149
addGroupToGroups
void addGroupToGroups(const Entry *root, GroupDef *subGroup)
Definition: groupdef.cpp:1505
MemberListType_decPropMembers
@ MemberListType_decPropMembers
Definition: types.h:162
GroupDefImpl::removeMemberFromList
void removeMemberFromList(MemberListType lt, MemberDef *md)
Definition: groupdef.cpp:1761
convertToXML
QCString convertToXML(const char *s, bool keepEntities)
Definition: util.cpp:5386
LayoutDocEntry::MemberDefEnd
@ MemberDefEnd
Definition: layout.h:37
MemberListType_decVarMembers
@ MemberListType_decVarMembers
Definition: types.h:154
classlist.h
MemberType_Slot
@ MemberType_Slot
Definition: types.h:205
LayoutDocEntry::GroupGraph
@ GroupGraph
Definition: layout.h:61
Translator::trCollaborationDiagram
virtual QCString trCollaborationDiagram(const char *clName)=0
QCString::mid
QCString mid(uint index, uint len=(uint) -1) const
Definition: qcstring.cpp:274
Definition::getOuterScope
virtual Definition * getOuterScope() const =0
GroupDefImpl::sortSubGroups
virtual void sortSubGroups()
Definition: groupdef.cpp:1767
DefinitionImpl::writeDocAnchorsToTagFile
virtual void writeDocAnchorsToTagFile(FTextStream &) const
Definition: definition.cpp:500
docFindSections
void docFindSections(const char *input, const Definition *d, const char *fileName)
Definition: docparser.cpp:7832
OutputGenerator::RTF
@ RTF
Definition: outputgen.h:325
addMemberToGroups
void addMemberToGroups(const Entry *root, MemberDef *md)
Definition: groupdef.cpp:1533
Definition::getLanguage
virtual SrcLangExt getLanguage() const =0
Returns the programming language this definition was written in.
ClassDef::compoundTypeString
virtual QCString compoundTypeString() const =0
Returns the type of compound as a string.
Doxygen::htmlFileExtension
static QCString htmlFileExtension
Definition: doxygen.h:119
message.h
OutputList::disableAllBut
void disableAllBut(OutputGenerator::OutputType o)
Definition: outputlist.cpp:48
LayoutDocEntry::ClassIncludes
@ ClassIncludes
Definition: layout.h:42
GroupDefImpl::addPage
virtual void addPage(PageDef *def)
Definition: groupdef.cpp:339
dotgroupcollaboration.h
MemberList::remove
void remove(const MemberDef *md)
Definition: memberlist.cpp:267
DotGroupCollaboration
Copyright (C) 1997-2019 by Dimitri van Heesch.
Definition: dotgroupcollaboration.h:25
Definition::documentation
virtual QCString documentation() const =0
LayoutDocEntry::GroupNamespaces
@ GroupNamespaces
Definition: layout.h:59
MemberList::countDecMembers
void countDecMembers()
Definition: memberlist.cpp:133
MemberList::listType
MemberListType listType() const
Definition: memberlist.h:38
MemberListType_decPriSlotMembers
@ MemberListType_decPriSlotMembers
Definition: types.h:158
LayoutDocEntry::FileInlineClasses
@ FileInlineClasses
Definition: layout.h:56
GroupDefImpl::writeAuthorSection
void writeAuthorSection(OutputList &ol)
Definition: groupdef.cpp:1163
NamespaceSDict::declVisible
bool declVisible() const
Definition: namespacedef.cpp:1356
LayoutDocEntryMemberDef::type
MemberListType type
Definition: layout.h:112
MemberDef::setGroupDef
virtual void setGroupDef(GroupDef *gd, Grouping::GroupPri_t pri, const QCString &fileName, int startLine, bool hasDocs, MemberDef *member=0)=0
GroupDefImpl::createMemberList
MemberList * createMemberList(MemberListType lt)
Definition: groupdef.cpp:1685
OutputList::endTextBlock
void endTextBlock(bool paraBreak=FALSE)
Definition: outputlist.h:394
arguments.h
DefinitionIntf::TypeFile
@ TypeFile
Definition: definition.h:81
NamespaceDef
An abstract interface of a namespace symbol.
Definition: namespacedef.h:38
MemberInfo
Data associated with a MemberDef in an inheritance relation.
Definition: membername.h:42
MemberDef::protection
virtual Protection protection() const =0
theTranslator
Translator * theTranslator
Copyright (C) 1997-2015 by Dimitri van Heesch.
Definition: language.cpp:157
MemberList::writeDocumentationPage
void writeDocumentationPage(OutputList &ol, const char *scopeName, const Definition *container) const
Definition: memberlist.cpp:839
GroupDefImpl::writeFiles
void writeFiles(OutputList &ol, const QCString &title)
Definition: groupdef.cpp:961
MemberListType_decPubSlotMembers
@ MemberListType_decPubSlotMembers
Definition: types.h:156
OutputList::writeAnchor
void writeAnchor(const char *fileName, const char *name)
Definition: outputlist.h:222
LayoutDocEntry::GroupPageDocs
@ GroupPageDocs
Definition: layout.h:61
GroupDefImpl::addGroup
virtual void addGroup(const GroupDef *def)
Definition: groupdef.cpp:647
doxygen.h
SDict::setAutoDelete
void setAutoDelete(bool val)
Definition: sortdict.h:222
Doxygen::groupSDict
static GroupSDict * groupSDict
Definition: doxygen.h:112
SIntDict< MemberGroup >::Iterator
friend class Iterator
Definition: sortdict.h:594
MemberDef::getGroupFileName
virtual const char * getGroupFileName() const =0
GroupDefImpl::subGrouping
virtual bool subGrouping() const
Definition: groupdef.cpp:88
MemberListType_docSignalMembers
@ MemberListType_docSignalMembers
Definition: types.h:174
GroupDefImpl::m_titleSet
bool m_titleSet
Definition: groupdef.cpp:136
GroupDefImpl::definitionType
virtual DefType definitionType() const
Definition: groupdef.cpp:54
language.h
Grouping::GROUPING_LOWEST
@ GROUPING_LOWEST
Definition: types.h:69
Definition::inbodyDocumentation
virtual QCString inbodyDocumentation() const =0
OutputList::docify
void docify(const char *s)
Definition: outputlist.h:125
GroupDefImpl::writeSummaryLinks
void writeSummaryLinks(OutputList &ol) const
Definition: groupdef.cpp:1175
GroupDefImpl::distributeMemberGroupDocumentation
virtual void distributeMemberGroupDocumentation()
Definition: groupdef.cpp:224
GroupDefImpl::m_allMemberNameInfoSDict
MemberNameInfoSDict * m_allMemberNameInfoSDict
Definition: groupdef.cpp:146
LayoutDocEntryMemberDecl::type
MemberListType type
Definition: layout.h:97
QList::count
uint count() const
Definition: qlist.h:66
SIntDict::setAutoDelete
void setAutoDelete(bool val)
Definition: sortdict.h:541
MemberListType_docFuncMembers
@ MemberListType_docFuncMembers
Definition: types.h:168
DefinitionIntf::definitionType
virtual DefType definitionType() const =0
QListIterator::current
type * current() const
Definition: qlist.h:147
GroupDefImpl::getMemberLists
virtual const QList< MemberList > & getMemberLists() const
Definition: groupdef.cpp:94
LayoutDocEntry::DirSubDirs
@ DirSubDirs
Definition: layout.h:64
docparser.h
DefinitionImpl::xrefListItems
virtual const std::vector< RefItem * > & xrefListItems() const
Definition: definition.cpp:1626
DefinitionImpl::documentation
virtual QCString documentation() const
Definition: definition.cpp:1891
MemberDef::getClassDef
virtual const ClassDef * getClassDef() const =0
LayoutDocManager::instance
static LayoutDocManager & instance()
Returns a reference to this singleton.
Definition: layout.cpp:1515
GroupDefImpl::anchor
virtual QCString anchor() const
Definition: groupdef.cpp:56
LayoutDocEntry::NamespaceNestedConstantGroups
@ NamespaceNestedConstantGroups
Definition: layout.h:48
Definition
The common base class of all entity definitions found in the sources.
Definition: definition.h:100
Entry::startLine
int startLine
start line of entry in the source
Definition: entry.h:289
OutputList::endMemberSections
void endMemberSections()
Definition: outputlist.h:166
GroupDefImpl::getMemberList
virtual MemberList * getMemberList(MemberListType lt) const
Definition: groupdef.cpp:1725
QList::inSort
void inSort(const type *d)
Definition: qlist.h:71
filedef.h
LayoutDocEntry::MemberDef
@ MemberDef
Definition: layout.h:37
Definition::getReference
virtual QCString getReference() const =0
GroupDefImpl::addListReferences
virtual void addListReferences()
Definition: groupdef.cpp:1656
convertNameToFile
QCString convertNameToFile(const char *name, bool allowDots, bool allowUnderscore)
Definition: util.cpp:5022
OutputList::startMemberSections
void startMemberSections()
Definition: outputlist.h:164
QCString::left
QCString left(uint len) const
Definition: qcstring.cpp:241
MemberGroup::writeDeclarations
void writeDeclarations(OutputList &ol, const ClassDef *cd, const NamespaceDef *nd, const FileDef *fd, const GroupDef *gd, bool showInline=FALSE) const
Definition: membergroup.cpp:106
MemberNameInfo::memberName
const char * memberName() const
Definition: membername.h:61
GroupDefImpl::getSubGroups
virtual GroupList * getSubGroups() const
Definition: groupdef.cpp:102
GroupDefImpl::writeDocumentation
virtual void writeDocumentation(OutputList &ol)
Definition: groupdef.cpp:1220
FileDef::getOutputFileBase
virtual QCString getOutputFileBase() const =0
Translator::trAuthor
virtual QCString trAuthor(bool first_capital, bool singular)=0
LayoutDocEntry::GroupNestedGroups
@ GroupNestedGroups
Definition: layout.h:60
GroupDefImpl::writeMemberGroups
void writeMemberGroups(OutputList &ol)
Definition: groupdef.cpp:1116
GroupDefImpl::addDir
virtual void addDir(const DirDef *dd)
Definition: groupdef.cpp:330
MemberListType_decEnumMembers
@ MemberListType_decEnumMembers
Definition: types.h:152
MemberDef::getGroupPri
virtual Grouping::GroupPri_t getGroupPri() const =0
GroupDefImpl::isLinkableInProject
virtual bool isLinkableInProject() const
Definition: groupdef.cpp:1772
LayoutDocEntry::FileIncludedByGraph
@ FileIncludedByGraph
Definition: layout.h:55
GroupDefImpl::writeTagFile
virtual void writeTagFile(FTextStream &)
Definition: groupdef.cpp:701
NamespaceDef::isLinkableInProject
virtual bool isLinkableInProject() const =0
OutputList::startMemberItem
void startMemberItem(const char *anchor, int i1, const char *id=0)
Definition: outputlist.h:196
LayoutDocEntry::ClassNestedClasses
@ ClassNestedClasses
Definition: layout.h:43
Translator::trGroup
virtual QCString trGroup(bool first_capital, bool singular)=0
GroupDefImpl::addNamespace
virtual bool addNamespace(const NamespaceDef *def)
Definition: groupdef.cpp:314
Doxygen::indexList
static IndexList * indexList
Definition: doxygen.h:137
GroupListIterator
An iterator for GroupDef objects in a GroupList.
Definition: groupdef.h:137
OutputList::popGeneratorState
void popGeneratorState()
Definition: outputlist.cpp:106
OutputGenerator::Html
@ Html
Definition: outputgen.h:325
SectionType::Subsection
@ Subsection
memberlist.h
DirDef::displayName
virtual QCString displayName(bool=TRUE) const =0
DirDef
A model of a directory symbol.
Definition: dirdef.h:45
OutputList::startSection
void startSection(const char *lab, const char *title, SectionType t)
Definition: outputlist.h:314
QList::sort
void sort()
Definition: qlist.h:85
MemberNameInfoIterator
Iterator for MemberInfo objects in a MemberNameInfo list.
Definition: membername.h:69
OutputGenerator::Latex
@ Latex
Definition: outputgen.h:325
dirdef.h
MemberType_Property
@ MemberType_Property
Definition: types.h:208
Entry
Represents an unstructured piece of information, about an entity found in the sources.
Definition: entry.h:63
LayoutDocEntry::kind
virtual Kind kind() const =0
MemberDef::getGroupDef
virtual const GroupDef * getGroupDef() const =0
GroupDef::insertMember
virtual bool insertMember(MemberDef *def, bool docOnly=FALSE)=0
LayoutDocEntry::MemberDefStart
@ MemberDefStart
Definition: layout.h:37
MemberListType_decDefineMembers
@ MemberListType_decDefineMembers
Definition: types.h:149
DefinitionImpl::briefFile
virtual QCString briefFile() const
Definition: definition.cpp:1995
OutputList::writeDoc
void writeDoc(DocRoot *root, const Definition *ctx, const MemberDef *md)
Definition: outputlist.cpp:140
GroupDefImpl::countMembers
virtual void countMembers()
Definition: groupdef.cpp:662
QListIterator::toFirst
type * toFirst()
Definition: qlist.h:136
MemberDef::virtualness
virtual Specifier virtualness(int count=0) const =0
Entry::groups
std::vector< Grouping > groups
list of groups this entry belongs to
Definition: entry.h:286
Definition::hasDocumentation
virtual bool hasDocumentation() const =0
OutputList::startTextLink
void startTextLink(const char *file, const char *anchor)
Definition: outputlist.h:139
SDict::remove
bool remove(const char *key)
Definition: sortdict.h:166
OutputList::endTextLink
void endTextLink()
Definition: outputlist.h:141
GroupDefImpl::hasGroupTitle
virtual bool hasGroupTitle() const
Definition: groupdef.cpp:60
SDict::findAt
int findAt(const QCString &key)
Definition: sortdict.h:240
MemberDef::isLinkable
virtual bool isLinkable() const =0
MemberListType_decFuncMembers
@ MemberListType_decFuncMembers
Definition: types.h:153
createSubDirs
void createSubDirs(QDir &d)
Definition: util.cpp:5127
MemberListType_docPubSlotMembers
@ MemberListType_docPubSlotMembers
Definition: types.h:171
DirList
A list of directories.
Definition: dirdef.h:38
SDict< PageDef >::Iterator
friend class Iterator
Definition: sortdict.h:285
GroupDefImpl::writeNamespaces
void writeNamespaces(OutputList &ol, const QCString &title)
Definition: groupdef.cpp:993
DefinitionImpl::inbodyFile
virtual QCString inbodyFile() const
Definition: definition.cpp:2012
GroupDefImpl::findSectionsInDocumentation
virtual void findSectionsInDocumentation()
Definition: groupdef.cpp:234
Protected
@ Protected
Definition: types.h:27
LayoutDocEntry::GroupClasses
@ GroupClasses
Definition: layout.h:59
classdef.h
GroupDef::addClass
virtual bool addClass(const ClassDef *def)=0
SDict
Ordered dictionary of elements of type T.
Definition: sortdict.h:73
OutputList::endMemberList
void endMemberList()
Definition: outputlist.h:186
LayoutDocEntry::BriefDesc
@ BriefDesc
Definition: layout.h:38
MemberList::countDocMembers
void countDocMembers()
Definition: memberlist.cpp:225
GroupDefImpl::writeGroupGraph
void writeGroupGraph(OutputList &ol)
Definition: groupdef.cpp:941
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:209
LayoutDocEntry::AuthorSection
@ AuthorSection
Definition: layout.h:39
SDict::count
uint count() const
Definition: sortdict.h:280
Entry::doc
QCString doc
documentation block (partly parsed)
Definition: entry.h:265
Entry::fileName
QCString fileName
file this entry was extracted from
Definition: entry.h:288
OutputList::endMemberHeader
void endMemberHeader()
Definition: outputlist.h:174
GroupDef::groupTitle
virtual const char * groupTitle() const =0
layout.h
LayoutDocEntry::ClassInheritanceGraph
@ ClassInheritanceGraph
Definition: layout.h:43
MemberDef::getGroupHasDocs
virtual bool getGroupHasDocs() const =0
MemberGroup::countDecMembers
void countDecMembers()
Definition: membergroup.cpp:195
msg
void msg(const char *fmt,...)
Definition: message.cpp:107
GroupDefImpl::m_dirList
DirList * m_dirList
Definition: groupdef.cpp:144
MemberListType_documentationLists
@ MemberListType_documentationLists
Definition: types.h:105
DefinitionImpl::briefLine
virtual int briefLine() const
Definition: definition.cpp:1990
MemberListType_docVarMembers
@ MemberListType_docVarMembers
Definition: types.h:169
LayoutDocEntry::FileInterfaces
@ FileInterfaces
Definition: layout.h:53
MemberType_Event
@ MemberType_Event
Definition: types.h:209
MemberListType_decTypedefMembers
@ MemberListType_decTypedefMembers
Definition: types.h:151
MemberDef::getFileDef
virtual const FileDef * getFileDef() const =0
GroupDefImpl::insertMember
virtual bool insertMember(MemberDef *def, bool docOnly=FALSE)
Definition: groupdef.cpp:376
GroupDefImpl::setGroupTitle
virtual void setGroupTitle(const char *newtitle)
Definition: groupdef.cpp:208
OutputList::writeSummaryLink
void writeSummaryLink(const char *file, const char *anchor, const char *title, bool first)
Definition: outputlist.h:342
OutputList::endHeaderSection
void endHeaderSection()
Definition: outputlist.h:170
MemberGroup::setInGroup
void setInGroup(bool b)
Definition: membergroup.cpp:322
GroupDefImpl::m_groupList
GroupList * m_groupList
Definition: groupdef.cpp:141
addExampleToGroups
void addExampleToGroups(const Entry *root, PageDef *eg)
Definition: groupdef.cpp:1637
LayoutDocEntry::ClassCollaborationGraph
@ ClassCollaborationGraph
Definition: layout.h:44
GroupDefImpl::startMemberDocumentation
void startMemberDocumentation(OutputList &ol)
Definition: groupdef.cpp:1142
MemberNameInfo
Class representing all MemberInfo objects with the same name.
Definition: membername.h:57
Config_getBool
#define Config_getBool(val)
Definition: config.h:35
GroupDefImpl::getPages
virtual PageSDict * getPages() const
Definition: groupdef.cpp:103
GroupDef::findGroup
virtual bool findGroup(const GroupDef *def) const =0
DefinitionImpl::inbodyLine
virtual int inbodyLine() const
Definition: definition.cpp:2007
GroupDefImpl::numDocMembers
virtual int numDocMembers() const
Definition: groupdef.cpp:683
OutputList
Class representing a list of output generators that are written to in parallel.
Definition: outputlist.h:38
ClassSDict::writeDeclaration
void writeDeclaration(OutputList &ol, const ClassDef::CompoundType *filter=0, const char *header=0, bool localNames=FALSE) const
Definition: classlist.cpp:94
addGroupListToTitle
void addGroupListToTitle(OutputList &ol, const Definition *d)
Definition: util.cpp:6270
GroupDefImpl::computeAnchors
virtual void computeAnchors()
Definition: groupdef.cpp:695
DefinitionIntf::TypeGroup
@ TypeGroup
Definition: definition.h:84
OutputList::endTitleHead
void endTitleHead(const char *fileName, const char *name)
Definition: outputlist.h:89
OutputList::endSection
void endSection(const char *lab, SectionType t)
Definition: outputlist.h:316
LayoutDocManager::Group
@ Group
Definition: layout.h:191
MemberListType_decSignalMembers
@ MemberListType_decSignalMembers
Definition: types.h:159
MemberListType_docPriSlotMembers
@ MemberListType_docPriSlotMembers
Definition: types.h:173
matchArguments2
bool matchArguments2(const Definition *srcScope, const FileDef *srcFileScope, const ArgumentList &inSrcAl, const Definition *dstScope, const FileDef *dstFileScope, const ArgumentList &inDstAl, bool checkCV)
Definition: util.cpp:3176
GroupDefImpl::addClass
virtual bool addClass(const ClassDef *def)
Definition: groupdef.cpp:266
groupdef.h
GroupDefImpl::getNamespaces
virtual NamespaceSDict * getNamespaces() const
Definition: groupdef.cpp:101
GroupDefImpl::isLinkable
virtual bool isLinkable() const
Definition: groupdef.cpp:1777
OutputList::startMemberDeclaration
void startMemberDeclaration()
Definition: outputlist.h:293
OutputList::enable
void enable(OutputGenerator::OutputType o)
Definition: outputlist.cpp:80
MemberListType_docEnumValMembers
@ MemberListType_docEnumValMembers
Definition: types.h:170
ClassSDict::declVisible
bool declVisible(const ClassDef::CompoundType *filter=0) const
Definition: classlist.cpp:65
GroupDefImpl::writeDetailedDescription
void writeDetailedDescription(OutputList &ol, const QCString &title)
Definition: groupdef.cpp:844
GroupDefImpl::m_pageDict
PageSDict * m_pageDict
Definition: groupdef.cpp:142
SDict::insertAt
void insertAt(int i, const char *key, const T *d)
Definition: sortdict.h:209
MemberType_Define
@ MemberType_Define
Definition: types.h:198
LayoutDocEntry::NamespaceClasses
@ NamespaceClasses
Definition: layout.h:49
MemberList::setInGroup
void setInGroup(bool inGroup)
Definition: memberlist.h:88
Grouping::getGroupPriName
static const char * getGroupPriName(GroupPri_t priority)
Definition: types.h:78
MemberList::declVisible
bool declVisible() const
Definition: memberlist.cpp:366
LayoutDocEntryMemberDecl::title
QCString title(SrcLangExt lang) const
Definition: layout.cpp:1605
GroupDef::addDir
virtual void addDir(const DirDef *dd)=0
PageDef::isLinkableInProject
virtual bool isLinkableInProject() const =0
GroupList
A list of GroupDef objects.
Definition: groupdef.h:127
SectionInfo::label
QCString label() const
Definition: section.h:66
SDict::at
T * at(uint i)
Definition: sortdict.h:254
Definition::isReference
virtual bool isReference() const =0
DotGroupCollaboration::isTrivial
bool isTrivial() const
Definition: dotgroupcollaboration.cpp:364
DefinitionImpl::qualifiedName
virtual QCString qualifiedName() const
Definition: definition.cpp:1513
LayoutDocEntry::NamespaceInlineClasses
@ NamespaceInlineClasses
Definition: layout.h:50
MemberList::sort
void sort()
Definition: memberlist.cpp:272
FileDef::isLinkableInProject
virtual bool isLinkableInProject() const =0
MemberDef::isEnumValue
virtual bool isEnumValue() const =0
Grouping::pri
GroupPri_t pri
priority of this definition
Definition: types.h:96
GroupDefImpl::writeDirs
void writeDirs(OutputList &ol, const QCString &title)
Definition: groupdef.cpp:1049
GroupDefImpl::writeInlineClasses
void writeInlineClasses(OutputList &ol)
Definition: groupdef.cpp:1088
Definition::name
virtual QCString name() const =0
GroupDefImpl::getClasses
virtual ClassSDict * getClasses() const
Definition: groupdef.cpp:100
Grouping
Grouping info.
Definition: types.h:65
GroupDefImpl::getDirs
virtual DirList * getDirs() const
Definition: groupdef.cpp:104
DocRoot
Root node of documentation tree.
Definition: docparser.h:1476
OutputList::startGroupCollaboration
void startGroupCollaboration()
Definition: outputlist.h:386
OutputList::writeString
void writeString(const char *text)
Definition: outputlist.h:99
endl
QTextStream & endl(QTextStream &s)
Definition: qtextstream.cpp:2030
GroupDefImpl::addFile
virtual void addFile(const FileDef *def)
Definition: groupdef.cpp:255
MemberList::writeTagFile
void writeTagFile(FTextStream &)
Definition: memberlist.cpp:1051
searchindex.h
DefinitionImpl::hasUserDocumentation
virtual bool hasUserDocumentation() const
Definition: definition.cpp:1447
LayoutDocEntry::DetailedDesc
@ DetailedDesc
Definition: layout.h:38
OutputList::startGroupHeader
void startGroupHeader(int extraLevels=0)
Definition: outputlist.h:156
DefinitionImpl::briefDescription
virtual QCString briefDescription(bool abbreviate=FALSE) const
Definition: definition.cpp:1957
MemberDef::getGroupAlias
virtual const MemberDef * getGroupAlias() const =0
MemberList::writeDocumentation
void writeDocumentation(OutputList &ol, const char *scopeName, const Definition *container, const char *title, bool showEnumValues=FALSE, bool showInline=FALSE) const
Definition: memberlist.cpp:740
SectionInfo
class that provide information about a section.
Definition: section.h:51
LayoutDocEntry::DirFiles
@ DirFiles
Definition: layout.h:64
util.h
Copyright (C) 1997-2015 by Dimitri van Heesch.
OutputList::startParagraph
void startParagraph(const char *classDef=0)
Definition: outputlist.h:95
NamespaceSDict::writeDeclaration
void writeDeclaration(OutputList &ol, const char *title, bool isConstantGroup=false, bool localName=FALSE)
Definition: namespacedef.cpp:1370
OutputList::startMemberHeader
void startMemberHeader(const char *anchor, int typ=2)
Definition: outputlist.h:172
GroupDefImpl::addMembersToMemberGroup
virtual void addMembersToMemberGroup()
Definition: groupdef.cpp:354
OutputList::writeSynopsis
void writeSynopsis()
Definition: outputlist.h:320
MemberList::setNeedsSorting
void setNeedsSorting(bool b)
Definition: memberlist.cpp:988
GroupDefImpl::m_groupScope
Definition * m_groupScope
Definition: groupdef.cpp:147
LayoutDocEntry::FileIncludeGraph
@ FileIncludeGraph
Definition: layout.h:54
DefinitionImpl::inbodyDocumentation
virtual QCString inbodyDocumentation() const
Definition: definition.cpp:2002
MemberList::findSectionsInDocumentation
void findSectionsInDocumentation(const Definition *d)
Definition: memberlist.cpp:969
OutputList::startHeaderSection
void startHeaderSection()
Definition: outputlist.h:168
Definition::qualifiedName
virtual QCString qualifiedName() const =0
GroupDefImpl::m_namespaceSDict
NamespaceSDict * m_namespaceSDict
Definition: groupdef.cpp:140
SDict::find
T * find(const char *key)
Definition: sortdict.h:232
SearchIndexIntf::setCurrentDoc
virtual void setCurrentDoc(const Definition *ctx, const char *anchor, bool isSourceFile)=0
MemberListType_docEventMembers
@ MemberListType_docEventMembers
Definition: types.h:175
Doxygen::suppressDocWarnings
static bool suppressDocWarnings
Definition: doxygen.h:131
LayoutDocEntry::NamespaceInterfaces
@ NamespaceInterfaces
Definition: layout.h:49
GroupDefImpl::sortMemberLists
virtual void sortMemberLists()
Definition: groupdef.cpp:1715
DefinitionImpl::setLanguage
virtual void setLanguage(SrcLangExt lang)
Definition: definition.cpp:2140
MemberListType_docTypedefMembers
@ MemberListType_docTypedefMembers
Definition: types.h:166
MemberListType_docPropMembers
@ MemberListType_docPropMembers
Definition: types.h:177
setAnchors
void setAnchors(MemberList *ml)
Definition: util.cpp:2336
MemberDef::memberType
virtual MemberType memberType() const =0
OutputList::startMemberList
void startMemberList()
Definition: outputlist.h:184
LayoutDocEntry
Base class representing a piece of a documentation page.
Definition: layout.h:31
MemberList
A list of MemberDef objects.
Definition: memberlist.h:32
GroupDefImpl::startMemberDeclarations
void startMemberDeclarations(OutputList &ol)
Definition: groupdef.cpp:1132
SearchIndexIntf::addWord
virtual void addWord(const char *word, bool hiPriority)=0
DirDef::isLinkableInProject
virtual bool isLinkableInProject() const =0
vhdldocgen.h
endFile
void endFile(OutputList &ol, bool skipNavIndex, bool skipEndContents, const QCString &navPath)
Definition: index.cpp:292
DirDef::getOutputFileBase
virtual QCString getOutputFileBase() const =0
ClassSDict::writeDocumentation
void writeDocumentation(OutputList &ol, const Definition *container=0) const
Definition: classlist.cpp:120
LayoutDocEntry::FileNamespaces
@ FileNamespaces
Definition: layout.h:53
Definition::isVisible
virtual bool isVisible() const =0
QRegExp::match
int match(const QCString &str, int index=0, int *len=0, bool indexIsStart=TRUE) const
Definition: qregexp.cpp:649
MemberDef::isLinkableInProject
virtual bool isLinkableInProject() const =0
stripExtension
QCString stripExtension(const char *fName)
Definition: util.cpp:6608