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)  

filedef.cpp
Go to the documentation of this file.
1 
18 #include "memberlist.h"
19 #include "classlist.h"
20 #include "filedef.h"
21 #include "doxygen.h"
22 #include "memberdef.h"
23 #include "classdef.h"
24 #include "namespacedef.h"
25 #include "util.h"
26 #include "language.h"
27 #include "outputlist.h"
28 #include "dot.h"
29 #include "dotincldepgraph.h"
30 #include "message.h"
31 #include "docparser.h"
32 #include "searchindex.h"
33 #include "htags.h"
34 #include "parserintf.h"
35 #include "portable.h"
36 #include "vhdldocgen.h"
37 #include "debug.h"
38 #include "layout.h"
39 #include "entry.h"
40 #include "groupdef.h"
41 #include "filename.h"
42 #include "membergroup.h"
43 #include "dirdef.h"
44 #include "config.h"
45 #include "clangparser.h"
46 #include "settings.h"
47 #include "definitionimpl.h"
48 
49 //---------------------------------------------------------------------------
50 
51 class FileDefImpl : public DefinitionImpl, public FileDef
52 {
53  public:
54  FileDefImpl(const char *p,const char *n,const char *ref=0,const char *dn=0);
55  virtual ~FileDefImpl();
56 
57  virtual DefType definitionType() const { return TypeFile; }
58  virtual QCString name() const;
59  virtual QCString displayName(bool=TRUE) const { return name(); }
60  virtual QCString fileName() const { return m_fileName; }
61  virtual QCString getOutputFileBase() const;
62  virtual QCString anchor() const { return QCString(); }
63  virtual QCString getSourceFileBase() const;
64  virtual QCString includeName() const;
67  virtual QCString absFilePath() const { return m_filePath; }
68  virtual const QCString &docName() const { return m_docname; }
69  virtual bool isSource() const { return m_isSource; }
70  virtual bool isDocumentationFile() const;
71  virtual Definition *getSourceDefinition(int lineNr) const;
72  virtual MemberDef *getSourceMember(int lineNr) const;
73  virtual QCString getPath() const { return m_path; }
74  virtual QCString getVersion() const { return m_fileVersion; }
75  virtual bool isLinkableInProject() const;
76  virtual bool isLinkable() const { return isLinkableInProject() || isReference(); }
77  virtual bool isIncluded(const QCString &name) const;
78  virtual PackageDef *packageDef() const { return m_package; }
79  virtual DirDef *getDirDef() const { return m_dir; }
80  virtual NamespaceSDict *getUsedNamespaces() const;
81  virtual SDict<Definition> *getUsedClasses() const { return m_usingDeclList; }
82  virtual QList<IncludeInfo> *includeFileList() const { return m_includeList; }
84  virtual void getAllIncludeFilesRecursively(QStrList &incFiles) const;
85  virtual MemberList *getMemberList(MemberListType lt) const;
86  virtual const QList<MemberList> &getMemberLists() const { return m_memberLists; }
88  virtual NamespaceSDict *getNamespaceSDict() const { return m_namespaceSDict; }
89  virtual ClassSDict *getClassSDict() const { return m_classSDict; }
90  virtual QCString title() const;
91  virtual bool hasDetailedDescription() const;
92  virtual QCString fileVersion() const;
93  virtual bool subGrouping() const { return m_subGrouping; }
94  virtual void countMembers();
95  virtual int numDocMembers() const;
96  virtual int numDecMembers() const;
97  virtual void addSourceRef(int line,Definition *d,MemberDef *md);
98  virtual void writeDocumentation(OutputList &ol);
99  virtual void writeMemberPages(OutputList &ol);
100  virtual void writeQuickMemberLinks(OutputList &ol,const MemberDef *currentMd) const;
101  virtual void writeSummaryLinks(OutputList &ol) const;
102  virtual void writeTagFile(FTextStream &t);
103  virtual void startParsing();
104  virtual void writeSource(OutputList &ol,bool sameTu,QStrList &filesInSameTu);
105  virtual void parseSource(bool sameTu,QStrList &filesInSameTu);
106  virtual void finishParsing();
107  virtual void setDiskName(const QCString &name);
108  virtual void insertMember(MemberDef *md);
109  virtual void insertClass(ClassDef *cd);
110  virtual void insertNamespace(NamespaceDef *nd);
111  virtual void computeAnchors();
112  virtual void setPackageDef(PackageDef *pd) { m_package=pd; }
113  virtual void setDirDef(DirDef *dd) { m_dir=dd; }
114  virtual void addUsingDirective(const NamespaceDef *nd);
115  virtual void addUsingDeclaration(Definition *def);
116  virtual void combineUsingRelations();
117  virtual bool generateSourceFile() const;
118  virtual void sortMemberLists();
119  virtual void addIncludeDependency(FileDef *fd,const char *incName,bool local,bool imported,bool indirect);
120  virtual void addIncludedByDependency(FileDef *fd,const char *incName,bool local,bool imported);
121  virtual void addMembersToMemberGroup();
122  virtual void distributeMemberGroupDocumentation();
123  virtual void findSectionsInDocumentation();
124  virtual void addIncludedUsingDirectives();
125  virtual void addListReferences();
126  virtual void setVisited(bool v) { m_visited = v; }
127  virtual bool isVisited() const { return m_visited; }
128 
129  private:
130  bool m_visited;
131  void acquireFileVersion();
136  void writeIncludeFiles(OutputList &ol);
137  void writeIncludeGraph(OutputList &ol);
139  void writeMemberGroups(OutputList &ol);
140  void writeAuthorSection(OutputList &ol);
141  void writeSourceLink(OutputList &ol);
143  bool isConstantGroup);
145  void writeInlineClasses(OutputList &ol);
153 
171  PackageDef *m_package;
181 };
182 
183 FileDef *createFileDef(const char *p,const char *n,const char *ref,const char *dn)
184 {
185  return new FileDefImpl(p,n,ref,dn);
186 }
187 
188 
189 //---------------------------------------------------------------------------
190 
193 {
194  public:
195  virtual void codify(const char *) {}
196  virtual void writeCodeLink(const char *,const char *,
197  const char *,const char *,
198  const char *) {}
199  virtual void writeTooltip(const char *, const DocLinkInfo &, const char *,
200  const char *, const SourceLinkInfo &, const SourceLinkInfo &
201  ) {}
202  virtual void writeLineNumber(const char *,const char *,
203  const char *,int) {}
204  virtual void startCodeLine(bool) {}
205  virtual void endCodeLine() {}
206  virtual void startFontClass(const char *) {}
207  virtual void endFontClass() {}
208  virtual void writeCodeAnchor(const char *) {}
209  virtual void linkableSymbol(int, const char *,Definition *,Definition *) {}
210  virtual void setCurrentDoc(const Definition *,const char *,bool) {}
211  virtual void addWord(const char *,bool) {}
212 };
213 
214 //---------------------------------------------------------------------------
215 
220 FileDefImpl::FileDefImpl(const char *p,const char *nm,
221  const char *lref,const char *dn)
222  : DefinitionImpl((QCString)p+nm,1,1,nm)
223 {
224  m_path=p;
225  m_filePath=m_path+nm;
226  m_fileName=nm;
227  setReference(lref);
228  setDiskName(dn?dn:nm);
229  m_classSDict = 0;
230  m_interfaceSDict = 0;
231  m_structSDict = 0;
232  m_exceptionSDict = 0;
233  m_includeList = 0;
234  m_includeDict = 0;
235  m_includedByList = 0;
236  m_includedByDict = 0;
237  m_namespaceSDict = 0;
238  m_srcDefDict = 0;
239  m_srcMemberDict = 0;
240  m_usingDirList = 0;
241  m_usingDeclList = 0;
242  m_package = 0;
244  m_docname = nm;
245  m_dir = 0;
246  m_visited = FALSE;
247  if (Config_getBool(FULL_PATH_NAMES))
248  {
250  }
252  m_memberGroupSDict = 0;
254  m_subGrouping=Config_getBool(SUBGROUPING);
255 }
256 
259 {
260  delete m_classSDict;
261  delete m_interfaceSDict;
262  delete m_structSDict;
263  delete m_exceptionSDict;
264  delete m_includeDict;
265  delete m_includeList;
266  delete m_includedByDict;
267  delete m_includedByList;
268  delete m_namespaceSDict;
269  delete m_srcDefDict;
270  delete m_srcMemberDict;
271  delete m_usingDirList;
272  delete m_usingDeclList;
273  delete m_memberGroupSDict;
274 }
275 
277 {
278  if (isReference())
279  {
281  m_inclDepFileName = name+"_incl";
282  m_inclByDepFileName = name+"_dep_incl";
283  }
284  else
285  {
289  }
290 }
291 
294 {
296  if (ml) setAnchors(ml);
297 }
298 
300 {
301  //printf("FileDefImpl::distributeMemberGroupDocumentation()\n");
302  if (m_memberGroupSDict)
303  {
305  MemberGroup *mg;
306  for (;(mg=mgli.current());++mgli)
307  {
309  }
310  }
311 }
312 
314 {
316  if (m_memberGroupSDict)
317  {
319  MemberGroup *mg;
320  for (;(mg=mgli.current());++mgli)
321  {
322  mg->findSectionsInDocumentation(this);
323  }
324  }
325 
327  MemberList *ml;
328  for (mli.toFirst();(ml=mli.current());++mli)
329  {
331  {
332  ml->findSectionsInDocumentation(this);
333  }
334  }
335 }
336 
338 {
339  static bool repeatBrief = Config_getBool(REPEAT_BRIEF);
340  static bool sourceBrowser = Config_getBool(SOURCE_BROWSER);
341  return ((!briefDescription().isEmpty() && repeatBrief) ||
342  !documentation().stripWhiteSpace().isEmpty() || // avail empty section
343  (sourceBrowser && getStartBodyLine()!=-1 && getBodyDef())
344  );
345 }
346 
348 {
349  tagFile << " <compound kind=\"file\">" << endl;
350  tagFile << " <name>" << convertToXML(name()) << "</name>" << endl;
351  tagFile << " <path>" << convertToXML(getPath()) << "</path>" << endl;
352  tagFile << " <filename>" << convertToXML(getOutputFileBase()) << Doxygen::htmlFileExtension << "</filename>" << endl;
353  if (m_includeList && m_includeList->count()>0)
354  {
356  IncludeInfo *ii;
357  for (;(ii=ili.current());++ili)
358  {
359  if (!ii->indirect)
360  {
361  FileDef *fd=ii->fileDef;
362  if (fd && fd->isLinkable() && !fd->isReference())
363  {
364  bool isIDLorJava = FALSE;
365  SrcLangExt lang = fd->getLanguage();
366  isIDLorJava = lang==SrcLangExt_IDL || lang==SrcLangExt_Java;
367  const char *locStr = (ii->local || isIDLorJava) ? "yes" : "no";
368  const char *impStr = (ii->imported || isIDLorJava) ? "yes" : "no";
369  tagFile << " <includes id=\""
370  << convertToXML(fd->getOutputFileBase()) << "\" "
371  << "name=\"" << convertToXML(fd->name()) << "\" "
372  << "local=\"" << locStr << "\" "
373  << "imported=\"" << impStr << "\">"
374  << convertToXML(ii->includeName)
375  << "</includes>"
376  << endl;
377  }
378  }
379  }
380  }
383  LayoutDocEntry *lde;
384  for (eli.toFirst();(lde=eli.current());++eli)
385  {
386  switch (lde->kind())
387  {
389  {
390  if (m_classSDict)
392  }
393  break;
395  {
396  if (m_interfaceSDict)
398  }
399  break;
401  {
402  if (m_structSDict)
404  }
405  break;
407  {
408  if (m_exceptionSDict)
410  }
411  break;
413  {
414  if (m_namespaceSDict)
415  {
417  NamespaceDef *nd;
418  for (ni.toFirst();(nd=ni.current());++ni)
419  {
420  if (nd->isLinkableInProject())
421  {
422  tagFile << " <namespace>" << convertToXML(nd->name()) << "</namespace>" << endl;
423  }
424  }
425  }
426  }
427  break;
429  {
431  MemberList * ml = getMemberList(lmd->type);
432  if (ml)
433  {
434  ml->writeTagFile(tagFile);
435  }
436  }
437  break;
439  {
440  if (m_memberGroupSDict)
441  {
443  MemberGroup *mg;
444  for (;(mg=mgli.current());++mgli)
445  {
446  mg->writeTagFile(tagFile);
447  }
448  }
449  }
450  break;
451  default:
452  break;
453  }
454  }
455 
456  writeDocAnchorsToTagFile(tagFile);
457  tagFile << " </compound>" << endl;
458 }
459 
461 {
463  {
464  ol.pushGeneratorState();
466  ol.writeRuler();
467  ol.popGeneratorState();
468  ol.pushGeneratorState();
470  ol.writeAnchor(0,"details");
471  ol.popGeneratorState();
472  ol.startGroupHeader();
473  ol.parseText(title);
474  ol.endGroupHeader();
475 
476  ol.startTextBlock();
477  if (!briefDescription().isEmpty() && Config_getBool(REPEAT_BRIEF))
478  {
480  }
481  if (!briefDescription().isEmpty() && Config_getBool(REPEAT_BRIEF) &&
482  !documentation().isEmpty())
483  {
484  ol.pushGeneratorState();
487  // ol.newParagraph(); // FIXME:PARA
488  ol.enableAll();
491  ol.writeString("\n\n");
492  ol.popGeneratorState();
493  }
494  if (!documentation().isEmpty())
495  {
496  ol.generateDoc(docFile(),docLine(),this,0,documentation()+"\n",TRUE,FALSE);
497  }
498  //printf("Writing source ref for file %s\n",name().data());
499  if (Config_getBool(SOURCE_BROWSER))
500  {
501  //if Latex enabled and LATEX_SOURCE_CODE isn't -> skip, bug_738548
502  ol.pushGeneratorState();
503  if (ol.isEnabled(OutputGenerator::Latex) && !Config_getBool(LATEX_SOURCE_CODE))
504  {
506  }
507  if (ol.isEnabled(OutputGenerator::Docbook) && !Config_getBool(DOCBOOK_PROGRAMLISTING))
508  {
510  }
511  if (ol.isEnabled(OutputGenerator::RTF) && !Config_getBool(RTF_SOURCE_CODE))
512  {
514  }
515 
516  ol.startParagraph("definition");
518  int fileMarkerPos = refText.find("@0");
519  if (fileMarkerPos!=-1) // should always pass this.
520  {
521  ol.parseText(refText.left(fileMarkerPos)); //text left from marker 1
523  0,name());
524  ol.parseText(refText.right(
525  refText.length()-fileMarkerPos-2)); // text right from marker 2
526  }
527  else
528  {
529  err("translation error: invalid marker in trDefinedInSourceFile()\n");
530  }
531  ol.endParagraph();
532  //Restore settings, bug_738548
533  ol.popGeneratorState();
534  }
535  ol.endTextBlock();
536  }
537 }
538 
540 {
541  if (hasBriefDescription())
542  {
543  DocRoot *rootNode = validatingParseDoc(briefFile(),briefLine(),this,0,
545 
546  if (rootNode && !rootNode->isEmpty())
547  {
548  ol.startParagraph();
549  ol.pushGeneratorState();
551  ol.writeString(" - ");
552  ol.popGeneratorState();
553  ol.writeDoc(rootNode,this,0);
554  ol.pushGeneratorState();
556  ol.writeString(" \n");
558 
559  if (Config_getBool(REPEAT_BRIEF) ||
560  !documentation().isEmpty()
561  )
562  {
564  ol.startTextLink(0,"details");
566  ol.endTextLink();
567  }
568  ol.popGeneratorState();
569  ol.endParagraph();
570  }
571  delete rootNode;
572  }
573  ol.writeSynopsis();
574 }
575 
577 {
579  ClassDef *cd;
580  for (ci.toFirst();(cd=ci.current());++ci)
581  {
582  if (cd->isLinkableInProject())
583  {
584  tagFile << " <class kind=\"" << cd->compoundTypeString() <<
585  "\">" << convertToXML(cd->name()) << "</class>" << endl;
586  }
587  }
588 }
589 
591 {
592  if (m_includeList && m_includeList->count()>0)
593  {
594  ol.startTextBlock(TRUE);
596  IncludeInfo *ii;
597  for (;(ii=ili.current());++ili)
598  {
599  if (!ii->indirect)
600  {
601  FileDef *fd=ii->fileDef;
602  bool isIDLorJava = FALSE;
603  if (fd)
604  {
605  SrcLangExt lang = fd->getLanguage();
606  isIDLorJava = lang==SrcLangExt_IDL || lang==SrcLangExt_Java;
607  }
608  ol.startTypewriter();
609  if (isIDLorJava) // IDL/Java include
610  {
611  ol.docify("import ");
612  }
613  else if (ii->imported) // Objective-C include
614  {
615  ol.docify("#import ");
616  }
617  else // C/C++ include
618  {
619  ol.docify("#include ");
620  }
621  if (ii->local || isIDLorJava)
622  ol.docify("\"");
623  else
624  ol.docify("<");
626  ol.docify(ii->includeName);
627  ol.enableAll();
629 
630  // Here we use the include file name as it appears in the file.
631  // we could also we the name as it is used within doxygen,
632  // then we should have used fd->docName() instead of ii->includeName
633  if (fd && fd->isLinkable())
634  {
635  ol.writeObjectLink(fd->getReference(),
636  fd->generateSourceFile() ? fd->includeName() : fd->getOutputFileBase(),
637  0,ii->includeName);
638  }
639  else
640  {
641  ol.docify(ii->includeName);
642  }
643 
644  ol.enableAll();
645  if (ii->local || isIDLorJava)
646  ol.docify("\"");
647  else
648  ol.docify(">");
649  if (isIDLorJava)
650  ol.docify(";");
651  ol.endTypewriter();
652  ol.lineBreak();
653  }
654  }
655  ol.endTextBlock();
656  }
657 }
658 
660 {
661  if (Config_getBool(HAVE_DOT) /*&& Config_getBool(INCLUDE_GRAPH)*/)
662  {
663  //printf("Graph for file %s\n",name().data());
664  DotInclDepGraph incDepGraph(this,FALSE);
665  if (incDepGraph.isTooBig())
666  {
667  warn_uncond("Include graph for '%s' not generated, too many nodes (%d), threshold is %d. Consider increasing DOT_GRAPH_MAX_NODES.\n",
668  name().data(), incDepGraph.numNodes(), Config_getInt(DOT_GRAPH_MAX_NODES));
669  }
670  else if (!incDepGraph.isTrivial())
671  {
672  ol.startTextBlock();
674  ol.startInclDepGraph();
676  ol.endInclDepGraph(incDepGraph);
677  ol.enableAll();
678  ol.endTextBlock(TRUE);
679  }
680  //incDepGraph.writeGraph(Config_getString(HTML_OUTPUT),fd->getOutputFileBase());
681  }
682 }
683 
685 {
686  if (Config_getBool(HAVE_DOT) /*&& Config_getBool(INCLUDED_BY_GRAPH)*/)
687  {
688  //printf("Graph for file %s\n",name().data());
689  DotInclDepGraph incDepGraph(this,TRUE);
690  if (incDepGraph.isTooBig())
691  {
692  warn_uncond("Included by graph for '%s' not generated, too many nodes (%d), threshold is %d. Consider increasing DOT_GRAPH_MAX_NODES.\n",
693  name().data(), incDepGraph.numNodes(), Config_getInt(DOT_GRAPH_MAX_NODES));
694  }
695  else if (!incDepGraph.isTrivial())
696  {
697  ol.startTextBlock();
699  ol.startInclDepGraph();
701  ol.endInclDepGraph(incDepGraph);
702  ol.enableAll();
703  ol.endTextBlock(TRUE);
704  }
705  //incDepGraph.writeGraph(Config_getString(HTML_OUTPUT),fd->getOutputFileBase());
706  }
707 }
708 
709 
711 {
712  //printf("%s: generateSourceFile()=%d\n",name().data(),generateSourceFile());
713  if (generateSourceFile())
714  {
716  ol.startParagraph();
717  ol.startTextLink(includeName(),0);
719  ol.endTextLink();
720  ol.endParagraph();
721  ol.enableAll();
722  }
723 }
724 
726  bool const isConstantGroup)
727 {
728  // write list of namespaces
729  if (m_namespaceSDict) m_namespaceSDict->writeDeclaration(ol,title,isConstantGroup);
730 }
731 
733 {
734  // write list of classes
735  if (d) d->writeDeclaration(ol,0,title,FALSE);
736 }
737 
739 {
740  // temporarily undo the disabling could be done by startMemberDocumentation()
741  // as a result of setting SEPARATE_MEMBER_PAGES to YES; see bug730512
742  bool isEnabled = ol.isEnabled(OutputGenerator::Html);
744 
746 
747  // restore the initial state if needed
748  if (!isEnabled) ol.disable(OutputGenerator::Html);
749 }
750 
752 {
753  ol.startMemberSections();
754 }
755 
757 {
758  ol.endMemberSections();
759 }
760 
762 {
763  if (Config_getBool(SEPARATE_MEMBER_PAGES))
764  {
767  }
768 }
769 
771 {
772  if (Config_getBool(SEPARATE_MEMBER_PAGES))
773  {
776  }
777 }
778 
780 {
781  /* write user defined member groups */
782  if (m_memberGroupSDict)
783  {
786  MemberGroup *mg;
787  for (;(mg=mgli.current());++mgli)
788  {
789  if ((!mg->allMembersInSameSection() || !m_subGrouping)
790  && mg->header()!="[NOHEADER]")
791  {
792  mg->writeDeclarations(ol,0,0,this,0);
793  }
794  }
795  }
796 }
797 
799 {
800  // write Author section (Man only)
801  ol.pushGeneratorState();
803  ol.startGroupHeader();
805  ol.endGroupHeader();
807  ol.popGeneratorState();
808 }
809 
811 {
812  ol.pushGeneratorState();
816  LayoutDocEntry *lde;
817  bool first=TRUE;
818  SrcLangExt lang=getLanguage();
819  for (eli.toFirst();(lde=eli.current());++eli)
820  {
822  {
824  QCString label = "nested-classes";
825  ol.writeSummaryLink(0,label,ls->title(lang),first);
826  first=FALSE;
827  }
829  {
831  QCString label = "interfaces";
832  ol.writeSummaryLink(0,label,ls->title(lang),first);
833  first=FALSE;
834  }
836  {
838  QCString label = "structs";
839  ol.writeSummaryLink(0,label,ls->title(lang),first);
840  first=FALSE;
841  }
843  {
845  QCString label = "exceptions";
846  ol.writeSummaryLink(0,label,ls->title(lang),first);
847  first=FALSE;
848  }
850  {
852  QCString label = "namespaces";
853  ol.writeSummaryLink(0,label,ls->title(lang),first);
854  first=FALSE;
855  }
856  else if (lde->kind()==LayoutDocEntry::MemberDecl)
857  {
859  MemberList * ml = getMemberList(lmd->type);
860  if (ml && ml->declVisible())
861  {
862  ol.writeSummaryLink(0,MemberList::listTypeAsString(ml->listType()),lmd->title(lang),first);
863  first=FALSE;
864  }
865  }
866  }
867  if (!first)
868  {
869  ol.writeString(" </div>\n");
870  }
871  ol.popGeneratorState();
872 }
873 
878 {
879  static bool generateTreeView = Config_getBool(GENERATE_TREEVIEW);
880  //funcList->countDecMembers();
881 
882  //QCString fn = name();
883  //if (Config_getBool(FULL_PATH_NAMES))
884  //{
885  // fn.prepend(stripFromPath(getPath().copy()));
886  //}
887 
888  //printf("WriteDocumentation diskname=%s\n",diskname.data());
889 
890  QCString versionTitle;
891  if (!m_fileVersion.isEmpty())
892  {
893  versionTitle=("("+m_fileVersion+")");
894  }
895  QCString title = m_docname+versionTitle;
897 
898  if (getDirDef())
899  {
900  startFile(ol,getOutputFileBase(),name(),pageTitle,HLI_FileVisible,!generateTreeView);
901  if (!generateTreeView)
902  {
904  ol.endQuickIndices();
905  }
906  QCString pageTitleShort=theTranslator->trFileReference(name());
907  startTitle(ol,getOutputFileBase(),this);
908  ol.pushGeneratorState();
910  ol.parseText(pageTitleShort); // Html only
911  ol.enableAll();
913  ol.parseText(pageTitle); // other output formats
914  ol.popGeneratorState();
915  addGroupListToTitle(ol,this);
917  }
918  else
919  {
920  startFile(ol,getOutputFileBase(),name(),pageTitle,HLI_FileVisible,!generateTreeView);
921  if (!generateTreeView)
922  {
923  ol.endQuickIndices();
924  }
925  startTitle(ol,getOutputFileBase(),this);
926  ol.parseText(pageTitle);
927  addGroupListToTitle(ol,this);
929  }
930 
931  ol.startContents();
932 
933  if (!m_fileVersion.isEmpty())
934  {
936  ol.startProjectNumber();
937  ol.docify(versionTitle);
938  ol.endProjectNumber();
939  ol.enableAll();
940  }
941 
943  {
946  }
947 
948 
949  //---------------------------------------- start flexible part -------------------------------
950 
951  SrcLangExt lang = getLanguage();
954  LayoutDocEntry *lde;
955  for (eli.toFirst();(lde=eli.current());++eli)
956  {
957  switch (lde->kind())
958  {
961  break;
964  break;
966  writeIncludeFiles(ol);
967  break;
969  writeIncludeGraph(ol);
970  break;
973  break;
975  writeSourceLink(ol);
976  break;
978  {
981  }
982  break;
984  {
987  }
988  break;
990  {
993  }
994  break;
996  {
999  }
1000  break;
1002  {
1004  writeNamespaceDeclarations(ol,ls->title(lang),false);
1005  }
1006  break;
1008  {
1010  writeNamespaceDeclarations(ol,ls->title(lang),true);
1011  }
1012  break;
1014  writeMemberGroups(ol);
1015  break;
1017  {
1019  writeMemberDeclarations(ol,lmd->type,lmd->title(lang));
1020  }
1021  break;
1024  break;
1026  {
1028  writeDetailedDescription(ol,ls->title(lang));
1029  }
1030  break;
1033  break;
1035  writeInlineClasses(ol);
1036  break;
1038  {
1040  writeMemberDocumentation(ol,lmd->type,lmd->title(lang));
1041  }
1042  break;
1045  break;
1047  writeAuthorSection(ol);
1048  break;
1074  err("Internal inconsistency: member %d should not be part of "
1075  "LayoutDocManager::File entry list\n",lde->kind());
1076  break;
1077  }
1078  }
1079 
1080  //---------------------------------------- end flexible part -------------------------------
1081 
1082  ol.endContents();
1083 
1084  endFileWithNavPath(this,ol);
1085 
1086  if (Config_getBool(SEPARATE_MEMBER_PAGES))
1087  {
1089  if (ml) ml->sort();
1090  writeMemberPages(ol);
1091  }
1092 }
1093 
1095 {
1096  ol.pushGeneratorState();
1098 
1100  MemberList *ml;
1101  for (mli.toFirst();(ml=mli.current());++mli)
1102  {
1104  {
1105  ml->writeDocumentationPage(ol,name(),this);
1106  }
1107  }
1108 
1109  ol.popGeneratorState();
1110 }
1111 
1113 {
1114  static bool createSubDirs=Config_getBool(CREATE_SUBDIRS);
1115 
1116  ol.writeString(" <div class=\"navtab\">\n");
1117  ol.writeString(" <table>\n");
1118 
1120  if (allMemberList)
1121  {
1122  MemberListIterator mli(*allMemberList);
1123  MemberDef *md;
1124  for (mli.toFirst();(md=mli.current());++mli)
1125  {
1126  if (md->getFileDef()==this && md->getNamespaceDef()==0 && md->isLinkable() && !md->isEnumValue())
1127  {
1128  ol.writeString(" <tr><td class=\"navtab\">");
1129  if (md->isLinkableInProject())
1130  {
1131  if (md==currentMd) // selected item => highlight
1132  {
1133  ol.writeString("<a class=\"qindexHL\" ");
1134  }
1135  else
1136  {
1137  ol.writeString("<a class=\"qindex\" ");
1138  }
1139  ol.writeString("href=\"");
1140  if (createSubDirs) ol.writeString("../../");
1142  ol.writeString("\">");
1143  ol.writeString(convertToHtml(md->localName()));
1144  ol.writeString("</a>");
1145  }
1146  ol.writeString("</td></tr>\n");
1147  }
1148  }
1149  }
1150 
1151  ol.writeString(" </table>\n");
1152  ol.writeString(" </div>\n");
1153 }
1154 
1156 void FileDefImpl::writeSource(OutputList &ol,bool sameTu,QStrList &filesInSameTu)
1157 {
1158  static bool generateTreeView = Config_getBool(GENERATE_TREEVIEW);
1159  static bool filterSourceFiles = Config_getBool(FILTER_SOURCE_FILES);
1160  static bool latexSourceCode = Config_getBool(LATEX_SOURCE_CODE);
1161  static bool docbookSourceCode = Config_getBool(DOCBOOK_PROGRAMLISTING);
1162  static bool rtfSourceCode = Config_getBool(RTF_SOURCE_CODE);
1163  DevNullCodeDocInterface devNullIntf;
1165  if (!m_fileVersion.isEmpty())
1166  {
1167  title+=(" ("+m_fileVersion+")");
1168  }
1169  QCString pageTitle = theTranslator->trSourceFile(title);
1171  if (!latexSourceCode) ol.disable(OutputGenerator::Latex);
1172  if (!docbookSourceCode) ol.disable(OutputGenerator::Docbook);
1173  if (!rtfSourceCode) ol.disable(OutputGenerator::RTF);
1174 
1175  bool isDocFile = isDocumentationFile();
1176  bool genSourceFile = !isDocFile && generateSourceFile();
1177  if (getDirDef())
1178  {
1179  startFile(ol,getSourceFileBase(),0,pageTitle,HLI_FileVisible,
1180  !generateTreeView,
1181  !isDocFile && genSourceFile ? QCString() : getOutputFileBase());
1182  if (!generateTreeView)
1183  {
1185  ol.endQuickIndices();
1186  }
1188  ol.parseText(name());
1190  }
1191  else
1192  {
1194  !isDocFile && genSourceFile ? QCString() : getOutputFileBase());
1196  ol.parseText(title);
1197  endTitle(ol,getSourceFileBase(),0);
1198  }
1199 
1200  ol.startContents();
1201 
1202  if (isLinkable())
1203  {
1204  ol.pushGeneratorState();
1205  if (latexSourceCode) ol.disable(OutputGenerator::Latex);
1206  if (rtfSourceCode) ol.disable(OutputGenerator::RTF);
1207  if (docbookSourceCode) ol.disable(OutputGenerator::Docbook);
1210  ol.endTextLink();
1211  ol.popGeneratorState();
1212  }
1213 
1214  (void)sameTu;
1215  (void)filesInSameTu;
1216 #if USE_LIBCLANG
1217  static bool clangAssistedParsing = Config_getBool(CLANG_ASSISTED_PARSING);
1218  if (clangAssistedParsing &&
1220  {
1221  ol.startCodeFragment();
1222  if (!sameTu)
1223  {
1224  ClangParser::instance()->start(absFilePath(),filesInSameTu);
1225  }
1226  else
1227  {
1229  }
1230  ClangParser::instance()->writeSources(ol,this);
1231  ol.endCodeFragment();
1232  }
1233  else
1234 #endif
1235  {
1237  intf.resetCodeParserState();
1238  ol.startCodeFragment();
1239  bool needs2PassParsing =
1240  Doxygen::parseSourcesNeeded && // we need to parse (filtered) sources for cross-references
1241  !filterSourceFiles && // but user wants to show sources as-is
1242  !getFileFilter(absFilePath(),TRUE).isEmpty(); // and there is a filter used while parsing
1243 
1244  if (needs2PassParsing)
1245  {
1246  // parse code for cross-references only (see bug707641)
1247  intf.parseCode(devNullIntf,0,
1249  getLanguage(),
1250  FALSE,0,this
1251  );
1252  }
1253  intf.parseCode(ol,0,
1254  fileToString(absFilePath(),filterSourceFiles,TRUE),
1255  getLanguage(), // lang
1256  FALSE, // isExampleBlock
1257  0, // exampleName
1258  this, // fileDef
1259  -1, // startLine
1260  -1, // endLine
1261  FALSE, // inlineFragment
1262  0, // memberDef
1263  TRUE, // showLineNumbers
1264  0, // searchCtx
1265  !needs2PassParsing // collectXRefs
1266  );
1267  ol.endCodeFragment();
1268  }
1269  ol.endContents();
1270  endFileWithNavPath(this,ol);
1271  ol.enableAll();
1272 }
1273 
1274 void FileDefImpl::parseSource(bool sameTu,QStrList &filesInSameTu)
1275 {
1276  static bool filterSourceFiles = Config_getBool(FILTER_SOURCE_FILES);
1277  DevNullCodeDocInterface devNullIntf;
1278  (void)sameTu;
1279  (void)filesInSameTu;
1280 #if USE_LIBCLANG
1281  static bool clangAssistedParsing = Config_getBool(CLANG_ASSISTED_PARSING);
1282  if (clangAssistedParsing &&
1284  {
1285  if (!sameTu)
1286  {
1287  ClangParser::instance()->start(absFilePath(),filesInSameTu);
1288  }
1289  else
1290  {
1292  }
1293  ClangParser::instance()->writeSources(devNullIntf,this);
1294  }
1295  else
1296 #endif
1297  {
1299  intf.resetCodeParserState();
1300  intf.parseCode(
1301  devNullIntf,0,
1302  fileToString(absFilePath(),filterSourceFiles,TRUE),
1303  getLanguage(),
1304  FALSE,0,this
1305  );
1306  }
1307 }
1308 
1310 {
1311 }
1312 
1314 {
1316 }
1317 
1319 {
1321  MemberList *ml;
1322  for (mli.toFirst();(ml=mli.current());++mli)
1323  {
1325  {
1327  }
1328  }
1329 
1330  // add members inside sections to their groups
1331  if (m_memberGroupSDict)
1332  {
1334  MemberGroup *mg;
1335  for (;(mg=mgli.current());++mgli)
1336  {
1338  {
1339  //printf("----> addToDeclarationSection(%s)\n",mg->header().data());
1341  }
1342  }
1343  }
1344 }
1345 
1348 {
1349  if (md->isHidden()) return;
1350  //printf("%s:FileDefImpl::insertMember(%s (=%p) list has %d elements)\n",
1351  // name().data(),md->name().data(),md,allMemberList.count());
1353  if (allMemberList && allMemberList->findRef(md)!=-1) // TODO optimize the findRef!
1354  {
1355  return;
1356  }
1357 
1358  if (allMemberList==0)
1359  {
1360  allMemberList = new MemberList(MemberListType_allMembersList);
1361  m_memberLists.append(allMemberList);
1362  }
1363  allMemberList->append(md);
1364  //::addFileMemberNameToIndex(md);
1365  switch (md->memberType())
1366  {
1367  case MemberType_Variable:
1368  case MemberType_Property:
1371  break;
1372  case MemberType_Function:
1375  break;
1376  case MemberType_Typedef:
1379  break;
1380  case MemberType_Sequence:
1383  break;
1384  case MemberType_Dictionary:
1387  break;
1391  break;
1392  case MemberType_EnumValue: // enum values are shown inside their enums
1393  break;
1394  case MemberType_Define:
1397  break;
1398  default:
1399  err("FileDefImpl::insertMembers(): "
1400  "member '%s' with class scope '%s' inserted in file scope '%s'!\n",
1401  md->name().data(),
1402  md->getClassDef() ? md->getClassDef()->name().data() : "<global>",
1403  name().data());
1404  }
1405  //addMemberToGroup(md,groupId);
1406 }
1407 
1410 {
1411  if (cd->isHidden()) return;
1412 
1413  ClassSDict *d=0;
1414  ClassSDict **dd=&m_classSDict;
1415 
1417  {
1418  if (cd->compoundType()==ClassDef::Interface)
1419  {
1420  dd = &m_interfaceSDict;
1421  }
1422  else if (cd->compoundType()==ClassDef::Struct)
1423  {
1424  dd = &m_structSDict;
1425  }
1426  else if (cd->compoundType()==ClassDef::Exception)
1427  {
1428  dd = &m_exceptionSDict;
1429  }
1430  }
1431 
1432  if (*dd==0) *dd = new ClassSDict(17);
1433  d = *dd;
1434 
1435  if (Config_getBool(SORT_BRIEF_DOCS))
1436  {
1437  d->inSort(cd->name(),cd);
1438  }
1439  else
1440  {
1441  d->append(cd->name(),cd);
1442  }
1443 }
1444 
1447 {
1448  if (nd->isHidden()) return;
1449  if (!nd->name().isEmpty() &&
1450  (m_namespaceSDict==0 || m_namespaceSDict->find(nd->name())==0))
1451  {
1452  if (m_namespaceSDict==0)
1453  {
1455  }
1456  if (Config_getBool(SORT_BRIEF_DOCS))
1457  {
1458  m_namespaceSDict->inSort(nd->name(),nd);
1459  }
1460  else
1461  {
1462  m_namespaceSDict->append(nd->name(),nd);
1463  }
1464  }
1465 }
1466 
1468 {
1469  if (Config_getBool(FULL_PATH_NAMES))
1470  return m_fileName;
1471  else
1472  return DefinitionImpl::name();
1473 }
1474 
1476 {
1477  //printf("FileDefImpl::addSourceDef(%d,%p,%p)\n",line,d,md);
1478  if (d)
1479  {
1480  if (m_srcDefDict==0) m_srcDefDict = new QIntDict<Definition>(257);
1482  m_srcDefDict->insert(line,d);
1483  if (md) m_srcMemberDict->insert(line,md);
1484  //printf("Adding member %s with anchor %s at line %d to file %s\n",
1485  // md?md->name().data():"<none>",md?md->anchor().data():"<none>",line,name().data());
1486  }
1487 }
1488 
1490 {
1491  Definition *result=0;
1492  if (m_srcDefDict)
1493  {
1494  result = m_srcDefDict->find(lineNr);
1495  }
1496  //printf("%s::getSourceDefinition(%d)=%s\n",name().data(),lineNr,result?result->name().data():"none");
1497  return result;
1498 }
1499 
1501 {
1502  MemberDef *result=0;
1503  if (m_srcMemberDict)
1504  {
1505  result = m_srcMemberDict->find(lineNr);
1506  }
1507  //printf("%s::getSourceMember(%d)=%s\n",name().data(),lineNr,result?result->name().data():"none");
1508  return result;
1509 }
1510 
1511 
1513 {
1514  if (m_usingDirList==0)
1515  {
1517  }
1518  if (m_usingDirList->find(nd->qualifiedName())==0)
1519  {
1520  m_usingDirList->append(nd->qualifiedName(),nd);
1521  }
1522  //printf("%p: FileDefImpl::addUsingDirective: %s:%d\n",this,name().data(),usingDirList->count());
1523 }
1524 
1526 {
1527  //printf("%p: FileDefImpl::getUsedNamespace: %s:%d\n",this,name().data(),usingDirList?usingDirList->count():0);
1528  return m_usingDirList;
1529 }
1530 
1532 {
1533  if (m_usingDeclList==0)
1534  {
1536  }
1537  if (m_usingDeclList->find(d->qualifiedName())==0)
1538  {
1540  }
1541 }
1542 
1543 void FileDefImpl::addIncludeDependency(FileDef *fd,const char *incName,bool local,
1544  bool imported,bool indirect)
1545 {
1546  //printf("FileDefImpl::addIncludeDependency(%p,%s,%d)\n",fd,incName,local);
1547  QCString iName = fd ? fd->absFilePath().data() : incName;
1548  if (!iName.isEmpty() && (!m_includeDict || m_includeDict->find(iName)==0))
1549  {
1550  if (m_includeDict==0)
1551  {
1555  }
1556  IncludeInfo *ii = new IncludeInfo;
1557  ii->fileDef = fd;
1558  ii->includeName = incName;
1559  ii->local = local;
1560  ii->imported = imported;
1561  ii->indirect = indirect;
1562  m_includeList->append(ii);
1563  m_includeDict->insert(iName,ii);
1564  }
1565 }
1566 
1568 {
1569  if (m_visited) return;
1570  m_visited=TRUE;
1571  //printf("( FileDefImpl::addIncludedUsingDirectives for file %s\n",name().data());
1572 
1573  if (m_includeList) // file contains #includes
1574  {
1575  {
1577  IncludeInfo *ii;
1578  for (iii.toFirst();(ii=iii.current());++iii) // foreach #include...
1579  {
1580  if (ii->fileDef && !ii->fileDef->isVisited()) // ...that is a known file
1581  {
1582  // recurse into this file
1584  }
1585  }
1586  }
1587  {
1589  IncludeInfo *ii;
1590  // iterate through list from last to first
1591  for (iii.toLast();(ii=iii.current());--iii)
1592  {
1593  if (ii->fileDef && ii->fileDef!=this)
1594  {
1595  // add using directives
1597  if (unl)
1598  {
1599  NamespaceSDict::Iterator nli(*unl);
1600  NamespaceDef *nd;
1601  for (nli.toLast();(nd=nli.current());--nli)
1602  {
1603  // append each using directive found in a #include file
1605  //printf("Prepending used namespace %s to the list of file %s\n",
1606  // nd->name().data(),name().data());
1607  if (m_usingDirList->find(nd->qualifiedName())==0) // not yet added
1608  {
1610  }
1611  }
1612  }
1613  // add using declarations
1615  if (udl)
1616  {
1617  SDict<Definition>::Iterator udi(*udl);
1618  Definition *d;
1619  for (udi.toLast();(d=udi.current());--udi)
1620  {
1621  //printf("Adding using declaration %s\n",d->name().data());
1622  if (m_usingDeclList==0)
1623  {
1625  }
1626  if (m_usingDeclList->find(d->qualifiedName())==0)
1627  {
1629  }
1630  }
1631  }
1632  }
1633  }
1634  }
1635  }
1636  //printf(") end FileDefImpl::addIncludedUsingDirectives for file %s\n",name().data());
1637 }
1638 
1639 
1640 void FileDefImpl::addIncludedByDependency(FileDef *fd,const char *incName,
1641  bool local,bool imported)
1642 {
1643  //printf("FileDefImpl::addIncludedByDependency(%p,%s,%d)\n",fd,incName,local);
1644  QCString iName = fd ? fd->absFilePath().data() : incName;
1645  if (!iName.isEmpty() && (m_includedByDict==0 || m_includedByDict->find(iName)==0))
1646  {
1647  if (m_includedByDict==0)
1648  {
1652  }
1653  IncludeInfo *ii = new IncludeInfo;
1654  ii->fileDef = fd;
1655  ii->includeName = incName;
1656  ii->local = local;
1657  ii->imported = imported;
1658  ii->indirect = FALSE;
1659  m_includedByList->append(ii);
1660  m_includedByDict->insert(iName,ii);
1661  }
1662 }
1663 
1664 bool FileDefImpl::isIncluded(const QCString &name) const
1665 {
1666  if (name.isEmpty()) return FALSE;
1667  return m_includeDict!=0 && m_includeDict->find(name)!=0;
1668 }
1669 
1671 {
1672  static bool sourceBrowser = Config_getBool(SOURCE_BROWSER);
1673  static bool verbatimHeaders = Config_getBool(VERBATIM_HEADERS);
1674  return !isReference() &&
1675  (sourceBrowser ||
1676  (verbatimHeaders && guessSection(name())==Entry::HEADER_SEC)
1677  ) &&
1679 }
1680 
1681 
1683 {
1684  {
1685  const std::vector<RefItem*> &xrefItems = xrefListItems();
1686  addRefItem(xrefItems,
1689  getOutputFileBase(),name(),
1690  0,
1691  0
1692  );
1693  }
1694  if (m_memberGroupSDict)
1695  {
1697  MemberGroup *mg;
1698  for (;(mg=mgli.current());++mgli)
1699  {
1700  mg->addListReferences(this);
1701  }
1702  }
1704  MemberList *ml;
1705  for (mli.toFirst();(ml=mli.current());++mli)
1706  {
1708  {
1709  ml->addListReferences(this);
1710  }
1711  }
1712 }
1713 
1714 //-------------------------------------------------------------------
1715 
1716 static int findMatchingPart(const QCString &path,const QCString dir)
1717 {
1718  int si1;
1719  int pos1=0,pos2=0;
1720  while ((si1=path.find('/',pos1))!=-1)
1721  {
1722  int si2=dir.find('/',pos2);
1723  //printf(" found slash at pos %d in path %d: %s<->%s\n",si1,si2,
1724  // path.mid(pos1,si1-pos2).data(),dir.mid(pos2).data());
1725  if (si2==-1 && path.mid(pos1,si1-pos2)==dir.mid(pos2)) // match at end
1726  {
1727  return dir.length();
1728  }
1729  if (si1!=si2 || path.mid(pos1,si1-pos2)!=dir.mid(pos2,si2-pos2)) // no match in middle
1730  {
1731  return QMAX(pos1-1,0);
1732  }
1733  pos1=si1+1;
1734  pos2=si2+1;
1735  }
1736  return 0;
1737 }
1738 
1739 static Directory *findDirNode(Directory *root,const QCString &name)
1740 {
1741  QListIterator<DirEntry> dli(root->children());
1742  DirEntry *de;
1743  for (dli.toFirst();(de=dli.current());++dli)
1744  {
1745  if (de->kind()==DirEntry::Dir)
1746  {
1747  Directory *dir = (Directory *)de;
1748  QCString dirName=dir->name();
1749  int sp=findMatchingPart(name,dirName);
1750  //printf("findMatchingPart(%s,%s)=%d\n",name.data(),dirName.data(),sp);
1751  if (sp>0) // match found
1752  {
1753  if ((uint)sp==dirName.length()) // whole directory matches
1754  {
1755  // recurse into the directory
1756  return findDirNode(dir,name.mid(dirName.length()+1));
1757  }
1758  else // partial match => we need to split the path into three parts
1759  {
1760  QCString baseName =dirName.left(sp);
1761  QCString oldBranchName=dirName.mid(sp+1);
1762  QCString newBranchName=name.mid(sp+1);
1763  // strip file name from path
1764  int newIndex=newBranchName.findRev('/');
1765  if (newIndex>0) newBranchName=newBranchName.left(newIndex);
1766 
1767  //printf("Splitting off part in new branch \n"
1768  // "base=%s old=%s new=%s\n",
1769  // baseName.data(),
1770  // oldBranchName.data(),
1771  // newBranchName.data()
1772  // );
1773  Directory *base = new Directory(root,baseName);
1774  Directory *newBranch = new Directory(base,newBranchName);
1775  dir->reParent(base);
1776  dir->rename(oldBranchName);
1777  base->addChild(dir);
1778  base->addChild(newBranch);
1779  dir->setLast(FALSE);
1780  // remove DirEntry container from list (without deleting it)
1781  root->children().setAutoDelete(FALSE);
1782  root->children().removeRef(dir);
1783  root->children().setAutoDelete(TRUE);
1784  // add new branch to the root
1785  if (!root->children().isEmpty())
1786  {
1787  root->children().getLast()->setLast(FALSE);
1788  }
1789  root->addChild(base);
1790  return newBranch;
1791  }
1792  }
1793  }
1794  }
1795  int si=name.findRev('/');
1796  if (si==-1) // no subdir
1797  {
1798  return root; // put the file under the root node.
1799  }
1800  else // need to create a subdir
1801  {
1802  QCString baseName = name.left(si);
1803  //printf("new subdir %s\n",baseName.data());
1804  Directory *newBranch = new Directory(root,baseName);
1805  if (!root->children().isEmpty())
1806  {
1807  root->children().getLast()->setLast(FALSE);
1808  }
1809  root->addChild(newBranch);
1810  return newBranch;
1811  }
1812 }
1813 
1814 static void mergeFileDef(Directory *root,FileDef *fd)
1815 {
1816  QCString filePath = fd->absFilePath();
1817  //printf("merging %s\n",filePath.data());
1818  Directory *dirNode = findDirNode(root,filePath);
1819  if (!dirNode->children().isEmpty())
1820  {
1821  dirNode->children().getLast()->setLast(FALSE);
1822  }
1823  DirEntry *e=new DirEntry(dirNode,fd);
1824  dirNode->addChild(e);
1825 }
1826 
1827 #if 0
1828 static void generateIndent(QTextStream &t,DirEntry *de,int level)
1829 {
1830  if (de->parent())
1831  {
1832  generateIndent(t,de->parent(),level+1);
1833  }
1834  // from the root up to node n do...
1835  if (level==0) // item before a dir or document
1836  {
1837  if (de->isLast())
1838  {
1839  if (de->kind()==DirEntry::Dir)
1840  {
1841  t << "<img " << FTV_IMGATTRIBS(plastnode) << "/>";
1842  }
1843  else
1844  {
1845  t << "<img " << FTV_IMGATTRIBS(lastnode) << "/>";
1846  }
1847  }
1848  else
1849  {
1850  if (de->kind()==DirEntry::Dir)
1851  {
1852  t << "<img " << FTV_IMGATTRIBS(pnode) << "/>";
1853  }
1854  else
1855  {
1856  t << "<img " << FTV_IMGATTRIBS(node) << "/>";
1857  }
1858  }
1859  }
1860  else // item at another level
1861  {
1862  if (de->isLast())
1863  {
1864  t << "<img " << FTV_IMGATTRIBS(blank) << "/>";
1865  }
1866  else
1867  {
1868  t << "<img " << FTV_IMGATTRIBS(vertline) << "/>";
1869  }
1870  }
1871 }
1872 
1873 static void writeDirTreeNode(QTextStream &t,Directory *root,int level)
1874 {
1875  QCString indent;
1876  indent.fill(' ',level*2);
1877  QListIterator<DirEntry> dli(root->children());
1878  DirEntry *de;
1879  for (dli.toFirst();(de=dli.current());++dli)
1880  {
1881  t << indent << "<p>";
1882  generateIndent(t,de,0);
1883  if (de->kind()==DirEntry::Dir)
1884  {
1885  Directory *dir=(Directory *)de;
1886  //printf("%s [dir]: %s (last=%d,dir=%d)\n",indent.data(),dir->name().data(),dir->isLast(),dir->kind()==DirEntry::Dir);
1887  t << "<img " << FTV_IMGATTRIBS(folderclosed) << "/>";
1888  t << dir->name();
1889  t << "</p>\n";
1890  t << indent << "<div>\n";
1891  writeDirTreeNode(t,dir,level+1);
1892  t << indent << "</div>\n";
1893  }
1894  else
1895  {
1896  //printf("%s [file]: %s (last=%d,dir=%d)\n",indent.data(),de->file()->name().data(),de->isLast(),de->kind()==DirEntry::Dir);
1897  t << "<img " << FTV_IMGATTRIBS(doc) << "/>";
1898  t << de->file()->name();
1899  t << "</p>\n";
1900  }
1901  }
1902 }
1903 #endif
1904 
1905 static void addDirsAsGroups(Directory *root,GroupDef *parent,int level)
1906 {
1907  GroupDef *gd=0;
1908  if (root->kind()==DirEntry::Dir)
1909  {
1910  gd = createGroupDef("[generated]",
1911  1,
1912  root->path(), // name
1913  root->name() // title
1914  );
1915  if (parent)
1916  {
1917  parent->addGroup(gd);
1918  gd->makePartOfGroup(parent);
1919  }
1920  else
1921  {
1922  Doxygen::groupSDict->append(root->path(),gd);
1923  }
1924  }
1925  QListIterator<DirEntry> dli(root->children());
1926  DirEntry *de;
1927  for (dli.toFirst();(de=dli.current());++dli)
1928  {
1929  if (de->kind()==DirEntry::Dir)
1930  {
1931  addDirsAsGroups((Directory *)de,gd,level+1);
1932  }
1933  }
1934 }
1935 
1937 {
1938  Directory *root=new Directory(0,"root");
1939  root->setLast(TRUE);
1940  for (const auto &fn : *Doxygen::inputNameLinkedMap)
1941  {
1942  for (const auto &fd : *fn)
1943  {
1944  mergeFileDef(root,fd.get());
1945  }
1946  }
1947  //t << "<div class=\"directory\">\n";
1948  //writeDirTreeNode(t,root,0);
1949  //t << "</div>\n";
1950  addDirsAsGroups(root,0,0);
1951  delete root;
1952 }
1953 
1954 //-------------------------------------------------------------------
1955 
1957 {
1958  if (m_visited) return; // already done
1959  m_visited=TRUE;
1960  if (m_usingDirList)
1961  {
1963  NamespaceDef *nd;
1964  for (nli.toFirst();(nd=nli.current());++nli)
1965  {
1966  nd->combineUsingRelations();
1967  }
1968  for (nli.toFirst();(nd=nli.current());++nli)
1969  {
1970  // add used namespaces of namespace nd to this namespace
1971  if (nd->getUsedNamespaces())
1972  {
1974  NamespaceDef *und;
1975  for (unli.toFirst();(und=unli.current());++unli)
1976  {
1977  //printf("Adding namespace %s to the using list of %s\n",und->qualifiedName().data(),qualifiedName().data());
1978  addUsingDirective(und);
1979  }
1980  }
1981  // add used classes of namespace nd to this namespace
1982  if (nd->getUsedClasses())
1983  {
1985  Definition *ucd;
1986  for (cli.toFirst();(ucd=cli.current());++cli)
1987  {
1988  //printf("Adding class %s to the using list of %s\n",cd->qualifiedName().data(),qualifiedName().data());
1989  addUsingDeclaration(ucd);
1990  }
1991  }
1992  }
1993  }
1994 }
1995 
1997 {
1998  return name().right(4)==".doc" ||
1999  name().right(4)==".txt" ||
2000  name().right(4)==".dox" ||
2001  name().right(3)==".md" ||
2002  name().right(9)==".markdown";
2003 }
2004 
2006 {
2007  QCString vercmd = Config_getString(FILE_VERSION_FILTER);
2008  if (!vercmd.isEmpty() && !m_filePath.isEmpty() &&
2009  m_filePath!="generated" && m_filePath!="graph_legend")
2010  {
2011  msg("Version of %s : ",m_filePath.data());
2012  QCString cmd = vercmd+" \""+m_filePath+"\"";
2013  Debug::print(Debug::ExtCmd,0,"Executing popen(`%s`)\n",qPrint(cmd));
2014  FILE *f=Portable::popen(cmd,"r");
2015  if (!f)
2016  {
2017  err("could not execute %s\n",vercmd.data());
2018  return;
2019  }
2020  const int bufSize=1024;
2021  char buf[bufSize];
2022  int numRead = (int)fread(buf,1,bufSize-1,f);
2023  Portable::pclose(f);
2024  if (numRead>0 && numRead<bufSize)
2025  {
2026  buf[numRead]='\0';
2027  m_fileVersion=QCString(buf,numRead).stripWhiteSpace();
2028  if (!m_fileVersion.isEmpty())
2029  {
2030  msg("%s\n",m_fileVersion.data());
2031  return;
2032  }
2033  }
2034  msg("no version available\n");
2035  }
2036 }
2037 
2038 
2040 {
2041  if (Htags::useHtags)
2042  {
2043  return Htags::path2URL(m_filePath);
2044  }
2045  else
2046  {
2047  return m_outputDiskName+"_source";
2048  }
2049 }
2050 
2052 {
2053  return m_outputDiskName;
2054 }
2055 
2058 {
2059  return getSourceFileBase();
2060 }
2061 
2063 {
2066  MemberList *ml;
2067  for (mli.toFirst();(ml=mli.current());++mli)
2068  {
2069  if (ml->listType()==lt)
2070  {
2071  return ml;
2072  }
2073  }
2074  // not found, create a new member list
2075  ml = new MemberList(lt);
2076  m_memberLists.append(ml);
2077  return ml;
2078 }
2079 
2081 {
2082  static bool sortBriefDocs = Config_getBool(SORT_BRIEF_DOCS);
2083  static bool sortMemberDocs = Config_getBool(SORT_MEMBER_DOCS);
2084  MemberList *ml = createMemberList(lt);
2085  ml->setNeedsSorting(
2086  ((ml->listType()&MemberListType_declarationLists) && sortBriefDocs) ||
2087  ((ml->listType()&MemberListType_documentationLists) && sortMemberDocs));
2088  ml->append(md);
2089 #if 0
2090  if (ml->needsSorting())
2091  ml->inSort(md);
2092  else
2093  ml->append(md);
2094 #endif
2096  {
2097  ml->setInFile(TRUE);
2098  }
2100 }
2101 
2103 {
2105  MemberList *ml;
2106  for (;(ml=mli.current());++mli)
2107  {
2108  if (ml->needsSorting()) { ml->sort(); ml->setNeedsSorting(FALSE); }
2109  }
2110 
2111  if (m_memberGroupSDict)
2112  {
2114  MemberGroup *mg;
2115  for (;(mg=mgli.current());++mgli)
2116  {
2117  MemberList *mlg = mg->members();
2118  if (mlg->needsSorting()) { mlg->sort(); mlg->setNeedsSorting(FALSE); }
2119  }
2120  }
2121 
2122 }
2123 
2125 {
2127  MemberList *ml;
2128  for (;(ml=mli.current());++mli)
2129  {
2130  if (ml->listType()==lt)
2131  {
2132  return ml;
2133  }
2134  }
2135  return 0;
2136 }
2137 
2139 {
2140  static bool optVhdl = Config_getBool(OPTIMIZE_OUTPUT_VHDL);
2141  MemberList * ml = getMemberList(lt);
2142  if (ml)
2143  {
2144  if (optVhdl) // use specific declarations function
2145  {
2146 
2147  VhdlDocGen::writeVhdlDeclarations(ml,ol,0,0,this,0);
2148  }
2149  else
2150  {
2151  ml->writeDeclarations(ol,0,0,this,0,title,0);
2152  }
2153  }
2154 }
2155 
2157 {
2158  MemberList * ml = getMemberList(lt);
2159  if (ml) ml->writeDocumentation(ol,name(),this,title);
2160 }
2161 
2163 {
2164  static bool showFiles = Config_getBool(SHOW_FILES);
2165  return hasDocumentation() && !isReference() && (showFiles || isLinkableViaGroup());
2166 }
2167 
2169  QDict<void> *filesVisited,const FileDef *fd,QStrList &incFiles)
2170 {
2171  if (fd->includeFileList())
2172  {
2174  IncludeInfo *ii;
2175  for (iii.toFirst();(ii=iii.current());++iii)
2176  {
2177  if (ii->fileDef && !ii->fileDef->isReference() &&
2178  !filesVisited->find(ii->fileDef->absFilePath()))
2179  {
2180  //printf("FileDefImpl::addIncludeDependency(%s)\n",ii->fileDef->absFilePath().data());
2181  incFiles.append(ii->fileDef->absFilePath());
2182  filesVisited->insert(ii->fileDef->absFilePath(),(void*)0x8);
2183  getAllIncludeFilesRecursively(filesVisited,ii->fileDef,incFiles);
2184  }
2185  }
2186  }
2187 }
2188 
2190 {
2191  QDict<void> includes(257);
2192  ::getAllIncludeFilesRecursively(&includes,this,incFiles);
2193 }
2194 
2196 {
2197  return theTranslator->trFileReference(name());
2198 }
2199 
2201 {
2202  return m_fileVersion;
2203 }
2204 
2206 {
2207  return m_inclDepFileName;
2208 }
2209 
2211 {
2212  return m_inclByDepFileName;
2213 }
2214 
2216 {
2218  MemberList *ml;
2219  for (mli.toFirst();(ml=mli.current());++mli)
2220  {
2221  ml->countDecMembers();
2222  ml->countDocMembers();
2223  }
2224  if (m_memberGroupSDict)
2225  {
2227  MemberGroup *mg;
2228  for (;(mg=mgli.current());++mgli)
2229  {
2230  mg->countDecMembers();
2231  mg->countDocMembers();
2232  }
2233  }
2234 }
2235 
2237 {
2239  return ml ? ml->numDocMembers() : 0;
2240 }
2241 
2243 {
2245  return ml ? ml->numDecMembers() : 0;
2246 }
2247 
LayoutDocEntry::MemberDecl
@ MemberDecl
Definition: layout.h:36
clangparser.h
FileDefImpl::m_includedByDict
QDict< IncludeInfo > * m_includedByDict
Definition: filedef.cpp:156
FileDefImpl::addMembersToMemberGroup
virtual void addMembersToMemberGroup()
Definition: filedef.cpp:1318
FileDefImpl::writeInlineClasses
void writeInlineClasses(OutputList &ol)
Definition: filedef.cpp:738
LayoutDocEntry::FileConstantGroups
@ FileConstantGroups
Definition: layout.h:53
QList::removeRef
bool removeRef(const type *d)
Definition: qlist.h:78
MemberList::findRef
int findRef(const MemberDef *md) const
Definition: memberlist.cpp:282
getLanguageFromFileName
SrcLangExt getLanguageFromFileName(const QCString &fileName)
Definition: util.cpp:6876
Entry::SOURCE_SEC
@ SOURCE_SEC
Definition: entry.h:87
DirEntry::kind
EntryKind kind() const
Definition: filedef.h:238
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
dotincldepgraph.h
LayoutDocEntry::GroupDirs
@ GroupDirs
Definition: layout.h:60
LayoutDocEntrySection::title
QCString title(SrcLangExt lang) const
Definition: layout.cpp:1598
MemberList::addListReferences
void addListReferences(Definition *def)
Definition: memberlist.cpp:935
QCString::isEmpty
bool isEmpty() const
Returns TRUE iff the string is empty.
Definition: qcstring.h:191
OutputList::endParagraph
void endParagraph()
Definition: outputlist.h:97
LayoutDocEntry::NamespaceNestedNamespaces
@ NamespaceNestedNamespaces
Definition: layout.h:48
FileDefImpl::~FileDefImpl
virtual ~FileDefImpl()
Definition: filedef.cpp:258
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
Directory::children
QList< DirEntry > & children()
Definition: filedef.h:265
MemberListType_docDictionaryMembers
@ MemberListType_docDictionaryMembers
Definition: types.h:193
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
FileDefImpl::endMemberDocumentation
void endMemberDocumentation(OutputList &ol)
Definition: filedef.cpp:770
Translator::trGotoSourceCode
virtual QCString trGotoSourceCode()=0
NamespaceSDict
A sorted dictionary of NamespaceDef objects.
Definition: namespacedef.h:155
FileDefImpl::m_structSDict
ClassSDict * m_structSDict
Definition: filedef.cpp:178
MemberList::listTypeAsString
static QCString listTypeAsString(MemberListType type)
Definition: memberlist.cpp:993
membergroup.h
QList::getLast
type * getLast() const
Definition: qlist.h:96
FileDefImpl::generateSourceFile
virtual bool generateSourceFile() const
Definition: filedef.cpp:1670
MemberList::needsSorting
bool needsSorting() const
Definition: memberlist.h:67
FileDefImpl::addUsingDeclaration
virtual void addUsingDeclaration(Definition *def)
Definition: filedef.cpp:1531
OutputList::endCodeFragment
void endCodeFragment()
Definition: outputlist.h:226
Doxygen::parserManager
static ParserManager * parserManager
Definition: doxygen.h:130
Translator::trGeneratedAutomatically
virtual QCString trGeneratedAutomatically(const char *s)=0
guessSection
int guessSection(const char *name)
Definition: util.cpp:319
MemberListType
MemberListType
Definition: types.h:101
LayoutDocManager::File
@ File
Definition: layout.h:191
FileDefImpl::writeMemberPages
virtual void writeMemberPages(OutputList &ol)
Definition: filedef.cpp:1094
OutputList::endProjectNumber
void endProjectNumber()
Definition: outputlist.h:75
uint
unsigned uint
Definition: qglobal.h:351
MemberListType_docEnumMembers
@ MemberListType_docEnumMembers
Definition: types.h:167
OutputList::startTypewriter
void startTypewriter()
Definition: outputlist.h:152
ClassDef
A abstract class representing of a compound symbol.
Definition: classdef.h:61
NamespaceDef::getUsedNamespaces
virtual const NamespaceSDict * getUsedNamespaces() const =0
GroupDef::addGroup
virtual void addGroup(const GroupDef *def)=0
MemberType_EnumValue
@ MemberType_EnumValue
Definition: types.h:203
ClassDef::Interface
@ Interface
Definition: classdef.h:67
MemberGroup::distributeMemberGroupDocumentation
void distributeMemberGroupDocumentation()
Definition: membergroup.cpp:212
OutputGenerator::Docbook
@ Docbook
Definition: outputgen.h:325
Doxygen::searchIndex
static SearchIndexIntf * searchIndex
Definition: doxygen.h:122
LayoutDocEntry::NamespaceExceptions
@ NamespaceExceptions
Definition: layout.h:49
FileDefImpl::createMemberList
MemberList * createMemberList(MemberListType lt)
Definition: filedef.cpp:2062
DefinitionImpl::docLine
virtual int docLine() const
Definition: definition.cpp:1896
FileDefImpl::setPackageDef
virtual void setPackageDef(PackageDef *pd)
Definition: filedef.cpp:112
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
DotInclDepGraph::isTrivial
bool isTrivial() const
Definition: dotincldepgraph.cpp:209
DefinitionImpl::isReference
virtual bool isReference() const
Definition: definition.cpp:2055
FileDefImpl::getUsedNamespaces
virtual NamespaceSDict * getUsedNamespaces() const
Definition: filedef.cpp:1525
memberdef.h
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
Translator::trGotoDocumentation
virtual QCString trGotoDocumentation()=0
FileDefImpl::includeDependencyGraphFileName
virtual QCString includeDependencyGraphFileName() const
Definition: filedef.cpp:2205
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
DOT_GRAPH_MAX_NODES
#define DOT_GRAPH_MAX_NODES
Definition: dotcallgraph.cpp:24
NamespaceDef::getUsedClasses
virtual const SDict< Definition > * getUsedClasses() const =0
LayoutDocEntry::FileExceptions
@ FileExceptions
Definition: layout.h:53
QList::append
void append(const type *d)
Definition: qlist.h:73
FileDefImpl::m_dir
DirDef * m_dir
Definition: filedef.cpp:172
namespacedef.h
FileDefImpl::writeSummaryLinks
virtual void writeSummaryLinks(OutputList &ol) const
Definition: filedef.cpp:810
FileDefImpl::fileName
virtual QCString fileName() const
Definition: filedef.cpp:60
OutputList::pushGeneratorState
void pushGeneratorState()
Definition: outputlist.cpp:98
FileDefImpl::getMemberList
virtual MemberList * getMemberList(MemberListType lt) const
Definition: filedef.cpp:2124
FileDefImpl::anchor
virtual QCString anchor() const
Definition: filedef.cpp:62
FileDefImpl::writeNamespaceDeclarations
void writeNamespaceDeclarations(OutputList &ol, const QCString &title, bool isConstantGroup)
Definition: filedef.cpp:725
Directory
Class representing a directory tree of DirEntry objects.
Definition: filedef.h:258
OutputList::parseText
void parseText(const QCString &textStr)
Definition: outputlist.cpp:151
FileDefImpl::addMemberToList
void addMemberToList(MemberListType lt, MemberDef *md)
Definition: filedef.cpp:2080
LayoutDocEntry::FileSourceLink
@ FileSourceLink
Definition: layout.h:55
FileDefImpl::addSourceRef
virtual void addSourceRef(int line, Definition *d, MemberDef *md)
Definition: filedef.cpp:1475
FileDefImpl::m_includedByList
QList< IncludeInfo > * m_includedByList
Definition: filedef.cpp:157
FileDefImpl::m_usingDeclList
SDict< Definition > * m_usingDeclList
Definition: filedef.cpp:159
FileDefImpl::includedByFileList
virtual QList< IncludeInfo > * includedByFileList() const
Definition: filedef.cpp:83
ClassDef::compoundType
virtual CompoundType compoundType() const =0
Returns the type of compound this is, i.e.
LayoutDocEntryMemberDecl
Represents of a member declaration list with configurable title and subtitle.
Definition: layout.h:91
FileDefImpl::fileVersion
virtual QCString fileVersion() const
Definition: filedef.cpp:2200
SrcLangExt
SrcLangExt
Language as given by extension.
Definition: types.h:43
Translator::trInclDepGraph
virtual QCString trInclDepGraph(const char *fName)=0
SDict::prepend
void prepend(const char *key, const T *d)
Definition: sortdict.h:153
MemberListType_docSequenceMembers
@ MemberListType_docSequenceMembers
Definition: types.h:191
FileDefImpl::numDecMembers
virtual int numDecMembers() const
Definition: filedef.cpp:2242
DefinitionImpl::docFile
virtual QCString docFile() const
Definition: definition.cpp:1901
FileDefImpl::isLinkable
virtual bool isLinkable() const
Definition: filedef.cpp:76
FileDefImpl::writeIncludeFiles
void writeIncludeFiles(OutputList &ol)
Definition: filedef.cpp:590
LayoutDocEntryMemberDef
Represents of a member definition list with configurable title.
Definition: layout.h:107
MemberType_Enumeration
@ MemberType_Enumeration
Definition: types.h:202
DefinitionImpl::setReference
virtual void setReference(const char *r)
Definition: definition.cpp:2115
FileDefImpl::m_interfaceSDict
ClassSDict * m_interfaceSDict
Definition: filedef.cpp:177
DevNullCodeDocInterface::codify
virtual void codify(const char *)
Definition: filedef.cpp:195
FileDef::getUsedClasses
virtual SDict< Definition > * getUsedClasses() const =0
QListIterator
The QListIterator class provides an iterator for QList collections.
Definition: qlist.h:128
FileDefImpl::isDocumentationFile
virtual bool isDocumentationFile() const
Definition: filedef.cpp:1996
Definition::makePartOfGroup
virtual void makePartOfGroup(GroupDef *gd)=0
FileDef::isLinkable
virtual bool isLinkable() const =0
Definition::isHidden
virtual bool isHidden() const =0
MemberType_Typedef
@ MemberType_Typedef
Definition: types.h:201
SDict::inSort
void inSort(const char *key, const T *d)
Definition: sortdict.h:197
Translator::trFile
virtual QCString trFile(bool first_capital, bool singular)=0
MemberGroup::allMembersInSameSection
bool allMembersInSameSection() const
Definition: membergroup.h:69
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
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
QCString::length
uint length() const
Returns the length of the string, excluding the 0-terminator.
Definition: qcstring.h:197
createFileDef
FileDef * createFileDef(const char *p, const char *n, const char *ref, const char *dn)
Definition: filedef.cpp:183
QMAX
#define QMAX(a, b)
Definition: qglobal.h:392
FileDef::includeFileList
virtual QList< IncludeInfo > * includeFileList() const =0
FileDefImpl::includedByDependencyGraphFileName
virtual QCString includedByDependencyGraphFileName() const
Definition: filedef.cpp:2210
FileDefImpl::title
virtual QCString title() const
Definition: filedef.cpp:2195
FileDefImpl::sortMemberLists
virtual void sortMemberLists()
Definition: filedef.cpp:2102
MemberListType_decDictionaryMembers
@ MemberListType_decDictionaryMembers
Definition: types.h:192
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
FileDefImpl::numDocMembers
virtual int numDocMembers() const
Definition: filedef.cpp:2236
DocLinkInfo
Definition: outputgen.h:41
DefinitionIntf::DefType
DefType
Definition: definition.h:79
err
void err(const char *fmt,...)
Definition: message.cpp:238
FileDefImpl::writeMemberDeclarations
void writeMemberDeclarations(OutputList &ol, MemberListType lt, const QCString &title)
Definition: filedef.cpp:2138
SrcLangExt_Java
@ SrcLangExt_Java
Definition: types.h:46
LayoutDocEntry::FileClasses
@ FileClasses
Definition: layout.h:53
FileDef::addIncludedUsingDirectives
virtual void addIncludedUsingDirectives()=0
FileDefImpl::setDirDef
virtual void setDirDef(DirDef *dd)
Definition: filedef.cpp:113
DevNullCodeDocInterface::linkableSymbol
virtual void linkableSymbol(int, const char *, Definition *, Definition *)
Definition: filedef.cpp:209
FileDefImpl::insertClass
virtual void insertClass(ClassDef *cd)
Definition: filedef.cpp:1409
FileDefImpl::m_srcMemberDict
QIntDict< MemberDef > * m_srcMemberDict
Definition: filedef.cpp:168
Doxygen::inputNameLinkedMap
static FileNameLinkedMap * inputNameLinkedMap
Definition: doxygen.h:103
FileDefImpl::m_classSDict
ClassSDict * m_classSDict
Definition: filedef.cpp:176
QList< IncludeInfo >
MemberList::setInFile
void setInFile(bool inFile)
Definition: memberlist.h:89
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
FileDefImpl::writeAuthorSection
void writeAuthorSection(OutputList &ol)
Definition: filedef.cpp:798
FileDefImpl::addIncludedByDependency
virtual void addIncludedByDependency(FileDef *fd, const char *incName, bool local, bool imported)
Definition: filedef.cpp:1640
SIntDict::sort
void sort()
Definition: sortdict.h:518
OutputList::disable
void disable(OutputGenerator::OutputType o)
Definition: outputlist.cpp:72
filename.h
LayoutDocEntry::DirGraph
@ DirGraph
Definition: layout.h:64
QInternalList::append
void append(const type *d)
Definition: qinternallist.h:61
MemberDef::anchor
virtual QCString anchor() const =0
endFileWithNavPath
void endFileWithNavPath(const Definition *d, OutputList &ol)
Definition: index.cpp:313
LayoutDocEntry::FileIncludes
@ FileIncludes
Definition: layout.h:54
MemberGroup::addToDeclarationSection
void addToDeclarationSection()
Definition: membergroup.cpp:185
OutputList::startContents
void startContents()
Definition: outputlist.h:344
IncludeInfo::imported
bool imported
Definition: filedef.h:52
FileDefImpl::m_includeDict
QDict< IncludeInfo > * m_includeDict
Definition: filedef.cpp:154
stripFromPath
static QCString stripFromPath(const QCString &path, QStrList &l)
Definition: util.cpp:278
MemberDef::getOutputFileBase
virtual QCString getOutputFileBase() const =0
config.h
FileDef::name
virtual QCString name() const =0
startTitle
void startTitle(OutputList &ol, const char *fileName, const Definition *def)
Definition: index.cpp:257
FileDefImpl::m_exceptionSDict
ClassSDict * m_exceptionSDict
Definition: filedef.cpp:179
OutputList::endGroupHeader
void endGroupHeader(int extraLevels=0)
Definition: outputlist.h:158
LayoutDocEntrySection
Definition: layout.h:81
FileDefImpl::name
virtual QCString name() const
Definition: filedef.cpp:1467
LayoutDocEntry::ClassUsedFiles
@ ClassUsedFiles
Definition: layout.h:45
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
OutputList::endTypewriter
void endTypewriter()
Definition: outputlist.h:154
FileDefImpl::writeIncludeGraph
void writeIncludeGraph(OutputList &ol)
Definition: filedef.cpp:659
QCString
This is an alternative implementation of QCString.
Definition: qcstring.h:134
FileDef::isVisited
virtual bool isVisited() const =0
FileDefImpl::hasDetailedDescription
virtual bool hasDetailedDescription() const
Definition: filedef.cpp:337
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
ClassDef::Exception
@ Exception
Definition: classdef.h:70
DefinitionImpl::getLanguage
virtual SrcLangExt getLanguage() const
Returns the programming language this definition was written in.
Definition: definition.cpp:2120
ClassSDict
A sorted dictionary of ClassDef objects.
Definition: classlist.h:57
ClangParser::start
void start(const char *fileName, QStrList &filesInTranslationUnit)
Start parsing a file.
Definition: clangparser.cpp:952
DevNullCodeDocInterface::writeCodeAnchor
virtual void writeCodeAnchor(const char *)
Definition: filedef.cpp:208
MemberGroup::countDocMembers
void countDocMembers()
Definition: membergroup.cpp:200
FileDefImpl::m_visited
bool m_visited
Definition: filedef.cpp:130
Definition::localName
virtual QCString localName() const =0
FileDefImpl::m_namespaceSDict
NamespaceSDict * m_namespaceSDict
Definition: filedef.cpp:175
MemberListType_declarationLists
@ MemberListType_declarationLists
Definition: types.h:104
SDict::append
void append(const char *key, const T *d)
Definition: sortdict.h:135
OutputList::endInclDepGraph
void endInclDepGraph(DotInclDepGraph &g)
Definition: outputlist.h:376
FileDef
A model of a file symbol.
Definition: filedef.h:65
ParserManager::getCodeParser
CodeParserInterface & getCodeParser(const char *extension)
Gets the interface to the parser associated with given extension.
Definition: parserintf.h:227
FileDefImpl::definitionType
virtual DefType definitionType() const
Definition: filedef.cpp:57
MemberGroup
A class representing a group of members.
Definition: membergroup.h:42
Config_getString
#define Config_getString(val)
Definition: config.h:34
LayoutDocEntry::NamespaceStructs
@ NamespaceStructs
Definition: layout.h:49
MemberListType_decSequenceMembers
@ MemberListType_decSequenceMembers
Definition: types.h:190
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
FileDefImpl::getNamespaceSDict
virtual NamespaceSDict * getNamespaceSDict() const
Definition: filedef.cpp:88
Translator::trMore
virtual QCString trMore()=0
OutputList::writeRuler
void writeRuler()
Definition: outputlist.h:220
FileDefImpl::addUsingDirective
virtual void addUsingDirective(const NamespaceDef *nd)
Definition: filedef.cpp:1512
OutputList::startTextBlock
void startTextBlock(bool dense=FALSE)
Definition: outputlist.h:392
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
FileDefImpl::m_usingDirList
NamespaceSDict * m_usingDirList
Definition: filedef.cpp:158
SrcLangExt_ObjC
@ SrcLangExt_ObjC
Definition: types.h:50
QCString::find
int find(char c, int index=0, bool cs=TRUE) const
Definition: qcstring.cpp:42
ClangParser::finish
void finish()
Finishes parsing a translation unit.
Definition: clangparser.cpp:960
TRUE
@ TRUE
Definition: mscgen_bool.h:29
getFileFilter
QCString getFileFilter(const char *name, bool isSourceCode)
Definition: util.cpp:2427
FALSE
@ FALSE
Definition: mscgen_bool.h:28
Definition::writeNavigationPath
virtual void writeNavigationPath(OutputList &ol) const =0
dot.h
MemberGroup::writeTagFile
void writeTagFile(FTextStream &)
Definition: membergroup.cpp:364
entry.h
MemberType_Function
@ MemberType_Function
Definition: types.h:199
DotInclDepGraph::isTooBig
bool isTooBig() const
Definition: dotincldepgraph.cpp:214
warn_uncond
void warn_uncond(const char *fmt,...)
Definition: message.cpp:230
DefinitionImpl::getBodyDef
virtual FileDef * getBodyDef() const
Definition: definition.cpp:2075
convertToXML
QCString convertToXML(const char *s, bool keepEntities)
Definition: util.cpp:5386
OutputList::endContents
void endContents()
Definition: outputlist.h:346
LayoutDocEntry::MemberDefEnd
@ MemberDefEnd
Definition: layout.h:37
Directory::rename
void rename(const QCString &name)
Definition: filedef.h:266
MemberListType_decVarMembers
@ MemberListType_decVarMembers
Definition: types.h:154
IncludeInfo
Class representing the data associated with a #include statement.
Definition: filedef.h:46
classlist.h
Portable::pclose
int pclose(FILE *stream)
Definition: portable.cpp:440
LayoutDocEntry::GroupGraph
@ GroupGraph
Definition: layout.h:61
QCString::mid
QCString mid(uint index, uint len=(uint) -1) const
Definition: qcstring.cpp:274
FileDefImpl::getOutputFileBase
virtual QCString getOutputFileBase() const
Definition: filedef.cpp:2051
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
FileDefImpl::startMemberDocumentation
void startMemberDocumentation(OutputList &ol)
Definition: filedef.cpp:761
FileDef::getUsedNamespaces
virtual NamespaceSDict * getUsedNamespaces() const =0
OutputGenerator::RTF
@ RTF
Definition: outputgen.h:325
FileDefImpl::FileDefImpl
FileDefImpl(const char *p, const char *n, const char *ref=0, const char *dn=0)
Definition: filedef.cpp:220
MemberDef::getNamespaceDef
virtual const NamespaceDef * getNamespaceDef() const =0
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.
DevNullCodeDocInterface::endCodeLine
virtual void endCodeLine()
Definition: filedef.cpp:205
Doxygen::htmlFileExtension
static QCString htmlFileExtension
Definition: doxygen.h:119
message.h
FileDefImpl::setVisited
virtual void setVisited(bool v)
Definition: filedef.cpp:126
OutputList::disableAllBut
void disableAllBut(OutputGenerator::OutputType o)
Definition: outputlist.cpp:48
QIntDict< Definition >
FileDefImpl::endMemberDeclarations
void endMemberDeclarations(OutputList &ol)
Definition: filedef.cpp:756
LayoutDocEntry::ClassIncludes
@ ClassIncludes
Definition: layout.h:42
QIntDict::insert
void insert(long k, const type *d)
Definition: qintdict.h:57
addDirsAsGroups
static void addDirsAsGroups(Directory *root, GroupDef *parent, int level)
Definition: filedef.cpp:1905
debug.h
FileDefImpl::getUsedClasses
virtual SDict< Definition > * getUsedClasses() const
Definition: filedef.cpp:81
LayoutDocEntry::GroupNamespaces
@ GroupNamespaces
Definition: layout.h:59
MemberList::countDecMembers
void countDecMembers()
Definition: memberlist.cpp:133
DirEntry::name
QCString name() const
Definition: filedef.h:243
FileDefImpl::docName
virtual const QCString & docName() const
Definition: filedef.cpp:68
MemberList::listType
MemberListType listType() const
Definition: memberlist.h:38
LayoutDocEntry::FileInlineClasses
@ FileInlineClasses
Definition: layout.h:56
FileDefImpl::setDiskName
virtual void setDiskName(const QCString &name)
Definition: filedef.cpp:276
FileDefImpl::addListReferences
virtual void addListReferences()
Definition: filedef.cpp:1682
FileDefImpl::getMemberLists
virtual const QList< MemberList > & getMemberLists() const
Definition: filedef.cpp:86
Portable::popen
FILE * popen(const char *name, const char *type)
Definition: portable.cpp:431
NamespaceSDict::declVisible
bool declVisible() const
Definition: namespacedef.cpp:1356
FileDefImpl::acquireFileVersion
void acquireFileVersion()
Definition: filedef.cpp:2005
LayoutDocEntryMemberDef::type
MemberListType type
Definition: layout.h:112
DevNullCodeDocInterface::writeLineNumber
virtual void writeLineNumber(const char *, const char *, const char *, int)
Definition: filedef.cpp:202
OutputList::endTextBlock
void endTextBlock(bool paraBreak=FALSE)
Definition: outputlist.h:394
htags.h
DefinitionIntf::TypeFile
@ TypeFile
Definition: definition.h:81
NamespaceDef
An abstract interface of a namespace symbol.
Definition: namespacedef.h:38
Htags::useHtags
static bool useHtags
Copyright (C) 1997-2015 by Dimitri van Heesch.
Definition: htags.h:23
DevNullCodeDocInterface::addWord
virtual void addWord(const char *, bool)
Definition: filedef.cpp:211
Translator::trFileReference
virtual QCString trFileReference(const char *fileName)=0
DotInclDepGraph::numNodes
int numNodes() const
Definition: dotincldepgraph.cpp:219
OPTIMIZE_OUTPUT_SLICE
#define OPTIMIZE_OUTPUT_SLICE
Copyright (C) 1997-2019 by Dimitri van Heesch.
Definition: dotgfxhierarchytable.cpp:24
theTranslator
Translator * theTranslator
Copyright (C) 1997-2015 by Dimitri van Heesch.
Definition: language.cpp:157
FileDefImpl::writeSourceLink
void writeSourceLink(OutputList &ol)
Definition: filedef.cpp:710
MemberList::writeDocumentationPage
void writeDocumentationPage(OutputList &ol, const char *scopeName, const Definition *container) const
Definition: memberlist.cpp:839
CodeParserInterface::parseCode
virtual void parseCode(CodeOutputInterface &codeOutIntf, const char *scopeName, const QCString &input, SrcLangExt lang, bool isExampleBlock, const char *exampleName=0, FileDef *fileDef=0, int startLine=-1, int endLine=-1, bool inlineFragment=FALSE, const MemberDef *memberDef=0, bool showLineNumbers=TRUE, const Definition *searchCtx=0, bool collectXRefs=TRUE)=0
Parses a source file or fragment with the goal to produce highlighted and cross-referenced output.
OutputList::writeAnchor
void writeAnchor(const char *fileName, const char *name)
Definition: outputlist.h:222
LayoutDocEntry::GroupPageDocs
@ GroupPageDocs
Definition: layout.h:61
SrcLangExt_Cpp
@ SrcLangExt_Cpp
Definition: types.h:51
doxygen.h
FileDefImpl::writeDetailedDescription
void writeDetailedDescription(OutputList &ol, const QCString &title)
Definition: filedef.cpp:460
parserintf.h
Doxygen::groupSDict
static GroupSDict * groupSDict
Definition: doxygen.h:112
SIntDict< MemberGroup >::Iterator
friend class Iterator
Definition: sortdict.h:594
DevNullCodeDocInterface::writeCodeLink
virtual void writeCodeLink(const char *, const char *, const char *, const char *, const char *)
Definition: filedef.cpp:196
FileDefImpl::m_inclByDepFileName
QCString m_inclByDepFileName
Definition: filedef.cpp:163
language.h
CodeParserInterface::resetCodeParserState
virtual void resetCodeParserState()=0
Resets the state of the code parser.
OutputList::docify
void docify(const char *s)
Definition: outputlist.h:125
FileDefImpl::m_fileName
QCString m_fileName
Definition: filedef.cpp:165
findDirNode
static Directory * findDirNode(Directory *root, const QCString &name)
Definition: filedef.cpp:1739
LayoutDocEntryMemberDecl::type
MemberListType type
Definition: layout.h:97
QList::count
uint count() const
Definition: qlist.h:66
DevNullCodeDocInterface::endFontClass
virtual void endFontClass()
Definition: filedef.cpp:207
MemberListType_docFuncMembers
@ MemberListType_docFuncMembers
Definition: types.h:168
QCString::right
QCString right(uint len) const
Definition: qcstring.cpp:259
FileDefImpl::m_outputDiskName
QCString m_outputDiskName
Definition: filedef.cpp:164
QListIterator::current
type * current() const
Definition: qlist.h:147
LayoutDocEntry::DirSubDirs
@ DirSubDirs
Definition: layout.h:64
Htags::path2URL
static QCString path2URL(const QCString &path)
Definition: htags.cpp:163
OutputList::startProjectNumber
void startProjectNumber()
Definition: outputlist.h:73
docparser.h
DefinitionImpl::getDefFileExtension
virtual QCString getDefFileExtension() const
Definition: definition.cpp:2025
DefinitionImpl::xrefListItems
virtual const std::vector< RefItem * > & xrefListItems() const
Definition: definition.cpp:1626
CodeOutputInterface
Output interface for code parser.
Definition: outputgen.h:60
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
QStrList
The QStrList class provides a doubly linked list of char*.
Definition: qstrlist.h:58
DirEntry::file
FileDef * file() const
Definition: filedef.h:239
QCString::stripWhiteSpace
QCString stripWhiteSpace() const
Definition: qcstring.cpp:323
LayoutDocEntry::NamespaceNestedConstantGroups
@ NamespaceNestedConstantGroups
Definition: layout.h:48
Definition
The common base class of all entity definitions found in the sources.
Definition: definition.h:100
DirEntry::parent
DirEntry * parent() const
Definition: filedef.h:242
FileDefImpl::m_memberLists
QList< MemberList > m_memberLists
Definition: filedef.cpp:173
FileDef::includeName
virtual QCString includeName() const =0
OutputList::endMemberSections
void endMemberSections()
Definition: outputlist.h:166
FileDefImpl::writeMemberDocumentation
void writeMemberDocumentation(OutputList &ol, MemberListType lt, const QCString &title)
Definition: filedef.cpp:2156
QListIterator::toLast
type * toLast()
Definition: qlist.h:137
filedef.h
LayoutDocEntry::MemberDef
@ MemberDef
Definition: layout.h:37
Definition::getReference
virtual QCString getReference() const =0
FileDefImpl::writeClassDeclarations
void writeClassDeclarations(OutputList &ol, const QCString &title, ClassSDict *d)
Definition: filedef.cpp:732
convertNameToFile
QCString convertNameToFile(const char *name, bool allowDots, bool allowUnderscore)
Definition: util.cpp:5022
MemberGroup::header
QCString header() const
Definition: membergroup.h:48
OutputList::startMemberSections
void startMemberSections()
Definition: outputlist.h:164
QCString::left
QCString left(uint len) const
Definition: qcstring.cpp:241
ClangParser::writeSources
void writeSources(CodeOutputInterface &ol, FileDef *fd)
writes the syntax highlighted source code for a file
Definition: clangparser.cpp:969
writeDirTreeNode
static void writeDirTreeNode(OutputList &ol, DirDef *dd, int level, FTVHelp *ftv, bool addToIndex)
Definition: index.cpp:603
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
Translator::trDefinedInSourceFile
virtual QCString trDefinedInSourceFile()=0
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
DevNullCodeDocInterface::setCurrentDoc
virtual void setCurrentDoc(const Definition *, const char *, bool)
Definition: filedef.cpp:210
MemberListType_decEnumMembers
@ MemberListType_decEnumMembers
Definition: types.h:152
MemberList::inSort
void inSort(const MemberDef *md)
Definition: memberlist.cpp:257
LayoutDocEntry::FileIncludedByGraph
@ FileIncludedByGraph
Definition: layout.h:55
NamespaceDef::isLinkableInProject
virtual bool isLinkableInProject() const =0
LayoutDocEntry::ClassNestedClasses
@ ClassNestedClasses
Definition: layout.h:43
OutputList::popGeneratorState
void popGeneratorState()
Definition: outputlist.cpp:106
OutputGenerator::Html
@ Html
Definition: outputgen.h:325
memberlist.h
FileDefImpl::writeDocumentation
virtual void writeDocumentation(OutputList &ol)
Definition: filedef.cpp:877
DirDef
A model of a directory symbol.
Definition: dirdef.h:45
FileDefImpl::m_memberGroupSDict
MemberGroupSDict * m_memberGroupSDict
Definition: filedef.cpp:174
FileDefImpl::writeMemberGroups
void writeMemberGroups(OutputList &ol)
Definition: filedef.cpp:779
OutputGenerator::Latex
@ Latex
Definition: outputgen.h:325
Translator::trInclByDepGraph
virtual QCString trInclByDepGraph()=0
dirdef.h
MemberType_Property
@ MemberType_Property
Definition: types.h:208
LayoutDocEntry::kind
virtual Kind kind() const =0
FileDefImpl::findSectionsInDocumentation
virtual void findSectionsInDocumentation()
Definition: filedef.cpp:313
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
MemberType_Dictionary
@ MemberType_Dictionary
Definition: types.h:213
ClassDef::Struct
@ Struct
Definition: classdef.h:65
FileDefImpl::m_includeList
QList< IncludeInfo > * m_includeList
Definition: filedef.cpp:155
QListIterator::toFirst
type * toFirst()
Definition: qlist.h:136
FileDefImpl::isIncluded
virtual bool isIncluded(const QCString &name) const
Definition: filedef.cpp:1664
HLI_FileVisible
@ HLI_FileVisible
Definition: index.h:167
OutputList::startTextLink
void startTextLink(const char *file, const char *anchor)
Definition: outputlist.h:139
FileDefImpl::writeIncludedByGraph
void writeIncludedByGraph(OutputList &ol)
Definition: filedef.cpp:684
FileDefImpl::getSourceMember
virtual MemberDef * getSourceMember(int lineNr) const
Definition: filedef.cpp:1500
FileDefImpl::m_docname
QCString m_docname
Definition: filedef.cpp:166
ClangParser::instance
static ClangParser * instance()
Returns the one and only instance of the class.
Definition: clangparser.cpp:32
OutputList::endTextLink
void endTextLink()
Definition: outputlist.h:141
FileDefImpl::packageDef
virtual PackageDef * packageDef() const
Definition: filedef.cpp:78
IncludeInfo::indirect
bool indirect
Definition: filedef.h:53
QIntDict::find
type * find(long k) const
Definition: qintdict.h:63
MemberDef::isLinkable
virtual bool isLinkable() const =0
Debug::print
static void print(DebugMask mask, int prio, const char *fmt,...)
Definition: debug.cpp:86
MemberListType_decFuncMembers
@ MemberListType_decFuncMembers
Definition: types.h:153
Doxygen::parseSourcesNeeded
static bool parseSourcesNeeded
Definition: doxygen.h:120
createSubDirs
void createSubDirs(QDir &d)
Definition: util.cpp:5127
DevNullCodeDocInterface
Class implementing CodeOutputInterface by throwing away everything.
Definition: filedef.cpp:193
FileDefImpl::computeAnchors
virtual void computeAnchors()
Definition: filedef.cpp:293
SDict< NamespaceDef >::Iterator
friend class Iterator
Definition: sortdict.h:285
MemberList::numDocMembers
int numDocMembers() const
Definition: memberlist.h:65
FileDef::generateSourceFile
virtual bool generateSourceFile() const =0
LayoutDocEntry::GroupClasses
@ GroupClasses
Definition: layout.h:59
FileDefImpl::isSource
virtual bool isSource() const
Definition: filedef.cpp:69
FileDefImpl::includeFileList
virtual QList< IncludeInfo > * includeFileList() const
Definition: filedef.cpp:82
classdef.h
Entry::HEADER_SEC
@ HEADER_SEC
Definition: entry.h:88
SDict< Definition >
FileDefImpl::insertNamespace
virtual void insertNamespace(NamespaceDef *nd)
Definition: filedef.cpp:1446
LayoutDocEntry::BriefDesc
@ BriefDesc
Definition: layout.h:38
OutputList::startInclDepGraph
void startInclDepGraph()
Definition: outputlist.h:374
FileDefImpl::m_path
QCString m_path
Definition: filedef.cpp:160
FileDefImpl::subGrouping
virtual bool subGrouping() const
Definition: filedef.cpp:93
FileDefImpl::getSourceDefinition
virtual Definition * getSourceDefinition(int lineNr) const
Definition: filedef.cpp:1489
MemberList::countDocMembers
void countDocMembers()
Definition: memberlist.cpp:225
DirEntry::path
QCString path() const
Definition: filedef.h:244
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
FileDefImpl::writeTagFile
virtual void writeTagFile(FTextStream &t)
Definition: filedef.cpp:347
FileDefImpl::finishParsing
virtual void finishParsing()
Definition: filedef.cpp:1313
QCString::prepend
QCString & prepend(const char *s)
Definition: qcstring.cpp:415
layout.h
LayoutDocEntry::ClassInheritanceGraph
@ ClassInheritanceGraph
Definition: layout.h:43
MemberGroup::countDecMembers
void countDecMembers()
Definition: membergroup.cpp:195
generateFileTree
void generateFileTree()
Definition: filedef.cpp:1936
FileDefImpl::distributeMemberGroupDocumentation
virtual void distributeMemberGroupDocumentation()
Definition: filedef.cpp:299
FileDefImpl::m_filePath
QCString m_filePath
Definition: filedef.cpp:161
Directory::reParent
void reParent(Directory *parent)
Definition: filedef.h:267
msg
void msg(const char *fmt,...)
Definition: message.cpp:107
DevNullCodeDocInterface::startCodeLine
virtual void startCodeLine(bool)
Definition: filedef.cpp:204
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
CodeParserInterface
Abstract interface for code parsers.
Definition: parserintf.h:101
DirEntry::setLast
void setLast(bool b)
Definition: filedef.h:241
FileDefImpl::getSourceFileBase
virtual QCString getSourceFileBase() const
Definition: filedef.cpp:2039
FileDefImpl::getAllIncludeFilesRecursively
virtual void getAllIncludeFilesRecursively(QStrList &incFiles) const
Definition: filedef.cpp:2189
FileDefImpl::absFilePath
virtual QCString absFilePath() const
Definition: filedef.cpp:67
MemberListType_decTypedefMembers
@ MemberListType_decTypedefMembers
Definition: types.h:151
MemberDef::getFileDef
virtual const FileDef * getFileDef() const =0
MemberDef::setSectionList
virtual void setSectionList(MemberList *sl)=0
QCString::copy
QCString copy() const
Returns a deep copy of the string.
Definition: qcstring.h:252
MemberType_Sequence
@ MemberType_Sequence
Definition: types.h:212
OutputList::writeSummaryLink
void writeSummaryLink(const char *file, const char *anchor, const char *title, bool first)
Definition: outputlist.h:342
qPrint
const char * qPrint(const char *s)
Definition: qcstring.h:800
SrcLangExt_IDL
@ SrcLangExt_IDL
Definition: types.h:45
IncludeInfo::local
bool local
Definition: filedef.h:51
MemberGroup::members
MemberList * members() const
Definition: membergroup.h:85
FileDefImpl::displayName
virtual QCString displayName(bool=TRUE) const
Definition: filedef.cpp:59
QTextStream
Implementation of QTextStream class.
Definition: qtextstream.h:54
LayoutDocEntry::ClassCollaborationGraph
@ ClassCollaborationGraph
Definition: layout.h:44
SourceLinkInfo
Definition: outputgen.h:49
FileDefImpl::m_srcDefDict
QIntDict< Definition > * m_srcDefDict
Definition: filedef.cpp:167
FileDefImpl::combineUsingRelations
virtual void combineUsingRelations()
Definition: filedef.cpp:1956
Config_getBool
#define Config_getBool(val)
Definition: config.h:35
DotInclDepGraph
Copyright (C) 1997-2019 by Dimitri van Heesch.
Definition: dotincldepgraph.h:26
IncludeInfo::fileDef
FileDef * fileDef
Definition: filedef.h:49
OutputList
Class representing a list of output generators that are written to in parallel.
Definition: outputlist.h:38
FileDefImpl::addIncludedUsingDirectives
virtual void addIncludedUsingDirectives()
Definition: filedef.cpp:1567
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
FileDefImpl::getMemberGroupSDict
virtual MemberGroupSDict * getMemberGroupSDict() const
Definition: filedef.cpp:87
groupdef.h
OutputList::enable
void enable(OutputGenerator::OutputType o)
Definition: outputlist.cpp:80
IncludeInfo::includeName
QCString includeName
Definition: filedef.h:50
ClassSDict::declVisible
bool declVisible(const ClassDef::CompoundType *filter=0) const
Definition: classlist.cpp:65
DefinitionImpl::hasDocumentation
virtual bool hasDocumentation() const
Definition: definition.cpp:1432
MemberType_Define
@ MemberType_Define
Definition: types.h:198
LayoutDocEntry::NamespaceClasses
@ NamespaceClasses
Definition: layout.h:49
FileDefImpl::startParsing
virtual void startParsing()
Definition: filedef.cpp:1309
DefinitionImpl::isLinkableViaGroup
virtual bool isLinkableViaGroup() const
Definition: definition.cpp:2085
MemberList::declVisible
bool declVisible() const
Definition: memberlist.cpp:366
LayoutDocEntryMemberDecl::title
QCString title(SrcLangExt lang) const
Definition: layout.cpp:1605
Definition::isReference
virtual bool isReference() const =0
DirEntry::isLast
bool isLast() const
Definition: filedef.h:240
DevNullCodeDocInterface::writeTooltip
virtual void writeTooltip(const char *, const DocLinkInfo &, const char *, const char *, const SourceLinkInfo &, const SourceLinkInfo &)
Definition: filedef.cpp:199
findMatchingPart
static int findMatchingPart(const QCString &path, const QCString dir)
Definition: filedef.cpp:1716
LayoutDocEntry::NamespaceInlineClasses
@ NamespaceInlineClasses
Definition: layout.h:50
MemberList::sort
void sort()
Definition: memberlist.cpp:272
ClangParser::switchToFile
void switchToFile(const char *fileName)
Switches to another file within the translation unit started with start().
Definition: clangparser.cpp:956
MemberDef::isEnumValue
virtual bool isEnumValue() const =0
Definition::name
virtual QCString name() const =0
FileDefImpl::m_package
PackageDef * m_package
Definition: filedef.cpp:171
FileDefImpl::writeSource
virtual void writeSource(OutputList &ol, bool sameTu, QStrList &filesInSameTu)
Definition: filedef.cpp:1156
FileDefImpl::addIncludeDependency
virtual void addIncludeDependency(FileDef *fd, const char *incName, bool local, bool imported, bool indirect)
Definition: filedef.cpp:1543
DocRoot
Root node of documentation tree.
Definition: docparser.h:1476
Config_getInt
#define Config_getInt(val)
Definition: config.h:36
OutputList::writeString
void writeString(const char *text)
Definition: outputlist.h:99
FileDefImpl::insertMember
virtual void insertMember(MemberDef *md)
Definition: filedef.cpp:1347
FileDefImpl::getVersion
virtual QCString getVersion() const
Definition: filedef.cpp:74
DefinitionImpl::localName
virtual QCString localName() const
Definition: definition.cpp:1572
FileDefImpl::m_subGrouping
bool m_subGrouping
Definition: filedef.cpp:180
portable.h
Portable versions of functions that are platform dependent.
endl
QTextStream & endl(QTextStream &s)
Definition: qtextstream.cpp:2030
NamespaceDef::combineUsingRelations
virtual void combineUsingRelations()=0
FileDefImpl::countMembers
virtual void countMembers()
Definition: filedef.cpp:2215
FileDefImpl::m_inclDepFileName
QCString m_inclDepFileName
Definition: filedef.cpp:162
QDict< IncludeInfo >
MemberList::writeTagFile
void writeTagFile(FTextStream &)
Definition: memberlist.cpp:1051
searchindex.h
endTitle
void endTitle(OutputList &ol, const char *fileName, const char *name)
Definition: index.cpp:266
FileDefImpl::getClassSDict
virtual ClassSDict * getClassSDict() const
Definition: filedef.cpp:89
OutputList::lineBreak
void lineBreak(const char *style=0)
Definition: outputlist.h:283
LayoutDocEntry::DetailedDesc
@ DetailedDesc
Definition: layout.h:38
OutputList::startCodeFragment
void startCodeFragment()
Definition: outputlist.h:224
OutputList::isEnabled
bool isEnabled(OutputGenerator::OutputType o)
Definition: outputlist.cpp:88
OutputList::startGroupHeader
void startGroupHeader(int extraLevels=0)
Definition: outputlist.h:156
MemberList::numDecMembers
int numDecMembers() const
Definition: memberlist.h:63
OutputList::endQuickIndices
void endQuickIndices()
Definition: outputlist.h:332
DefinitionImpl::briefDescription
virtual QCString briefDescription(bool abbreviate=FALSE) const
Definition: definition.cpp:1957
DefinitionImpl::getStartBodyLine
virtual int getStartBodyLine() const
Definition: definition.cpp:2065
FileDefImpl::getDirDef
virtual DirDef * getDirDef() const
Definition: filedef.cpp:79
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
FileDefImpl::writeClassesToTagFile
void writeClassesToTagFile(FTextStream &t, ClassSDict *d)
Definition: filedef.cpp:576
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::writeSynopsis
void writeSynopsis()
Definition: outputlist.h:320
FileDefImpl::getPath
virtual QCString getPath() const
Definition: filedef.cpp:73
MemberList::setNeedsSorting
void setNeedsSorting(bool b)
Definition: memberlist.cpp:988
LayoutDocEntry::FileIncludeGraph
@ FileIncludeGraph
Definition: layout.h:54
FileDefImpl::isVisited
virtual bool isVisited() const
Definition: filedef.cpp:127
MemberList::findSectionsInDocumentation
void findSectionsInDocumentation(const Definition *d)
Definition: memberlist.cpp:969
FileDefImpl::writeQuickMemberLinks
virtual void writeQuickMemberLinks(OutputList &ol, const MemberDef *currentMd) const
Definition: filedef.cpp:1112
mergeFileDef
static void mergeFileDef(Directory *root, FileDef *fd)
Definition: filedef.cpp:1814
Definition::qualifiedName
virtual QCString qualifiedName() const =0
FileDefImpl::includeName
virtual QCString includeName() const
Definition: filedef.cpp:2057
FileDefImpl::m_isSource
bool m_isSource
Definition: filedef.cpp:169
DirEntry::Dir
@ Dir
Definition: filedef.h:230
FileDefImpl::parseSource
virtual void parseSource(bool sameTu, QStrList &filesInSameTu)
Definition: filedef.cpp:1274
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
Debug::ExtCmd
@ ExtCmd
Definition: debug.h:37
FileDefImpl::isLinkableInProject
virtual bool isLinkableInProject() const
Definition: filedef.cpp:2162
FileDefImpl
Copyright (C) 1997-2015 by Dimitri van Heesch.
Definition: filedef.cpp:52
getAllIncludeFilesRecursively
static void getAllIncludeFilesRecursively(QDict< void > *filesVisited, const FileDef *fd, QStrList &incFiles)
Definition: filedef.cpp:2168
Doxygen::suppressDocWarnings
static bool suppressDocWarnings
Definition: doxygen.h:131
FileDefImpl::writeBriefDescription
void writeBriefDescription(OutputList &ol)
Definition: filedef.cpp:539
LayoutDocEntry::NamespaceInterfaces
@ NamespaceInterfaces
Definition: layout.h:49
DefinitionImpl::setLanguage
virtual void setLanguage(SrcLangExt lang)
Definition: definition.cpp:2140
MemberListType_docTypedefMembers
@ MemberListType_docTypedefMembers
Definition: types.h:166
QCString::fill
bool fill(char c, int len=-1)
Fills a string with a predefined character.
Definition: qcstring.h:245
setAnchors
void setAnchors(MemberList *ml)
Definition: util.cpp:2336
MemberDef::memberType
virtual MemberType memberType() const =0
LayoutDocEntry
Base class representing a piece of a documentation page.
Definition: layout.h:31
MemberList
A list of MemberDef objects.
Definition: memberlist.h:32
Translator::trSourceFile
virtual QCString trSourceFile(QCString &filename)=0
SearchIndexIntf::addWord
virtual void addWord(const char *word, bool hiPriority)=0
vhdldocgen.h
DirEntry
Class representing an entry (file or sub directory) in a directory.
Definition: filedef.h:228
DevNullCodeDocInterface::startFontClass
virtual void startFontClass(const char *)
Definition: filedef.cpp:206
Directory::addChild
void addChild(DirEntry *d)
Definition: filedef.h:264
ClassSDict::writeDocumentation
void writeDocumentation(OutputList &ol, const Definition *container=0) const
Definition: classlist.cpp:120
LayoutDocEntry::FileNamespaces
@ FileNamespaces
Definition: layout.h:53
fileToString
QCString fileToString(const char *name, bool filter, bool isSourceCode)
Definition: util.cpp:2506
FileDef::absFilePath
virtual QCString absFilePath() const =0
MemberDef::isLinkableInProject
virtual bool isLinkableInProject() const =0
FileDefImpl::startMemberDeclarations
void startMemberDeclarations(OutputList &ol)
Definition: filedef.cpp:751
FileDefImpl::m_fileVersion
QCString m_fileVersion
Definition: filedef.cpp:170