Doxygen
filedef.cpp
浏览该文件的文档.
1 /******************************************************************************
2  *
3  *
4  *
5  * Copyright (C) 1997-2015 by Dimitri van Heesch.
6  *
7  * Permission to use, copy, modify, and distribute this software and its
8  * documentation under the terms of the GNU General Public License is hereby
9  * granted. No representations are made about the suitability of this software
10  * for any purpose. It is provided "as is" without express or implied warranty.
11  * See the GNU General Public License for more details.
12  *
13  * Documents produced by Doxygen are derivative works derived from the
14  * input used in their production; they are not affected by this license.
15  *
16  */
17 
18 #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 #include "conceptdef.h"
49 
50 //---------------------------------------------------------------------------
51 
52 using DefinitionLineMap = std::unordered_map<int,const Definition *>;
53 using MemberDefLineMap = std::unordered_map<int,const MemberDef *>;
54 using IncludeInfoMap = std::unordered_map<std::string, const IncludeInfo *>;
55 
56 class FileDefImpl : public DefinitionMixin<FileDef>
57 {
58  public:
59  FileDefImpl(const QCString &p,const QCString &n,const QCString &ref=QCString(),const QCString &dn=QCString());
60  virtual ~FileDefImpl();
61 
62  virtual DefType definitionType() const { return TypeFile; }
64  virtual QCString name() const;
65 
66  virtual QCString displayName(bool=TRUE) const { return name(); }
67  virtual QCString fileName() const { return m_fileName; }
68  virtual QCString getOutputFileBase() const;
69  virtual QCString anchor() const { return QCString(); }
70  virtual QCString getSourceFileBase() const;
71  virtual QCString includeName() const;
74  virtual QCString absFilePath() const { return m_filePath; }
75  virtual const QCString &docName() const { return m_docname; }
76  virtual bool isSource() const { return m_isSource; }
77  virtual bool isDocumentationFile() const;
78  virtual const Definition *getSourceDefinition(int lineNr) const;
79  virtual const MemberDef *getSourceMember(int lineNr) const;
80  virtual QCString getPath() const { return m_path; }
81  virtual QCString getVersion() const { return m_fileVersion; }
82  virtual bool isLinkableInProject() const;
83  virtual bool isLinkable() const { return isLinkableInProject() || isReference(); }
84  virtual bool isIncluded(const QCString &name) const;
85  virtual PackageDef *packageDef() const { return m_package; }
86  virtual DirDef *getDirDef() const { return m_dir; }
89  virtual const IncludeInfoList &includeFileList() const { return m_includeList; }
90  virtual const IncludeInfoList &includedByFileList() const { return m_includedByList; }
91  virtual void getAllIncludeFilesRecursively(StringVector &incFiles) const;
92  virtual MemberList *getMemberList(MemberListType lt) const;
93  virtual const MemberLists &getMemberLists() const { return m_memberLists; }
94  virtual const MemberGroupList &getMemberGroups() const { return m_memberGroups; }
95  virtual const NamespaceLinkedRefMap &getNamespaces() const { return m_namespaces; }
96  virtual const ConceptLinkedRefMap &getConcepts() const { return m_concepts; }
97  virtual const ClassLinkedRefMap &getClasses() const { return m_classes; }
98  virtual QCString title() const;
99  virtual bool hasDetailedDescription() const;
100  virtual QCString fileVersion() const;
101  virtual bool subGrouping() const { return m_subGrouping; }
102  virtual void countMembers();
103  virtual int numDocMembers() const;
104  virtual int numDecMembers() const;
105  virtual void addSourceRef(int line,const Definition *d,const MemberDef *md);
106  virtual void writeDocumentation(OutputList &ol);
107  virtual void writeMemberPages(OutputList &ol);
108  virtual void writeQuickMemberLinks(OutputList &ol,const MemberDef *currentMd) const;
109  virtual void writeSummaryLinks(OutputList &ol) const;
110  virtual void writeTagFile(TextStream &t);
111  virtual void writeSourceHeader(OutputList &ol);
112  virtual void writeSourceBody(OutputList &ol,ClangTUParser *clangParser);
113  virtual void writeSourceFooter(OutputList &ol);
114  virtual void parseSource(ClangTUParser *clangParser);
115  virtual void setDiskName(const QCString &name);
116  virtual void insertMember(MemberDef *md);
117  virtual void insertClass(const ClassDef *cd);
118  virtual void insertConcept(const ConceptDef *cd);
119  virtual void insertNamespace(const NamespaceDef *nd);
120  virtual void computeAnchors();
121  virtual void setPackageDef(PackageDef *pd) { m_package=pd; }
122  virtual void setDirDef(DirDef *dd) { m_dir=dd; }
123  virtual void addUsingDirective(const NamespaceDef *nd);
124  virtual void addUsingDeclaration(const ClassDef *cd);
125  virtual void combineUsingRelations();
126  virtual bool generateSourceFile() const;
127  virtual void sortMemberLists();
128  virtual void addIncludeDependency(const FileDef *fd,const QCString &incName,bool local,bool imported);
129  virtual void addIncludedByDependency(const FileDef *fd,const QCString &incName,bool local,bool imported);
130  virtual void addMembersToMemberGroup();
131  virtual void distributeMemberGroupDocumentation();
132  virtual void findSectionsInDocumentation();
133  virtual void addIncludedUsingDirectives(FileDefSet &visitedFiles);
134  virtual void addListReferences();
135 
136  private:
137  void acquireFileVersion();
141  void writeIncludeFiles(OutputList &ol);
142  void writeIncludeGraph(OutputList &ol);
144  void writeMemberGroups(OutputList &ol);
145  void writeAuthorSection(OutputList &ol);
146  void writeSourceLink(OutputList &ol);
148  bool isConstantGroup);
150  void writeConcepts(OutputList &ol,const QCString &title);
151  void writeInlineClasses(OutputList &ol);
159 
177  PackageDef *m_package;
188 };
189 
190 FileDef *createFileDef(const QCString &p,const QCString &n,const QCString &ref,const QCString &dn)
191 {
192  return new FileDefImpl(p,n,ref,dn);
193 }
194 
195 
196 //---------------------------------------------------------------------------
197 
198 /** Class implementing CodeOutputInterface by throwing away everything. */
200 {
201  public:
202  virtual void codify(const QCString &) override {}
204  const QCString &,const QCString &,
205  const QCString &,const QCString &,
206  const QCString &) override {}
207  virtual void writeTooltip(const QCString &, const DocLinkInfo &, const QCString &,
208  const QCString &, const SourceLinkInfo &, const SourceLinkInfo &
209  ) override {}
210  virtual void writeLineNumber(const QCString &,const QCString &,
211  const QCString &,int,bool) override {}
212  virtual void startCodeLine(bool) override {}
213  virtual void endCodeLine() override {}
214  virtual void startFontClass(const QCString &) override {}
215  virtual void endFontClass() override {}
216  virtual void writeCodeAnchor(const QCString &) override {}
217  virtual void setCurrentDoc(const Definition *,const QCString &,bool) override {}
218  virtual void addWord(const QCString &,bool) override {}
219  virtual void startCodeFragment(const QCString &) override {}
220  virtual void endCodeFragment(const QCString &) override {}
221 };
222 
223 //---------------------------------------------------------------------------
224 
225 /*! create a new file definition, where \a p is the file path,
226  \a nm the file name, and \a lref is an HTML anchor name if the
227  file was read from a tag file or 0 otherwise
228 */
230  const QCString &lref,const QCString &dn)
231  : DefinitionMixin((QCString)p+nm,1,1,nm)
232 {
233  m_path=p;
234  m_filePath=m_path+nm;
235  m_fileName=nm;
236  setReference(lref);
237  setDiskName(!dn.isEmpty() ? dn : nm);
238  m_package = 0;
240  m_docname = nm;
241  m_dir = 0;
242  if (Config_getBool(FULL_PATH_NAMES))
243  {
245  }
248  m_subGrouping=Config_getBool(SUBGROUPING);
249 }
250 
251 /*! destroy the file definition */
253 {
254 }
255 
257 {
258  if (isReference())
259  {
261  m_inclDepFileName = name+"_incl";
262  m_inclByDepFileName = name+"_dep_incl";
263  }
264  else
265  {
269  }
270 }
271 
272 /*! Compute the HTML anchor names for all members in the class */
274 {
276  if (ml) ml->setAnchors();
277 }
278 
280 {
281  //printf("FileDefImpl::distributeMemberGroupDocumentation()\n");
282  for (const auto &mg : m_memberGroups)
283  {
284  mg->distributeMemberGroupDocumentation();
285  }
286 }
287 
289 {
292  for (const auto &mg : m_memberGroups)
293  {
294  mg->findSectionsInDocumentation(this);
295  }
296 
297  for (auto &ml : m_memberLists)
298  {
299  if (ml->listType()&MemberListType_declarationLists)
300  {
301  ml->findSectionsInDocumentation(this);
302  }
303  }
304 }
305 
307 {
308  static bool repeatBrief = Config_getBool(REPEAT_BRIEF);
309  static bool sourceBrowser = Config_getBool(SOURCE_BROWSER);
310  return ((!briefDescription().isEmpty() && repeatBrief) ||
311  !documentation().stripWhiteSpace().isEmpty() || // avail empty section
312  (sourceBrowser && getStartBodyLine()!=-1 && getBodyDef())
313  );
314 }
315 
317 {
318  tagFile << " <compound kind=\"file\">\n";
319  tagFile << " <name>" << convertToXML(name()) << "</name>\n";
320  tagFile << " <path>" << convertToXML(getPath()) << "</path>\n";
321  tagFile << " <filename>" << addHtmlExtensionIfMissing(getOutputFileBase()) << "</filename>\n";
322  for (const auto &ii : m_includeList)
323  {
324  const FileDef *fd=ii.fileDef;
325  if (fd && fd->isLinkable() && !fd->isReference())
326  {
327  bool isIDLorJava = FALSE;
328  SrcLangExt lang = fd->getLanguage();
329  isIDLorJava = lang==SrcLangExt_IDL || lang==SrcLangExt_Java;
330  const char *locStr = (ii.local || isIDLorJava) ? "yes" : "no";
331  const char *impStr = (ii.imported || isIDLorJava) ? "yes" : "no";
332  tagFile << " <includes id=\""
333  << convertToXML(fd->getOutputFileBase()) << "\" "
334  << "name=\"" << convertToXML(fd->name()) << "\" "
335  << "local=\"" << locStr << "\" "
336  << "imported=\"" << impStr << "\">"
337  << convertToXML(ii.includeName)
338  << "</includes>\n";
339  }
340  }
341  for (const auto &lde : LayoutDocManager::instance().docEntries(LayoutDocManager::File))
342  {
343  switch (lde->kind())
344  {
346  {
348  }
349  break;
351  {
353  }
354  break;
356  {
358  }
359  break;
361  {
363  }
364  break;
366  {
367  for (const auto *nd : m_concepts)
368  {
369  if (nd->isLinkableInProject())
370  {
371  tagFile << " <concept>" << convertToXML(nd->name()) << "</concept>\n";
372  }
373  }
374  }
375  break;
377  {
378  for (const auto *nd : m_namespaces)
379  {
380  if (nd->isLinkableInProject())
381  {
382  tagFile << " <namespace>" << convertToXML(nd->name()) << "</namespace>\n";
383  }
384  }
385  }
386  break;
388  {
389  const LayoutDocEntryMemberDecl *lmd = (const LayoutDocEntryMemberDecl*)lde.get();
390  MemberList * ml = getMemberList(lmd->type);
391  if (ml)
392  {
393  ml->writeTagFile(tagFile);
394  }
395  }
396  break;
398  {
399  for (const auto &mg : m_memberGroups)
400  {
401  mg->writeTagFile(tagFile);
402  }
403  }
404  break;
405  default:
406  break;
407  }
408  }
409 
410  writeDocAnchorsToTagFile(tagFile);
411  tagFile << " </compound>\n";
412 }
413 
415 {
417  {
418  ol.pushGeneratorState();
420  ol.writeRuler();
421  ol.popGeneratorState();
422  ol.pushGeneratorState();
424  ol.writeAnchor(QCString(),"details");
425  ol.popGeneratorState();
426  ol.startGroupHeader();
427  ol.parseText(title);
428  ol.endGroupHeader();
429 
430  ol.startTextBlock();
431  if (!briefDescription().isEmpty() && Config_getBool(REPEAT_BRIEF))
432  {
434  QCString(),FALSE,FALSE,Config_getBool(MARKDOWN_SUPPORT));
435  }
436  if (!briefDescription().isEmpty() && Config_getBool(REPEAT_BRIEF) &&
437  !documentation().isEmpty())
438  {
439  ol.pushGeneratorState();
442  // ol.newParagraph(); // FIXME:PARA
443  ol.enableAll();
446  ol.writeString("\n\n");
447  ol.popGeneratorState();
448  }
449  if (!documentation().isEmpty())
450  {
451  ol.generateDoc(docFile(),docLine(),this,0,documentation()+"\n",TRUE,FALSE,
452  QCString(),FALSE,FALSE,Config_getBool(MARKDOWN_SUPPORT));
453  }
454  //printf("Writing source ref for file %s\n",qPrint(name()));
455  if (Config_getBool(SOURCE_BROWSER))
456  {
457  ol.startParagraph("definition");
459  int fileMarkerPos = refText.find("@0");
460  if (fileMarkerPos!=-1) // should always pass this.
461  {
462  ol.parseText(refText.left(fileMarkerPos)); //text left from marker 1
464  ol.parseText(refText.right(
465  refText.length()-fileMarkerPos-2)); // text right from marker 2
466  }
467  else
468  {
469  err("translation error: invalid marker in trDefinedInSourceFile()\n");
470  }
471  ol.endParagraph();
472  }
473  ol.endTextBlock();
474  }
475 }
476 
478 {
479  if (hasBriefDescription())
480  {
481  std::unique_ptr<IDocParser> parser { createDocParser() };
482  std::unique_ptr<DocRoot> rootNode { validatingParseDoc(*parser.get(),
483  briefFile(),briefLine(),this,0,
485  QCString(),TRUE,FALSE,Config_getBool(MARKDOWN_SUPPORT)) };
486 
487  if (rootNode && !rootNode->isEmpty())
488  {
489  ol.startParagraph();
490  ol.pushGeneratorState();
492  ol.writeString(" - ");
493  ol.popGeneratorState();
494  ol.writeDoc(rootNode.get(),this,0);
495  ol.pushGeneratorState();
497  ol.writeString(" \n");
499 
500  if (Config_getBool(REPEAT_BRIEF) ||
501  !documentation().isEmpty()
502  )
503  {
505  ol.startTextLink(QCString(),"details");
507  ol.endTextLink();
508  }
509  ol.popGeneratorState();
510  ol.endParagraph();
511  }
512  }
513  ol.writeSynopsis();
514 }
515 
517 {
518  for (const auto &cd : list)
519  {
520  if (cd->isLinkableInProject())
521  {
522  tagFile << " <class kind=\"" << cd->compoundTypeString() <<
523  "\">" << convertToXML(cd->name()) << "</class>\n";
524  }
525  }
526 }
527 
529 {
530  if (!m_includeList.empty())
531  {
532  ol.startTextBlock(TRUE);
533  for (const auto &ii : m_includeList)
534  {
535  const FileDef *fd=ii.fileDef;
536  bool isIDLorJava = FALSE;
537  if (fd)
538  {
539  SrcLangExt lang = fd->getLanguage();
540  isIDLorJava = lang==SrcLangExt_IDL || lang==SrcLangExt_Java;
541  }
542  ol.startTypewriter();
543  if (isIDLorJava) // IDL/Java include
544  {
545  ol.docify("import ");
546  }
547  else if (ii.imported) // Objective-C include
548  {
549  ol.docify("#import ");
550  }
551  else // C/C++ include
552  {
553  ol.docify("#include ");
554  }
555  if (ii.local || isIDLorJava)
556  ol.docify("\"");
557  else
558  ol.docify("<");
560  ol.docify(ii.includeName);
561  ol.enableAll();
563 
564  // Here we use the include file name as it appears in the file.
565  // we could also we the name as it is used within doxygen,
566  // then we should have used fd->docName() instead of ii->includeName
567  if (fd && fd->isLinkable())
568  {
569  ol.writeObjectLink(fd->getReference(),
570  fd->generateSourceFile() ? fd->includeName() : fd->getOutputFileBase(),
571  QCString(),ii.includeName);
572  }
573  else
574  {
575  ol.docify(ii.includeName);
576  }
577 
578  ol.enableAll();
579  if (ii.local || isIDLorJava)
580  ol.docify("\"");
581  else
582  ol.docify(">");
583  if (isIDLorJava)
584  ol.docify(";");
585  ol.endTypewriter();
586  ol.lineBreak();
587  }
588  ol.endTextBlock();
589  }
590 }
591 
593 {
594  if (Config_getBool(HAVE_DOT) /*&& Config_getBool(INCLUDE_GRAPH)*/)
595  {
596  //printf("Graph for file %s\n",qPrint(name()));
597  DotInclDepGraph incDepGraph(this,FALSE);
598  if (incDepGraph.isTooBig())
599  {
600  warn_uncond("Include graph for '%s' not generated, too many nodes (%d), threshold is %d. Consider increasing DOT_GRAPH_MAX_NODES.\n",
601  qPrint(name()), incDepGraph.numNodes(), Config_getInt(DOT_GRAPH_MAX_NODES));
602  }
603  else if (!incDepGraph.isTrivial())
604  {
605  ol.startTextBlock();
607  ol.startInclDepGraph();
609  ol.endInclDepGraph(incDepGraph);
610  ol.enableAll();
611  ol.endTextBlock(TRUE);
612  }
613  //incDepGraph.writeGraph(Config_getString(HTML_OUTPUT),fd->getOutputFileBase());
614  }
615 }
616 
618 {
619  if (Config_getBool(HAVE_DOT) /*&& Config_getBool(INCLUDED_BY_GRAPH)*/)
620  {
621  //printf("Graph for file %s\n",qPrint(name()));
622  DotInclDepGraph incDepGraph(this,TRUE);
623  if (incDepGraph.isTooBig())
624  {
625  warn_uncond("Included by graph for '%s' not generated, too many nodes (%d), threshold is %d. Consider increasing DOT_GRAPH_MAX_NODES.\n",
626  qPrint(name()), incDepGraph.numNodes(), Config_getInt(DOT_GRAPH_MAX_NODES));
627  }
628  else if (!incDepGraph.isTrivial())
629  {
630  ol.startTextBlock();
632  ol.startInclDepGraph();
634  ol.endInclDepGraph(incDepGraph);
635  ol.enableAll();
636  ol.endTextBlock(TRUE);
637  }
638  //incDepGraph.writeGraph(Config_getString(HTML_OUTPUT),fd->getOutputFileBase());
639  }
640 }
641 
642 
644 {
645  //printf("%s: generateSourceFile()=%d\n",qPrint(name()),generateSourceFile());
646  if (generateSourceFile())
647  {
649  ol.startParagraph();
652  ol.endTextLink();
653  ol.endParagraph();
654  ol.enableAll();
655  }
656 }
657 
659  bool const isConstantGroup)
660 {
661  // write list of namespaces
662  m_namespaces.writeDeclaration(ol,title,isConstantGroup);
663 }
664 
666 {
667  // write list of classes
668  list.writeDeclaration(ol,0,title,FALSE);
669 }
670 
672 {
673  // write list of classes
675 }
676 
678 {
679  // temporarily undo the disabling could be done by startMemberDocumentation()
680  // as a result of setting SEPARATE_MEMBER_PAGES to YES; see bug730512
681  bool isEnabled = ol.isEnabled(OutputGenerator::Html);
683 
684  m_classes.writeDocumentation(ol,this);
685 
686  // restore the initial state if needed
687  if (!isEnabled) ol.disable(OutputGenerator::Html);
688 }
689 
691 {
692  ol.startMemberSections();
693 }
694 
696 {
697  ol.endMemberSections();
698 }
699 
701 {
702  if (Config_getBool(SEPARATE_MEMBER_PAGES))
703  {
706  }
707 }
708 
710 {
711  if (Config_getBool(SEPARATE_MEMBER_PAGES))
712  {
715  }
716 }
717 
719 {
720  /* write user defined member groups */
721  for (const auto &mg : m_memberGroups)
722  {
723  if ((!mg->allMembersInSameSection() || !m_subGrouping)
724  && mg->header()!="[NOHEADER]")
725  {
726  mg->writeDeclarations(ol,0,0,this,0);
727  }
728  }
729 }
730 
732 {
733  // write Author section (Man only)
734  ol.pushGeneratorState();
736  ol.startGroupHeader();
738  ol.endGroupHeader();
740  ol.popGeneratorState();
741 }
742 
744 {
745  ol.pushGeneratorState();
747  bool first=TRUE;
748  SrcLangExt lang=getLanguage();
749  for (const auto &lde : LayoutDocManager::instance().docEntries(LayoutDocManager::File))
750  {
751  if (lde->kind()==LayoutDocEntry::FileClasses && m_classes.declVisible())
752  {
753  const LayoutDocEntrySection *ls = (const LayoutDocEntrySection*)lde.get();
754  QCString label = "nested-classes";
755  ol.writeSummaryLink(QCString(),label,ls->title(lang),first);
756  first=FALSE;
757  }
758  else if (lde->kind()==LayoutDocEntry::FileInterfaces && m_interfaces.declVisible())
759  {
760  const LayoutDocEntrySection *ls = (const LayoutDocEntrySection*)lde.get();
761  QCString label = "interfaces";
762  ol.writeSummaryLink(QCString(),label,ls->title(lang),first);
763  first=FALSE;
764  }
765  else if (lde->kind()==LayoutDocEntry::FileStructs && m_structs.declVisible())
766  {
767  const LayoutDocEntrySection *ls = (const LayoutDocEntrySection*)lde.get();
768  QCString label = "structs";
769  ol.writeSummaryLink(QCString(),label,ls->title(lang),first);
770  first=FALSE;
771  }
772  else if (lde->kind()==LayoutDocEntry::FileExceptions && m_exceptions.declVisible())
773  {
774  const LayoutDocEntrySection *ls = (const LayoutDocEntrySection*)lde.get();
775  QCString label = "exceptions";
776  ol.writeSummaryLink(QCString(),label,ls->title(lang),first);
777  first=FALSE;
778  }
779  else if (lde->kind()==LayoutDocEntry::FileNamespaces && m_namespaces.declVisible(false))
780  {
781  const LayoutDocEntrySection *ls = (const LayoutDocEntrySection*)lde.get();
782  QCString label = "namespaces";
783  ol.writeSummaryLink(QCString(),label,ls->title(lang),first);
784  first=FALSE;
785  }
786  else if (lde->kind()==LayoutDocEntry::FileConcepts && m_concepts.declVisible())
787  {
788  const LayoutDocEntrySection *ls = (const LayoutDocEntrySection*)lde.get();
789  QCString label = "concepts";
790  ol.writeSummaryLink(QCString(),label,ls->title(lang),first);
791  first=FALSE;
792  }
793  else if (lde->kind()==LayoutDocEntry::MemberDecl)
794  {
795  const LayoutDocEntryMemberDecl *lmd = (const LayoutDocEntryMemberDecl*)lde.get();
796  MemberList * ml = getMemberList(lmd->type);
797  if (ml && ml->declVisible())
798  {
800  first=FALSE;
801  }
802  }
803  }
804  if (!first)
805  {
806  ol.writeString(" </div>\n");
807  }
808  ol.popGeneratorState();
809 }
810 
811 /*! Write the documentation page for this file to the file of output
812  generators \a ol.
813 */
815 {
816  static bool generateTreeView = Config_getBool(GENERATE_TREEVIEW);
817  //funcList->countDecMembers();
818 
819  //QCString fn = name();
820  //if (Config_getBool(FULL_PATH_NAMES))
821  //{
822  // fn.prepend(stripFromPath(getPath()));
823  //}
824 
825  //printf("WriteDocumentation diskname=%s\n",qPrint(diskname));
826 
827  QCString versionTitle;
828  if (!m_fileVersion.isEmpty())
829  {
830  versionTitle=("("+m_fileVersion+")");
831  }
832  QCString title = m_docname+versionTitle;
834 
835  if (getDirDef())
836  {
837  startFile(ol,getOutputFileBase(),name(),pageTitle,HLI_FileVisible,!generateTreeView);
838  if (!generateTreeView)
839  {
841  ol.endQuickIndices();
842  }
843  QCString pageTitleShort=theTranslator->trFileReference(name());
844  startTitle(ol,getOutputFileBase(),this);
845  ol.pushGeneratorState();
847  ol.parseText(pageTitleShort); // Html only
848  ol.enableAll();
850  ol.parseText(pageTitle); // other output formats
851  ol.popGeneratorState();
852  addGroupListToTitle(ol,this);
854  }
855  else
856  {
857  startFile(ol,getOutputFileBase(),name(),pageTitle,HLI_FileVisible,!generateTreeView);
858  if (!generateTreeView)
859  {
860  ol.endQuickIndices();
861  }
862  startTitle(ol,getOutputFileBase(),this);
863  ol.parseText(pageTitle);
864  addGroupListToTitle(ol,this);
866  }
867 
868  ol.startContents();
869 
870  if (!m_fileVersion.isEmpty())
871  {
873  ol.startProjectNumber();
874  ol.docify(versionTitle);
875  ol.endProjectNumber();
876  ol.enableAll();
877  }
878 
879  //---------------------------------------- start flexible part -------------------------------
880 
881  SrcLangExt lang = getLanguage();
882  for (const auto &lde : LayoutDocManager::instance().docEntries(LayoutDocManager::File))
883  {
884  switch (lde->kind())
885  {
888  break;
891  break;
893  writeIncludeFiles(ol);
894  break;
896  writeIncludeGraph(ol);
897  break;
900  break;
902  writeSourceLink(ol);
903  break;
905  {
906  const LayoutDocEntrySection *ls = (const LayoutDocEntrySection*)lde.get();
907  writeClassDeclarations(ol,ls->title(lang),m_classes);
908  }
909  break;
911  {
912  const LayoutDocEntrySection *ls = (const LayoutDocEntrySection*)lde.get();
914  }
915  break;
917  {
918  const LayoutDocEntrySection *ls = (const LayoutDocEntrySection*)lde.get();
919  writeClassDeclarations(ol,ls->title(lang),m_structs);
920  }
921  break;
923  {
924  const LayoutDocEntrySection *ls = (const LayoutDocEntrySection*)lde.get();
926  }
927  break;
929  {
930  const LayoutDocEntrySection *ls = (const LayoutDocEntrySection*)lde.get();
931  writeConcepts(ol,ls->title(lang));
932  }
933  break;
935  {
936  const LayoutDocEntrySection *ls = (const LayoutDocEntrySection*)lde.get();
937  writeNamespaceDeclarations(ol,ls->title(lang),false);
938  }
939  break;
941  {
942  const LayoutDocEntrySection *ls = (const LayoutDocEntrySection*)lde.get();
943  writeNamespaceDeclarations(ol,ls->title(lang),true);
944  }
945  break;
947  writeMemberGroups(ol);
948  break;
950  {
951  const LayoutDocEntryMemberDecl *lmd = (const LayoutDocEntryMemberDecl*)lde.get();
952  writeMemberDeclarations(ol,lmd->type,lmd->title(lang));
953  }
954  break;
957  break;
959  {
960  const LayoutDocEntrySection *ls = (const LayoutDocEntrySection*)lde.get();
961  writeDetailedDescription(ol,ls->title(lang));
962  }
963  break;
966  break;
968  writeInlineClasses(ol);
969  break;
971  {
972  const LayoutDocEntryMemberDef *lmd = (const LayoutDocEntryMemberDef*)lde.get();
973  writeMemberDocumentation(ol,lmd->type,lmd->title(lang));
974  }
975  break;
978  break;
980  writeAuthorSection(ol);
981  break;
1010  err("Internal inconsistency: member %d should not be part of "
1011  "LayoutDocManager::File entry list\n",lde->kind());
1012  break;
1013  }
1014  }
1015 
1016  //---------------------------------------- end flexible part -------------------------------
1017 
1018  ol.endContents();
1019 
1020  endFileWithNavPath(this,ol);
1021 
1022  if (Config_getBool(SEPARATE_MEMBER_PAGES))
1023  {
1025  if (ml) ml->sort();
1026  writeMemberPages(ol);
1027  }
1028 }
1029 
1031 {
1032  ol.pushGeneratorState();
1034 
1035  for (const auto &ml : m_memberLists)
1036  {
1037  if (ml->listType()&MemberListType_documentationLists)
1038  {
1039  ml->writeDocumentationPage(ol,name(),this);
1040  }
1041  }
1042 
1043  ol.popGeneratorState();
1044 }
1045 
1047 {
1048  static bool createSubDirs=Config_getBool(CREATE_SUBDIRS);
1049 
1050  ol.writeString(" <div class=\"navtab\">\n");
1051  ol.writeString(" <table>\n");
1052 
1054  if (allMemberList)
1055  {
1056  for (const auto &md : *allMemberList)
1057  {
1058  if (md->getFileDef()==this && md->getNamespaceDef()==0 && md->isLinkable() && !md->isEnumValue())
1059  {
1060  if (md->isLinkableInProject())
1061  {
1062  if (md==currentMd) // selected item => highlight
1063  {
1064  ol.writeString(" <tr><td class=\"navtabHL\">");
1065  }
1066  else
1067  {
1068  ol.writeString(" <tr><td class=\"navtab\">");
1069  }
1070  ol.writeString("<a class=\"navtab\" ");
1071  ol.writeString("href=\"");
1072  if (createSubDirs) ol.writeString("../../");
1073  ol.writeString(addHtmlExtensionIfMissing(md->getOutputFileBase())+"#"+md->anchor());
1074  ol.writeString("\">");
1075  ol.writeString(convertToHtml(md->localName()));
1076  ol.writeString("</a>");
1077  ol.writeString("</td></tr>\n");
1078  }
1079  }
1080  }
1081  }
1082 
1083  ol.writeString(" </table>\n");
1084  ol.writeString(" </div>\n");
1085 }
1086 
1087 /*! Write a source listing of this file to the output */
1089 {
1090  bool generateTreeView = Config_getBool(GENERATE_TREEVIEW);
1092  if (!m_fileVersion.isEmpty())
1093  {
1094  title+=(" ("+m_fileVersion+")");
1095  }
1096  QCString pageTitle = theTranslator->trSourceFile(title);
1098 
1099  bool isDocFile = isDocumentationFile();
1100  bool genSourceFile = !isDocFile && generateSourceFile();
1101  if (getDirDef())
1102  {
1104  !generateTreeView,
1105  !isDocFile && genSourceFile ? QCString() : getOutputFileBase());
1106  if (!generateTreeView)
1107  {
1109  ol.endQuickIndices();
1110  }
1112  ol.parseText(name());
1114  }
1115  else
1116  {
1118  !isDocFile && genSourceFile ? QCString() : getOutputFileBase());
1120  ol.parseText(title);
1122  }
1123 
1124  ol.startContents();
1125 
1126  if (isLinkable())
1127  {
1130  ol.endTextLink();
1131  }
1132 }
1133 
1135 {
1136  bool filterSourceFiles = Config_getBool(FILTER_SOURCE_FILES);
1137  DevNullCodeDocInterface devNullIntf;
1138 #if USE_LIBCLANG
1139  if (Doxygen::clangAssistedParsing && clangParser &&
1141  {
1142  ol.startCodeFragment("DoxyCode");
1143  clangParser->switchToFile(this);
1144  clangParser->writeSources(ol,this);
1145  ol.endCodeFragment("DoxyCode");
1146  }
1147  else
1148 #endif
1149  {
1151  intf->resetCodeParserState();
1152  ol.startCodeFragment("DoxyCode");
1153  bool needs2PassParsing =
1154  Doxygen::parseSourcesNeeded && // we need to parse (filtered) sources for cross-references
1155  !filterSourceFiles && // but user wants to show sources as-is
1156  !getFileFilter(absFilePath(),TRUE).isEmpty(); // and there is a filter used while parsing
1157 
1158  if (needs2PassParsing)
1159  {
1160  // parse code for cross-references only (see bug707641)
1161  intf->parseCode(devNullIntf,QCString(),
1163  getLanguage(),
1164  FALSE,QCString(),this
1165  );
1166  }
1167  intf->parseCode(ol,QCString(),
1168  fileToString(absFilePath(),filterSourceFiles,TRUE),
1169  getLanguage(), // lang
1170  FALSE, // isExampleBlock
1171  QCString(), // exampleName
1172  this, // fileDef
1173  -1, // startLine
1174  -1, // endLine
1175  FALSE, // inlineFragment
1176  0, // memberDef
1177  TRUE, // showLineNumbers
1178  0, // searchCtx
1179  !needs2PassParsing // collectXRefs
1180  );
1181  ol.endCodeFragment("DoxyCode");
1182  }
1183 }
1184 
1186 {
1187  ol.endContents();
1188  endFileWithNavPath(this,ol);
1189  ol.enableAll();
1190 }
1191 
1193 {
1194  static bool filterSourceFiles = Config_getBool(FILTER_SOURCE_FILES);
1195  DevNullCodeDocInterface devNullIntf;
1196 #if USE_LIBCLANG
1197  if (Doxygen::clangAssistedParsing && clangParser &&
1199  {
1200  clangParser->switchToFile(this);
1201  clangParser->writeSources(devNullIntf,this);
1202  }
1203  else
1204 #endif
1205  {
1207  intf->resetCodeParserState();
1208  intf->parseCode(
1209  devNullIntf,QCString(),
1210  fileToString(absFilePath(),filterSourceFiles,TRUE),
1211  getLanguage(),
1212  FALSE,QCString(),this
1213  );
1214  }
1215 }
1216 
1218 {
1219  for (auto &ml : m_memberLists)
1220  {
1221  if (ml->listType()&MemberListType_declarationLists)
1222  {
1223  ::addMembersToMemberGroup(ml.get(),&m_memberGroups,this);
1224  }
1225  }
1226 
1227  // add members inside sections to their groups
1228  for (const auto &mg : m_memberGroups)
1229  {
1230  if (mg->allMembersInSameSection() && m_subGrouping)
1231  {
1232  //printf("----> addToDeclarationSection(%s)\n",qPrint(mg->header()));
1233  mg->addToDeclarationSection();
1234  }
1235  }
1236 }
1237 
1238 /*! Adds member definition \a md to the list of all members of this file */
1240 {
1241  if (md->isHidden()) return;
1242  //printf("%s:FileDefImpl::insertMember(%s (=%p) list has %d elements)\n",
1243  // qPrint(name()),qPrint(md->name()),md,allMemberList.count());
1245  if (allMemberList && allMemberList->contains(md))
1246  {
1247  return;
1248  }
1249 
1250  if (allMemberList==0)
1251  {
1252  m_memberLists.emplace_back(std::make_unique<MemberList>(MemberListType_allMembersList,MemberListContainer::File));
1253  allMemberList = m_memberLists.back().get();
1254  }
1255  allMemberList->push_back(md);
1256  //::addFileMemberNameToIndex(md);
1257  switch (md->memberType())
1258  {
1259  case MemberType_Variable:
1260  case MemberType_Property:
1263  break;
1264  case MemberType_Function:
1267  break;
1268  case MemberType_Typedef:
1271  break;
1272  case MemberType_Sequence:
1275  break;
1276  case MemberType_Dictionary:
1279  break;
1283  break;
1284  case MemberType_EnumValue: // enum values are shown inside their enums
1285  break;
1286  case MemberType_Define:
1289  break;
1290  default:
1291  err("FileDefImpl::insertMembers(): "
1292  "member '%s' with class scope '%s' inserted in file scope '%s'!\n",
1293  qPrint(md->name()),
1294  md->getClassDef() ? qPrint(md->getClassDef()->name()) : "<global>",
1295  qPrint(name()));
1296  }
1297  //addMemberToGroup(md,groupId);
1298 }
1299 
1300 /*! Adds compound definition \a cd to the list of all compounds of this file */
1302 {
1303  if (cd->isHidden()) return;
1304 
1305  ClassLinkedRefMap &list = m_classes;
1306 
1307  if (Config_getBool(OPTIMIZE_OUTPUT_SLICE))
1308  {
1309  if (cd->compoundType()==ClassDef::Interface)
1310  {
1311  list = m_interfaces;
1312  }
1313  else if (cd->compoundType()==ClassDef::Struct)
1314  {
1315  list = m_structs;
1316  }
1317  else if (cd->compoundType()==ClassDef::Exception)
1318  {
1319  list = m_exceptions;
1320  }
1321  }
1322 
1323  list.add(cd->name(),cd);
1324 }
1325 
1327 {
1328  if (cd->isHidden()) return;
1329  m_concepts.add(cd->name(),cd);
1330 }
1331 
1332 /*! Adds namespace definition \a nd to the list of all compounds of this file */
1334 {
1335  if (nd->isHidden()) return;
1336  m_namespaces.add(nd->name(),nd);
1337 }
1338 
1340 {
1341  if (Config_getBool(FULL_PATH_NAMES))
1342  return m_fileName;
1343  else
1344  return DefinitionMixin::name();
1345 }
1346 
1347 void FileDefImpl::addSourceRef(int line,const Definition *d,const MemberDef *md)
1348 {
1349  //printf("FileDefImpl::addSourceDef(%d,%p,%p)\n",line,d,md);
1350  if (d)
1351  {
1352  m_srcDefMap.insert(std::make_pair(line,d));
1353  if (md) m_srcMemberMap.insert(std::make_pair(line,md));
1354  //printf("Adding member %s with anchor %s at line %d to file %s\n",
1355  // md?qPrint(md->name()):"<none>",md?qPrint(md->anchor()):"<none>",line,qPrint(name()));
1356  }
1357 }
1358 
1360 {
1361  auto it = m_srcDefMap.find(lineNr);
1362  //printf("%s::getSourceDefinition(%d)=%s\n",qPrint(name()),lineNr,it!=m_srcDefMap.end()?qPrint(it->second->name()):"none");
1363  return it!=m_srcDefMap.end() ? it->second : 0;
1364 }
1365 
1366 const MemberDef *FileDefImpl::getSourceMember(int lineNr) const
1367 {
1368  auto it = m_srcMemberMap.find(lineNr);
1369  //printf("%s::getSourceMember(%d)=%s\n",qPrint(name()),lineNr,it!=m_srcMemberMap.end()?qPrint(it->second->name()):"none");
1370  return it!=m_srcMemberMap.end() ? it->second : 0;
1371 }
1372 
1373 
1375 {
1376  m_usingDirList.add(nd->qualifiedName(),nd);
1377  //printf("%p: FileDefImpl::addUsingDirective: %s:%d\n",this,qPrint(name()),usingDirList->count());
1378 }
1379 
1381 {
1382  //printf("%p: FileDefImpl::getUsedNamespace: %s:%d\n",this,qPrint(name()),usingDirList?usingDirList->count():0);
1383  return m_usingDirList;
1384 }
1385 
1387 {
1388  m_usingDeclList.add(cd->qualifiedName(),cd);
1389 }
1390 
1391 void FileDefImpl::addIncludeDependency(const FileDef *fd,const QCString &incName,bool local,bool imported)
1392 {
1393  //printf("FileDefImpl::addIncludeDependency(%p,%s,%d)\n",fd,incName,local);
1394  QCString iName = fd ? fd->absFilePath() : incName;
1395  if (!iName.isEmpty() && m_includeMap.find(iName.str())==m_includeMap.end())
1396  {
1397  m_includeList.emplace_back(fd,incName,local,imported);
1398  m_includeMap.insert(std::make_pair(iName.str(),&m_includeList.back()));
1399  }
1400 }
1401 
1403 {
1404  if (visitedFiles.find(this)!=visitedFiles.end()) return; // file already processed
1405  visitedFiles.insert(this);
1406  //printf("( FileDefImpl::addIncludedUsingDirectives for file %s\n",qPrint(name()));
1407 
1408  if (!m_includeList.empty()) // file contains #includes
1409  {
1410  {
1411  for (const auto &ii : m_includeList) // foreach #include...
1412  {
1413  if (ii.fileDef) // ...that is a known file
1414  {
1415  // recurse into this file
1416  const_cast<FileDef*>(ii.fileDef)->addIncludedUsingDirectives(visitedFiles);
1417  }
1418  }
1419  }
1420  {
1421  // iterate through list from last to first
1422  for (auto ii_it = m_includeList.rbegin(); ii_it!=m_includeList.rend(); ++ii_it)
1423  {
1424  const auto &ii = *ii_it;
1425  if (ii.fileDef && ii.fileDef!=this)
1426  {
1427  // add using directives
1428  auto unl = ii.fileDef->getUsedNamespaces();
1429  for (auto it = unl.rbegin(); it!=unl.rend(); ++it)
1430  {
1431  const auto *nd = *it;
1432  m_usingDirList.prepend(nd->qualifiedName(),nd);
1433  }
1434  // add using declarations
1435  auto udl = ii.fileDef->getUsedClasses();
1436  for (auto it = udl.rbegin(); it!=udl.rend(); ++it)
1437  {
1438  const auto *cd = *it;
1439  m_usingDeclList.prepend(cd->qualifiedName(),cd);
1440  }
1441  }
1442  }
1443  }
1444  }
1445  //printf(") end FileDefImpl::addIncludedUsingDirectives for file %s\n",qPrint(name()));
1446 }
1447 
1448 
1450  bool local,bool imported)
1451 {
1452  //printf("FileDefImpl::addIncludedByDependency(%p,%s,%d)\n",fd,incName,local);
1453  QCString iName = fd ? fd->absFilePath() : incName;
1454  if (!iName.isEmpty() && m_includedByMap.find(iName.str())==m_includedByMap.end())
1455  {
1456  m_includedByList.emplace_back(fd,incName,local,imported);
1457  m_includedByMap.insert(std::make_pair(iName.str(),&m_includedByList.back()));
1458  }
1459 }
1460 
1461 bool FileDefImpl::isIncluded(const QCString &name) const
1462 {
1463  if (name.isEmpty()) return FALSE;
1464  return m_includeMap.find(name.str())!=m_includeMap.end();
1465 }
1466 
1468 {
1469  static bool sourceBrowser = Config_getBool(SOURCE_BROWSER);
1470  static bool verbatimHeaders = Config_getBool(VERBATIM_HEADERS);
1471  return !isReference() &&
1472  (sourceBrowser ||
1473  (verbatimHeaders && guessSection(name())==Entry::HEADER_SEC)
1474  ) &&
1476 }
1477 
1478 
1480 {
1481  {
1482  const RefItemVector &xrefItems = xrefListItems();
1483  addRefItem(xrefItems,
1486  getOutputFileBase(),name(),
1487  QCString(),
1488  0
1489  );
1490  }
1491  for (const auto &mg : m_memberGroups)
1492  {
1493  mg->addListReferences(this);
1494  }
1495  for (auto &ml : m_memberLists)
1496  {
1497  if (ml->listType()&MemberListType_documentationLists)
1498  {
1499  ml->addListReferences(this);
1500  }
1501  }
1502 }
1503 
1504 //-------------------------------------------------------------------
1505 
1507 {
1509  NamespaceDefSet visitedNamespaces;
1510  for (auto &nd : usingDirList)
1511  {
1513  if (ndm)
1514  {
1515  ndm->combineUsingRelations(visitedNamespaces);
1516  }
1517  }
1518 
1519  for (auto &nd : usingDirList)
1520  {
1521  // add used namespaces of namespace nd to this namespace
1522  for (const auto &und : nd->getUsedNamespaces())
1523  {
1524  addUsingDirective(und);
1525  }
1526  // add used classes of namespace nd to this namespace
1527  for (const auto &ucd : nd->getUsedClasses())
1528  {
1529  addUsingDeclaration(ucd);
1530  }
1531  }
1532 }
1533 
1535 {
1536  return name().right(4)==".doc" ||
1537  name().right(4)==".txt" ||
1538  name().right(4)==".dox" ||
1539  name().right(3)==".md" ||
1540  name().right(9)==".markdown" ||
1542 }
1543 
1545 {
1546  QCString vercmd = Config_getString(FILE_VERSION_FILTER);
1547  if (!vercmd.isEmpty() && !m_filePath.isEmpty() &&
1548  m_filePath!="generated" && m_filePath!="graph_legend")
1549  {
1550  msg("Version of %s : ",qPrint(m_filePath));
1551  QCString cmd = vercmd+" \""+m_filePath+"\"";
1552  Debug::print(Debug::ExtCmd,0,"Executing popen(`%s`)\n",qPrint(cmd));
1553  FILE *f=Portable::popen(cmd,"r");
1554  if (!f)
1555  {
1556  err("could not execute %s\n",qPrint(vercmd));
1557  return;
1558  }
1559  const int bufSize=1024;
1560  char buf[bufSize];
1561  int numRead = (int)fread(buf,1,bufSize-1,f);
1562  Portable::pclose(f);
1563  if (numRead>0 && numRead<bufSize)
1564  {
1565  buf[numRead]='\0';
1566  m_fileVersion=QCString(buf,numRead).stripWhiteSpace();
1567  if (!m_fileVersion.isEmpty())
1568  {
1569  msg("%s\n",qPrint(m_fileVersion));
1570  return;
1571  }
1572  }
1573  msg("no version available\n");
1574  }
1575 }
1576 
1577 
1579 {
1580  if (Htags::useHtags)
1581  {
1582  return Htags::path2URL(m_filePath);
1583  }
1584  else
1585  {
1586  return m_outputDiskName+"_source";
1587  }
1588 }
1589 
1591 {
1592  return m_outputDiskName;
1593 }
1594 
1595 /*! Returns the name of the verbatim copy of this file (if any). */
1597 {
1598  return getSourceFileBase();
1599 }
1600 
1602 {
1603  static bool sortBriefDocs = Config_getBool(SORT_BRIEF_DOCS);
1604  static bool sortMemberDocs = Config_getBool(SORT_MEMBER_DOCS);
1605  const auto &ml = m_memberLists.get(lt,MemberListContainer::File);
1606  ml->setNeedsSorting(
1607  ((ml->listType()&MemberListType_declarationLists) && sortBriefDocs) ||
1608  ((ml->listType()&MemberListType_documentationLists) && sortMemberDocs));
1609  ml->push_back(md);
1610  if (ml->listType()&MemberListType_declarationLists)
1611  {
1613  if (mdm)
1614  {
1615  mdm->setSectionList(this,ml.get());
1616  }
1617  }
1618 }
1619 
1621 {
1622  for (auto &ml : m_memberLists)
1623  {
1624  if (ml->needsSorting()) { ml->sort(); ml->setNeedsSorting(FALSE); }
1625  }
1626 
1627  for (const auto &mg : m_memberGroups)
1628  {
1629  MemberList &mlg = const_cast<MemberList&>(mg->members());
1630  if (mlg.needsSorting()) { mlg.sort(); mlg.setNeedsSorting(FALSE); }
1631  }
1632 
1633  std::sort(m_includedByList.begin(),m_includedByList.end(),
1634  [](const auto &fi1,const auto &fi2) { return fi1.includeName < fi2.includeName; });
1635 
1636  if (Config_getBool(SORT_BRIEF_DOCS))
1637  {
1638  auto classComp = [](const ClassLinkedRefMap::Ptr &c1,const ClassLinkedRefMap::Ptr &c2)
1639  {
1640  return Config_getBool(SORT_BY_SCOPE_NAME) ?
1641  qstricmp(c1->name(), c2->name())<0 :
1642  qstricmp(c1->className(), c2->className())<0;
1643  };
1644 
1645  std::sort(m_classes.begin(), m_classes.end(), classComp);
1646  std::sort(m_interfaces.begin(),m_interfaces.end(),classComp);
1647  std::sort(m_structs.begin(), m_structs.end(), classComp);
1648  std::sort(m_exceptions.begin(),m_exceptions.end(),classComp);
1649 
1650  auto namespaceComp = [](const NamespaceLinkedRefMap::Ptr &n1,const NamespaceLinkedRefMap::Ptr &n2)
1651  {
1652  return qstricmp(n1->name(),n2->name())<0;
1653  };
1654 
1655  std::sort(m_namespaces.begin(),m_namespaces.end(),namespaceComp);
1656  }
1657 }
1658 
1660 {
1661  for (auto &ml : m_memberLists)
1662  {
1663  if (ml->listType()==lt)
1664  {
1665  return ml.get();
1666  }
1667  }
1668  return 0;
1669 }
1670 
1672 {
1673  static bool optVhdl = Config_getBool(OPTIMIZE_OUTPUT_VHDL);
1674  MemberList * ml = getMemberList(lt);
1675  if (ml)
1676  {
1677  if (optVhdl) // use specific declarations function
1678  {
1679 
1680  VhdlDocGen::writeVhdlDeclarations(ml,ol,0,0,this,0);
1681  }
1682  else
1683  {
1684  ml->writeDeclarations(ol,0,0,this,0,title,QCString());
1685  }
1686  }
1687 }
1688 
1690 {
1691  MemberList * ml = getMemberList(lt);
1692  if (ml) ml->writeDocumentation(ol,name(),this,title);
1693 }
1694 
1696 {
1697  static bool showFiles = Config_getBool(SHOW_FILES);
1698  return hasDocumentation() && !isReference() && (showFiles || isLinkableViaGroup());
1699 }
1700 
1702  StringUnorderedSet &filesVisited,const FileDef *fd,StringVector &incFiles)
1703 {
1704  for (const auto &ii : fd->includeFileList())
1705  {
1706  if (ii.fileDef && !ii.fileDef->isReference() &&
1707  filesVisited.find(ii.fileDef->absFilePath().str())==filesVisited.end())
1708  {
1709  //printf("FileDefImpl::addIncludeDependency(%s)\n",qPrint(ii->fileDef->absFilePath()));
1710  incFiles.push_back(ii.fileDef->absFilePath().str());
1711  filesVisited.insert(ii.fileDef->absFilePath().str());
1712  getAllIncludeFilesRecursively(filesVisited,ii.fileDef,incFiles);
1713  }
1714  }
1715 }
1716 
1718 {
1719  StringUnorderedSet includes;
1720  ::getAllIncludeFilesRecursively(includes,this,incFiles);
1721 }
1722 
1724 {
1725  return theTranslator->trFileReference(name());
1726 }
1727 
1729 {
1730  return m_fileVersion;
1731 }
1732 
1734 {
1735  return m_inclDepFileName;
1736 }
1737 
1739 {
1740  return m_inclByDepFileName;
1741 }
1742 
1744 {
1745  for (auto &ml : m_memberLists)
1746  {
1747  ml->countDecMembers();
1748  ml->countDocMembers();
1749  }
1750  for (const auto &mg : m_memberGroups)
1751  {
1752  mg->countDecMembers();
1753  mg->countDocMembers();
1754  }
1755 }
1756 
1758 {
1760  return ml ? ml->numDocMembers() : 0;
1761 }
1762 
1764 {
1766  return ml ? ml->numDecMembers() : 0;
1767 }
1768 
1769 // -----------------------
1770 
1771 bool compareFileDefs(const FileDef *fd1, const FileDef *fd2)
1772 {
1773  return qstricmp(fd1->name(),fd2->name()) < 0;
1774 }
1775 
1776 // --- Cast functions
1777 
1779 {
1780  if (d==0) return 0;
1781  if (d && typeid(*d)==typeid(FileDefImpl))
1782  {
1783  return static_cast<FileDef*>(d);
1784  }
1785  else
1786  {
1787  return 0;
1788  }
1789 }
1790 
1791 const FileDef *toFileDef(const Definition *d)
1792 {
1793  if (d==0) return 0;
1794  if (d && typeid(*d)==typeid(FileDefImpl))
1795  {
1796  return static_cast<const FileDef*>(d);
1797  }
1798  else
1799  {
1800  return 0;
1801  }
1802 }
1803 
clangparser.h
FileDefImpl::writeMemberPages
virtual void writeMemberPages(OutputList &ol)
Definition: filedef.cpp:1030
DefinitionMixin< FileDef >::briefFile
virtual QCString briefFile() const
Definition: definitionimpl.h:171
LayoutDocEntry::GroupPageDocs
@ GroupPageDocs
Definition: layout.h:65
Debug::ExtCmd
@ ExtCmd
Definition: debug.h:36
LinkedRefMap::add
bool add(const char *k, T *obj)
Adds an object reference to the ordered vector if it was not added already.
Definition: linkedmap.h:284
StringVector
std::vector< std::string > StringVector
Definition: containers.h:32
FileDefImpl::m_namespaces
NamespaceLinkedRefMap m_namespaces
Definition: filedef.cpp:181
OutputList::disableAllBut
void disableAllBut(OutputGenerator::OutputType o)
Definition: outputlist.cpp:76
DefinitionMixin< FileDef >::isReference
virtual bool isReference() const
Definition: definitionimpl.h:183
FileDefSet
std::set< const FileDef * > FileDefSet
Definition: filedef.h:45
FileDefImpl::m_memberLists
MemberLists m_memberLists
Definition: filedef.cpp:179
startTitle
void startTitle(OutputList &ol, const QCString &fileName, const DefinitionMutable *def)
Definition: index.cpp:219
outputlist.h
dotincldepgraph.h
FileDefImpl::m_srcMemberMap
MemberDefLineMap m_srcMemberMap
Definition: filedef.cpp:174
FileDefImpl::m_srcDefMap
DefinitionLineMap m_srcDefMap
Definition: filedef.cpp:173
FileDefImpl::m_usingDeclList
LinkedRefMap< const ClassDef > m_usingDeclList
Definition: filedef.cpp:165
FileDefImpl::writeSourceBody
virtual void writeSourceBody(OutputList &ol, ClangTUParser *clangParser)
Definition: filedef.cpp:1134
OutputList::endGroupHeader
void endGroupHeader(int extraLevels=0)
Definition: outputlist.h:171
Translator::trDefinedInSourceFile
virtual QCString trDefinedInSourceFile()=0
LayoutDocEntryMemberDecl::type
MemberListType type
Definition: layout.h:101
MemberList::numDecMembers
int numDecMembers() const
Definition: memberlist.h:90
LayoutDocEntryMemberDecl
Represents of a member declaration list with configurable title and subtitle.
Definition: layout.h:94
LayoutDocEntry::NamespaceNestedNamespaces
@ NamespaceNestedNamespaces
Definition: layout.h:52
LinkedRefMap< const NamespaceDef >
FileDefImpl::definitionType
virtual DefType definitionType() const
Definition: filedef.cpp:62
Portable::popen
FILE * popen(const QCString &name, const QCString &type)
Definition: portable.cpp:452
MemberType_Variable
@ MemberType_Variable
Definition: types.h:278
Htags::path2URL
static QCString path2URL(const QCString &path)
Definition: htags.cpp:159
MemberListType_docDictionaryMembers
@ MemberListType_docDictionaryMembers
Definition: types.h:193
ConceptLinkedRefMap::writeDeclaration
void writeDeclaration(OutputList &ol, const QCString &header, bool localNames) const
Definition: conceptdef.cpp:662
FileDefImpl::addIncludedByDependency
virtual void addIncludedByDependency(const FileDef *fd, const QCString &incName, bool local, bool imported)
Definition: filedef.cpp:1449
endTitle
void endTitle(OutputList &ol, const QCString &fileName, const QCString &name)
Definition: index.cpp:228
ConceptDef
Definition: conceptdef.h:22
toMemberDefMutable
MemberDefMutable * toMemberDefMutable(Definition *d)
Definition: memberdef.cpp:6125
ClangTUParser::switchToFile
void switchToFile(const FileDef *fd)
Switches to another file within the translation unit started with start().
Definition: clangparser.cpp:912
membergroup.h
FileDef::generateSourceFile
virtual bool generateSourceFile() const =0
LayoutDocEntry::GroupConcepts
@ GroupConcepts
Definition: layout.h:63
FileDefImpl::getUsedNamespaces
virtual LinkedRefMap< const NamespaceDef > getUsedNamespaces() const
Definition: filedef.cpp:1380
MemberListType
MemberListType
Definition: types.h:100
DevNullCodeDocInterface::writeLineNumber
virtual void writeLineNumber(const QCString &, const QCString &, const QCString &, int, bool) override
Definition: filedef.cpp:210
FileDefImpl::writeDocumentation
virtual void writeDocumentation(OutputList &ol)
Definition: filedef.cpp:814
FileDefImpl::writeMemberGroups
void writeMemberGroups(OutputList &ol)
Definition: filedef.cpp:718
Definition
The common base class of all entity definitions found in the sources.
Definition: definition.h:76
MemberListType_docEnumMembers
@ MemberListType_docEnumMembers
Definition: types.h:167
LayoutDocEntry::GroupFiles
@ GroupFiles
Definition: layout.h:64
DefinitionMixin< FileDef >::xrefListItems
virtual const RefItemVector & xrefListItems() const
Definition: definitionimpl.h:192
FileDefImpl::m_memberGroups
MemberGroupList m_memberGroups
Definition: filedef.cpp:180
LayoutDocEntry::NamespaceInlineClasses
@ NamespaceInlineClasses
Definition: layout.h:54
NamespaceDef
An abstract interface of a namespace symbol.
Definition: namespacedef.h:54
MemberType_EnumValue
@ MemberType_EnumValue
Definition: types.h:281
LayoutDocEntry::MemberDef
@ MemberDef
Definition: layout.h:38
LayoutDocEntry::FileClasses
@ FileClasses
Definition: layout.h:57
FileDefImpl::fileName
virtual QCString fileName() const
Definition: filedef.cpp:67
ClassLinkedRefMap::writeDeclaration
void writeDeclaration(OutputList &ol, const ClassDef::CompoundType *filter, const QCString &header, bool localNames) const
Definition: classlist.cpp:53
FileDefImpl::fileVersion
virtual QCString fileVersion() const
Definition: filedef.cpp:1728
OutputList::docify
void docify(const QCString &s)
Definition: outputlist.h:137
FileDefImpl::m_isSource
bool m_isSource
Definition: filedef.cpp:175
LayoutDocEntry::ConceptDefinition
@ ConceptDefinition
Definition: layout.h:49
DefinitionMixin< FileDef >::writeDocAnchorsToTagFile
virtual void writeDocAnchorsToTagFile(TextStream &fs) const
Definition: definitionimpl.h:268
FileDefImpl::writeIncludedByGraph
void writeIncludedByGraph(OutputList &ol)
Definition: filedef.cpp:617
FileDefImpl::addUsingDeclaration
virtual void addUsingDeclaration(const ClassDef *cd)
Definition: filedef.cpp:1386
FileDefImpl::m_package
PackageDef * m_package
Definition: filedef.cpp:177
QCString::length
uint length() const
Returns the length of the string, not counting the 0-terminator.
Definition: qcstring.h:147
DevNullCodeDocInterface::codify
virtual void codify(const QCString &) override
Definition: filedef.cpp:202
FileDefImpl::getDirDef
virtual DirDef * getDirDef() const
Definition: filedef.cpp:86
FileDefImpl::numDocMembers
virtual int numDocMembers() const
Definition: filedef.cpp:1757
FileDefImpl::m_concepts
ConceptLinkedRefMap m_concepts
Definition: filedef.cpp:186
LayoutDocManager::File
@ File
Definition: layout.h:203
FileDefImpl::includedByDependencyGraphFileName
virtual QCString includedByDependencyGraphFileName() const
Definition: filedef.cpp:1738
FileDefImpl::writeIncludeFiles
void writeIncludeFiles(OutputList &ol)
Definition: filedef.cpp:528
memberdef.h
Htags::useHtags
static bool useHtags
Definition: htags.h:23
MemberLists::get
const std::unique_ptr< MemberList > & get(MemberListType lt, MemberListContainer con)
Definition: memberlist.h:142
DirDef
A model of a directory symbol.
Definition: dirdef.h:110
FileDefImpl::m_filePath
QCString m_filePath
Definition: filedef.cpp:167
FileDefImpl::addListReferences
virtual void addListReferences()
Definition: filedef.cpp:1479
DefinitionMixin< FileDef >::docFile
virtual QCString docFile() const
Definition: definitionimpl.h:164
FileDefImpl::writeNamespaceDeclarations
void writeNamespaceDeclarations(OutputList &ol, const QCString &title, bool isConstantGroup)
Definition: filedef.cpp:658
FileDefImpl::m_usingDirList
LinkedRefMap< const NamespaceDef > m_usingDirList
Definition: filedef.cpp:164
FileDefImpl::addIncludedUsingDirectives
virtual void addIncludedUsingDirectives(FileDefSet &visitedFiles)
Definition: filedef.cpp:1402
QCString::isEmpty
bool isEmpty() const
Returns TRUE iff the string is empty
Definition: qcstring.h:144
FileDefImpl::addIncludeDependency
virtual void addIncludeDependency(const FileDef *fd, const QCString &incName, bool local, bool imported)
Definition: filedef.cpp:1391
MemberListType_allMembersList
@ MemberListType_allMembersList
Definition: types.h:147
FileDefImpl::m_dir
DirDef * m_dir
Definition: filedef.cpp:178
FileDefImpl::m_docname
QCString m_docname
Definition: filedef.cpp:172
DevNullCodeDocInterface::startFontClass
virtual void startFontClass(const QCString &) override
Definition: filedef.cpp:214
namespacedef.h
FileDefImpl::getMemberGroups
virtual const MemberGroupList & getMemberGroups() const
Definition: filedef.cpp:94
OutputList::startMemberSections
void startMemberSections()
Definition: outputlist.h:177
OutputList::writeString
void writeString(const QCString &text)
Definition: outputlist.h:111
LayoutDocEntryMemberDef::title
QCString title(SrcLangExt lang) const
Definition: layout.cpp:1680
VhdlDocGen::writeVhdlDeclarations
static void writeVhdlDeclarations(const MemberList *, OutputList &, const GroupDef *, const ClassDef *, const FileDef *, const NamespaceDef *)
Definition: vhdldocgen.cpp:1539
MemberVector::sort
void sort()
Definition: memberlist.h:58
LayoutDocEntry::ClassInheritanceGraph
@ ClassInheritanceGraph
Definition: layout.h:44
FileDefImpl::writeSourceFooter
virtual void writeSourceFooter(OutputList &ol)
Definition: filedef.cpp:1185
ClassDef::Interface
@ Interface
Definition: classdef.h:110
MemberVector::push_back
void push_back(const MemberDef *md)
Definition: memberlist.h:42
OutputList::endProjectNumber
void endProjectNumber()
Definition: outputlist.h:84
DevNullCodeDocInterface::endFontClass
virtual void endFontClass() override
Definition: filedef.cpp:215
SrcLangExt
SrcLangExt
Language as given by extension
Definition: types.h:41
LayoutDocEntry::MemberDeclStart
@ MemberDeclStart
Definition: layout.h:37
MemberListType_docSequenceMembers
@ MemberListType_docSequenceMembers
Definition: types.h:191
ClassLinkedRefMap::writeDocumentation
void writeDocumentation(OutputList &ol, const Definition *container=0) const
Definition: classlist.cpp:74
FileDefImpl::m_exceptions
ClassLinkedRefMap m_exceptions
Definition: filedef.cpp:185
FileDefImpl::m_fileVersion
QCString m_fileVersion
Definition: filedef.cpp:176
MemberType_Enumeration
@ MemberType_Enumeration
Definition: types.h:280
FileDefImpl
Definition: filedef.cpp:56
QCString::str
std::string str() const
Definition: qcstring.h:442
MemberType_Typedef
@ MemberType_Typedef
Definition: types.h:279
FileDefImpl::FileDefImpl
FileDefImpl(const QCString &p, const QCString &n, const QCString &ref=QCString(), const QCString &dn=QCString())
Definition: filedef.cpp:229
Definition::isHidden
virtual bool isHidden() const =0
LayoutDocEntry::NamespaceClasses
@ NamespaceClasses
Definition: layout.h:53
definitionimpl.h
MemberListType_docDefineMembers
@ MemberListType_docDefineMembers
Definition: types.h:164
LayoutDocEntry::GroupClasses
@ GroupClasses
Definition: layout.h:63
DevNullCodeDocInterface::endCodeFragment
virtual void endCodeFragment(const QCString &) override
Definition: filedef.cpp:220
DefinitionMixin< FileDef >::getLanguage
virtual SrcLangExt getLanguage() const
Definition: definitionimpl.h:189
MemberDefMutable::setSectionList
virtual void setSectionList(const Definition *container, const MemberList *sl)=0
FileDefImpl::getAllIncludeFilesRecursively
virtual void getAllIncludeFilesRecursively(StringVector &incFiles) const
Definition: filedef.cpp:1717
FileDefImpl::computeAnchors
virtual void computeAnchors()
Definition: filedef.cpp:273
MemberListType_decDictionaryMembers
@ MemberListType_decDictionaryMembers
Definition: types.h:192
DefinitionLineMap
std::unordered_map< int, const Definition * > DefinitionLineMap
Definition: filedef.cpp:52
Doxygen::parseSourcesNeeded
static bool parseSourcesNeeded
Definition: doxygen.h:104
err
void err(const char *fmt,...)
Definition: message.cpp:203
SrcLangExt_Java
@ SrcLangExt_Java
Definition: types.h:45
FileDef::isLinkable
virtual bool isLinkable() const =0
MemberLists
Definition: memberlist.h:138
TextStream
Text streaming class that buffers data.
Definition: textstream.h:33
DefinitionMixin::name
virtual QCString name() const
Definition: definitionimpl.h:155
QCString::find
int find(char c, int index=0, bool cs=TRUE) const
Definition: qcstring.cpp:38
LayoutDocEntry::ClassIncludes
@ ClassIncludes
Definition: layout.h:43
LayoutDocEntry::FileNamespaces
@ FileNamespaces
Definition: layout.h:57
LayoutDocEntryMemberDef::type
MemberListType type
Definition: layout.h:116
MemberDefMutable
Definition: memberdef.h:296
FileDefImpl::writeClassesToTagFile
void writeClassesToTagFile(TextStream &t, const ClassLinkedRefMap &list)
Definition: filedef.cpp:516
FileDefImpl::writeAuthorSection
void writeAuthorSection(OutputList &ol)
Definition: filedef.cpp:731
LayoutDocEntry::FileConcepts
@ FileConcepts
Definition: layout.h:57
FileDefImpl::m_fileName
QCString m_fileName
Definition: filedef.cpp:171
filename.h
FileDefImpl::addMembersToMemberGroup
virtual void addMembersToMemberGroup()
Definition: filedef.cpp:1217
DefinitionMixin< FileDef >::briefLine
virtual int briefLine() const
Definition: definitionimpl.h:167
OutputList::endTypewriter
void endTypewriter()
Definition: outputlist.h:167
endFileWithNavPath
void endFileWithNavPath(const Definition *d, OutputList &ol)
Definition: index.cpp:274
LayoutDocEntry::MemberDefEnd
@ MemberDefEnd
Definition: layout.h:38
LayoutDocEntry::DirSubDirs
@ DirSubDirs
Definition: layout.h:68
LinkedRefMap::prepend
bool prepend(const char *k, T *obj)
Prepends an object reference to the ordered vector if it was not added already.
Definition: linkedmap.h:317
FileDefImpl::parseSource
virtual void parseSource(ClangTUParser *clangParser)
Definition: filedef.cpp:1192
FileDefImpl::isSource
virtual bool isSource() const
Definition: filedef.cpp:76
DefinitionMixin< FileDef >::hasBriefDescription
virtual bool hasBriefDescription() const
Definition: definitionimpl.h:199
OutputList::writeDoc
void writeDoc(DocRoot *root, const Definition *ctx, const MemberDef *md, int id=0)
Definition: outputlist.cpp:169
MemberDefLineMap
std::unordered_map< int, const MemberDef * > MemberDefLineMap
Definition: filedef.cpp:53
MemberList::declVisible
bool declVisible() const
Definition: memberlist.cpp:279
FileDefImpl::getNamespaces
virtual const NamespaceLinkedRefMap & getNamespaces() const
Definition: filedef.cpp:95
DefinitionMutable::writeNavigationPath
virtual void writeNavigationPath(OutputList &ol) const =0
NamespaceLinkedRefMap
Definition: namespacedef.h:45
Definition::getLanguage
virtual SrcLangExt getLanguage() const =0
Returns the programming language this definition was written in.
FileDefImpl::getSourceFileBase
virtual QCString getSourceFileBase() const
Definition: filedef.cpp:1578
FileDefImpl::m_subGrouping
bool m_subGrouping
Definition: filedef.cpp:187
DevNullCodeDocInterface::writeCodeAnchor
virtual void writeCodeAnchor(const QCString &) override
Definition: filedef.cpp:216
LayoutDocEntry::NamespaceNestedConstantGroups
@ NamespaceNestedConstantGroups
Definition: layout.h:52
OutputList::startTypewriter
void startTypewriter()
Definition: outputlist.h:165
FileDefImpl::m_inclByDepFileName
QCString m_inclByDepFileName
Definition: filedef.cpp:169
FileDefImpl::m_inclDepFileName
QCString m_inclDepFileName
Definition: filedef.cpp:168
LayoutDocEntry::GroupInlineClasses
@ GroupInlineClasses
Definition: layout.h:63
FileDefImpl::~FileDefImpl
virtual ~FileDefImpl()
Definition: filedef.cpp:252
OutputList::writeSummaryLink
void writeSummaryLink(const QCString &file, const QCString &anchor, const QCString &title, bool first)
Definition: outputlist.h:359
OutputList::endTextBlock
void endTextBlock(bool paraBreak=FALSE)
Definition: outputlist.h:411
FileDefImpl::includedByFileList
virtual const IncludeInfoList & includedByFileList() const
Definition: filedef.cpp:90
MemberListType_declarationLists
@ MemberListType_declarationLists
Definition: types.h:104
OutputGenerator::RTF
@ RTF
Definition: outputgen.h:333
StringUnorderedSet
std::unordered_set< std::string > StringUnorderedSet
Definition: containers.h:28
DotInclDepGraph::numNodes
int numNodes() const
Definition: dotincldepgraph.cpp:206
MemberListType_decSequenceMembers
@ MemberListType_decSequenceMembers
Definition: types.h:190
Translator::trSourceFile
virtual QCString trSourceFile(QCString &filename)=0
FileDefImpl::addMemberToList
void addMemberToList(MemberListType lt, MemberDef *md)
Definition: filedef.cpp:1601
ConceptLinkedRefMap::declVisible
bool declVisible() const
Definition: conceptdef.cpp:648
LayoutDocEntry::ClassCollaborationGraph
@ ClassCollaborationGraph
Definition: layout.h:45
LayoutDocEntryMemberDecl::title
QCString title(SrcLangExt lang) const
Definition: layout.cpp:1668
FileDefImpl::m_path
QCString m_path
Definition: filedef.cpp:166
toNamespaceDefMutable
NamespaceDefMutable * toNamespaceDefMutable(Definition *d)
Definition: namespacedef.cpp:1579
FileDef::includeName
virtual QCString includeName() const =0
DevNullCodeDocInterface::endCodeLine
virtual void endCodeLine() override
Definition: filedef.cpp:213
NamespaceDefMutable::combineUsingRelations
virtual void combineUsingRelations(NamespaceDefSet &visitedNamespace)=0
MemberList::listTypeAsString
static QCString listTypeAsString(MemberListType type)
Definition: memberlist.cpp:882
SrcLangExt_ObjC
@ SrcLangExt_ObjC
Definition: types.h:49
OutputList
Class representing a list of output generators that are written to in parallel.
Definition: outputlist.h:37
Definition::qualifiedName
virtual QCString qualifiedName() const =0
FileDefImpl::writeTagFile
virtual void writeTagFile(TextStream &t)
Definition: filedef.cpp:316
LayoutDocEntry::FileStructs
@ FileStructs
Definition: layout.h:57
LayoutDocEntryMemberDef
Represents of a member definition list with configurable title.
Definition: layout.h:110
OutputList::endQuickIndices
void endQuickIndices()
Definition: outputlist.h:349
dot.h
entry.h
addHtmlExtensionIfMissing
QCString addHtmlExtensionIfMissing(const QCString &fName)
Definition: util.cpp:5275
MemberType_Function
@ MemberType_Function
Definition: types.h:277
MemberDef
A model of a class/file/namespace member symbol.
Definition: memberdef.h:45
LayoutDocEntry::FileIncludes
@ FileIncludes
Definition: layout.h:58
MemberList::writeTagFile
void writeTagFile(TextStream &)
Definition: memberlist.cpp:940
FileDefImpl::insertClass
virtual void insertClass(const ClassDef *cd)
Definition: filedef.cpp:1301
warn_uncond
void warn_uncond(const char *fmt,...)
Definition: message.cpp:194
OutputGenerator::Latex
@ Latex
Definition: outputgen.h:333
DefinitionMixin< FileDef >::briefDescription
virtual QCString briefDescription(bool abbreviate=FALSE) const
Definition: definitionimpl.h:165
createFileDef
FileDef * createFileDef(const QCString &p, const QCString &n, const QCString &ref, const QCString &dn)
Definition: filedef.cpp:190
FileDefImpl::name
virtual QCString name() const
Definition: filedef.cpp:1339
ClassDef
A abstract class representing of a compound symbol.
Definition: classdef.h:103
MemberListType_decVarMembers
@ MemberListType_decVarMembers
Definition: types.h:154
classlist.h
Doxygen::clangAssistedParsing
static bool clangAssistedParsing
Definition: doxygen.h:119
QCString::stripWhiteSpace
QCString stripWhiteSpace() const
returns a copy of this string with leading and trailing whitespace removed
Definition: qcstring.h:243
Config_getInt
#define Config_getInt(name)
Definition: config.h:34
OutputList::startTextBlock
void startTextBlock(bool dense=FALSE)
Definition: outputlist.h:409
OutputList::disable
void disable(OutputGenerator::OutputType o)
Definition: outputlist.cpp:100
Entry::SOURCE_SEC
@ SOURCE_SEC
Definition: entry.h:88
FileDefImpl::writeConcepts
void writeConcepts(OutputList &ol, const QCString &title)
Definition: filedef.cpp:671
QCString::left
QCString left(size_t len) const
Definition: qcstring.h:212
message.h
FileDef::name
virtual QCString name() const =0
MemberList::listType
MemberListType listType() const
Definition: memberlist.h:86
DevNullCodeDocInterface::writeCodeLink
virtual void writeCodeLink(CodeSymbolType, const QCString &, const QCString &, const QCString &, const QCString &, const QCString &) override
Definition: filedef.cpp:203
LayoutDocEntrySection
Definition: layout.h:84
FileDefImpl::writeSummaryLinks
virtual void writeSummaryLinks(OutputList &ol) const
Definition: filedef.cpp:743
LayoutDocEntry::MemberDeclEnd
@ MemberDeclEnd
Definition: layout.h:37
Doxygen::parserManager
static ParserManager * parserManager
Definition: doxygen.h:111
FileDefImpl::m_outputDiskName
QCString m_outputDiskName
Definition: filedef.cpp:170
OutputList::writeAnchor
void writeAnchor(const QCString &fileName, const QCString &name)
Definition: outputlist.h:239
FileDefImpl::getVersion
virtual QCString getVersion() const
Definition: filedef.cpp:81
FileDefImpl::startMemberDeclarations
void startMemberDeclarations(OutputList &ol)
Definition: filedef.cpp:690
FileDefImpl::getMemberLists
virtual const MemberLists & getMemberLists() const
Definition: filedef.cpp:93
DevNullCodeDocInterface::startCodeLine
virtual void startCodeLine(bool) override
Definition: filedef.cpp:212
Translator::trMore
virtual QCString trMore()=0
DefinitionMixin< FileDef >::getStartBodyLine
virtual int getStartBodyLine() const
Definition: definitionimpl.h:186
Definition::TypeFile
@ TypeFile
Definition: definition.h:88
OutputList::endContents
void endContents()
Definition: outputlist.h:363
FileDefImpl::combineUsingRelations
virtual void combineUsingRelations()
Definition: filedef.cpp:1506
Debug::print
static void print(DebugMask mask, int prio, const char *fmt,...)
Definition: debug.cpp:57
FileDefImpl::insertMember
virtual void insertMember(MemberDef *md)
Definition: filedef.cpp:1239
FileDefImpl::anchor
virtual QCString anchor() const
Definition: filedef.cpp:69
FileDefImpl::writeSourceHeader
virtual void writeSourceHeader(OutputList &ol)
Definition: filedef.cpp:1088
MemberList::numDocMembers
int numDocMembers() const
Definition: memberlist.h:92
ClangTUParser::writeSources
void writeSources(CodeOutputInterface &ol, const FileDef *fd)
writes the syntax highlighted source code for a file
OutputList::endInclDepGraph
void endInclDepGraph(DotInclDepGraph &g)
Definition: outputlist.h:393
htags.h
LayoutDocEntry::MemberDefStart
@ MemberDefStart
Definition: layout.h:38
FileDefImpl::m_includedByList
IncludeInfoList m_includedByList
Definition: filedef.cpp:163
qstricmp
int qstricmp(const char *str1, const char *str2)
Definition: qcstring.cpp:433
LayoutDocEntry::DirFiles
@ DirFiles
Definition: layout.h:68
OutputList::lineBreak
void lineBreak(const QCString &style=QCString())
Definition: outputlist.h:300
theTranslator
Translator * theTranslator
Definition: language.cpp:156
Definition::isReference
virtual bool isReference() const =0
Definition::name
virtual QCString name() const =0
DevNullCodeDocInterface::startCodeFragment
virtual void startCodeFragment(const QCString &) override
Definition: filedef.cpp:219
SrcLangExt_Cpp
@ SrcLangExt_Cpp
Definition: types.h:50
DefinitionMixin< FileDef >::isLinkableViaGroup
virtual bool isLinkableViaGroup() const
Definition: definitionimpl.h:191
doxygen.h
FileDefImpl::endMemberDocumentation
void endMemberDocumentation(OutputList &ol)
Definition: filedef.cpp:709
LayoutDocEntry::NamespaceExceptions
@ NamespaceExceptions
Definition: layout.h:53
parserintf.h
OutputList::writeRuler
void writeRuler()
Definition: outputlist.h:237
FileDefImpl::writeClassDeclarations
void writeClassDeclarations(OutputList &ol, const QCString &title, const ClassLinkedRefMap &list)
Definition: filedef.cpp:665
FileDefImpl::countMembers
virtual void countMembers()
Definition: filedef.cpp:1743
LayoutDocEntry::FileConstantGroups
@ FileConstantGroups
Definition: layout.h:57
MemberDef::getClassDef
virtual const ClassDef * getClassDef() const =0
Portable::pclose
int pclose(FILE *stream)
Definition: portable.cpp:461
language.h
DevNullCodeDocInterface::setCurrentDoc
virtual void setCurrentDoc(const Definition *, const QCString &, bool) override
Definition: filedef.cpp:217
Translator::trGeneratedAutomatically
virtual QCString trGeneratedAutomatically(const QCString &s)=0
FileDefImpl::absFilePath
virtual QCString absFilePath() const
Definition: filedef.cpp:74
validatingParseDoc
DocRoot * validatingParseDoc(IDocParser &parserIntf, const QCString &fileName, int startLine, const Definition *ctx, const MemberDef *md, const QCString &input, bool indexWords, bool isExample, const QCString &exampleName, bool singleLine, bool linkFromIndex, bool markdownSupport)
Definition: docparser.cpp:7495
FileDefImpl::m_includedByMap
IncludeInfoMap m_includedByMap
Definition: filedef.cpp:162
MemberListType_docFuncMembers
@ MemberListType_docFuncMembers
Definition: types.h:168
FileDefImpl::generateSourceFile
virtual bool generateSourceFile() const
Definition: filedef.cpp:1467
LayoutDocEntry::GroupGraph
@ GroupGraph
Definition: layout.h:65
FileDefImpl::setPackageDef
virtual void setPackageDef(PackageDef *pd)
Definition: filedef.cpp:121
LayoutDocEntry::NamespaceStructs
@ NamespaceStructs
Definition: layout.h:53
FileDefImpl::startMemberDocumentation
void startMemberDocumentation(OutputList &ol)
Definition: filedef.cpp:700
OutputList::endParagraph
void endParagraph()
Definition: outputlist.h:109
startFile
void startFile(OutputList &ol, const QCString &name, const QCString &manName, const QCString &title, HighlightedItem hli, bool additionalIndices, const QCString &altSidebarName)
Definition: index.cpp:235
FileDefImpl::addUsingDirective
virtual void addUsingDirective(const NamespaceDef *nd)
Definition: filedef.cpp:1374
fileToString
QCString fileToString(const QCString &name, bool filter, bool isSourceCode)
Definition: util.cpp:1394
FileDefImpl::m_includeList
IncludeInfoList m_includeList
Definition: filedef.cpp:161
ParserManager::getCodeParser
std::unique_ptr< CodeParserInterface > getCodeParser(const QCString &extension)
Gets the interface to the parser associated with a given extension.
Definition: parserintf.h:217
docparser.h
getLanguageFromFileName
SrcLangExt getLanguageFromFileName(const QCString &fileName, SrcLangExt defLang)
Definition: util.cpp:5574
TRUE
#define TRUE
Definition: qcstring.h:36
OutputList::startProjectNumber
void startProjectNumber()
Definition: outputlist.h:82
FileDefImpl::isDocumentationFile
virtual bool isDocumentationFile() const
Definition: filedef.cpp:1534
MemberList::needsSorting
bool needsSorting() const
Definition: memberlist.h:94
LayoutDocEntry::GroupNestedGroups
@ GroupNestedGroups
Definition: layout.h:64
filedef.h
FileDefImpl::endMemberDeclarations
void endMemberDeclarations(OutputList &ol)
Definition: filedef.cpp:695
MemberList::writeDeclarations
void writeDeclarations(OutputList &ol, const ClassDef *cd, const NamespaceDef *nd, const FileDef *fd, const GroupDef *gd, const QCString &title, const QCString &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:526
ClassDef::Struct
@ Struct
Definition: classdef.h:108
OutputGenerator::Html
@ Html
Definition: outputgen.h:333
IncludeInfoMap
std::unordered_map< std::string, const IncludeInfo * > IncludeInfoMap
Definition: filedef.cpp:54
FileDefImpl::writeMemberDocumentation
void writeMemberDocumentation(OutputList &ol, MemberListType lt, const QCString &title)
Definition: filedef.cpp:1689
OutputList::enableAll
void enableAll()
Definition: outputlist.cpp:84
Definition::DefType
DefType
Definition: definition.h:85
FileDefImpl::packageDef
virtual PackageDef * packageDef() const
Definition: filedef.cpp:85
OutputList::isEnabled
bool isEnabled(OutputGenerator::OutputType o)
Definition: outputlist.cpp:116
MemberListType_decEnumMembers
@ MemberListType_decEnumMembers
Definition: types.h:152
DevNullCodeDocInterface::addWord
virtual void addWord(const QCString &, bool) override
Definition: filedef.cpp:218
LinkedRefMap::begin
iterator begin()
Definition: linkedmap.h:366
memberlist.h
addRefItem
void addRefItem(const RefItemVector &sli, const QCString &key, const QCString &prefix, const QCString &name, const QCString &title, const QCString &args, const Definition *scope)
Definition: util.cpp:4880
DefinitionMixin< FileDef >::docLine
virtual int docLine() const
Definition: definitionimpl.h:163
OutputList::startContents
void startContents()
Definition: outputlist.h:361
FileDefImpl::writeMemberDeclarations
void writeMemberDeclarations(OutputList &ol, MemberListType lt, const QCString &title)
Definition: filedef.cpp:1671
OutputList::startGroupHeader
void startGroupHeader(int extraLevels=0)
Definition: outputlist.h:169
dirdef.h
MemberType_Property
@ MemberType_Property
Definition: types.h:286
MemberListType_decDefineMembers
@ MemberListType_decDefineMembers
Definition: types.h:149
OutputList::endMemberSections
void endMemberSections()
Definition: outputlist.h:179
OutputList::popGeneratorState
void popGeneratorState()
Definition: outputlist.cpp:134
OutputList::startTextLink
void startTextLink(const QCString &file, const QCString &anchor)
Definition: outputlist.h:152
MemberType_Dictionary
@ MemberType_Dictionary
Definition: types.h:291
FileDefImpl::numDecMembers
virtual int numDecMembers() const
Definition: filedef.cpp:1763
ClassDef::compoundType
virtual CompoundType compoundType() const =0
Returns the type of compound this is, i.e.
HLI_FileVisible
@ HLI_FileVisible
Definition: index.h:174
docFindSections
void docFindSections(const QCString &input, const Definition *d, const QCString &fileName)
Definition: docparser.cpp:7681
FileDefImpl::subGrouping
virtual bool subGrouping() const
Definition: filedef.cpp:101
FileDefImpl::writeDetailedDescription
void writeDetailedDescription(OutputList &ol, const QCString &title)
Definition: filedef.cpp:414
FileDefImpl::codeSymbolType
virtual CodeSymbolType codeSymbolType() const
Definition: filedef.cpp:63
MemberListType_decFuncMembers
@ MemberListType_decFuncMembers
Definition: types.h:153
OutputList::startCodeFragment
void startCodeFragment(const QCString &style)
Definition: outputlist.h:241
FileDefImpl::writeQuickMemberLinks
virtual void writeQuickMemberLinks(OutputList &ol, const MemberDef *currentMd) const
Definition: filedef.cpp:1046
Definition::getReference
virtual QCString getReference() const =0
FileDefImpl::sortMemberLists
virtual void sortMemberLists()
Definition: filedef.cpp:1620
DefinitionMixin< FileDef >::documentation
virtual QCString documentation() const
Definition: definitionimpl.h:162
getAllIncludeFilesRecursively
static void getAllIncludeFilesRecursively(StringUnorderedSet &filesVisited, const FileDef *fd, StringVector &incFiles)
Definition: filedef.cpp:1701
MemberListContainer::File
@ File
FileDefImpl::insertNamespace
virtual void insertNamespace(const NamespaceDef *nd)
Definition: filedef.cpp:1333
compareFileDefs
bool compareFileDefs(const FileDef *fd1, const FileDef *fd2)
Definition: filedef.cpp:1771
FileDefImpl::m_classes
ClassLinkedRefMap m_classes
Definition: filedef.cpp:182
classdef.h
DotInclDepGraph::isTooBig
bool isTooBig() const
Definition: dotincldepgraph.cpp:201
FileDefImpl::writeIncludeGraph
void writeIncludeGraph(OutputList &ol)
Definition: filedef.cpp:592
RefItemVector
std::vector< RefItem * > RefItemVector
Definition: reflist.h:132
IncludeInfoList
Definition: filedef.h:59
FileDefImpl::getSourceDefinition
virtual const Definition * getSourceDefinition(int lineNr) const
Definition: filedef.cpp:1359
MemberList::setAnchors
void setAnchors()
Definition: memberlist.cpp:975
LayoutDocEntry::ClassAllMembersLink
@ ClassAllMembersLink
Definition: layout.h:45
FileDefImpl::writeBriefDescription
void writeBriefDescription(OutputList &ol)
Definition: filedef.cpp:477
FileDefImpl::writeSourceLink
void writeSourceLink(OutputList &ol)
Definition: filedef.cpp:643
Config_getBool
#define Config_getBool(name)
Definition: config.h:33
LayoutDocEntry::GroupDirs
@ GroupDirs
Definition: layout.h:64
layout.h
Translator::trFile
virtual QCString trFile(bool first_capital, bool singular)=0
MemberList::writeDocumentation
void writeDocumentation(OutputList &ol, const QCString &scopeName, const Definition *container, const QCString &title, bool showEnumValues=FALSE, bool showInline=FALSE) const
Definition: memberlist.cpp:658
LayoutDocEntry::DetailedDesc
@ DetailedDesc
Definition: layout.h:39
FileDefImpl::m_includeMap
IncludeInfoMap m_includeMap
Definition: filedef.cpp:160
FileDefImpl::getClasses
virtual const ClassLinkedRefMap & getClasses() const
Definition: filedef.cpp:97
msg
void msg(const char *fmt,...)
Definition: message.cpp:53
MemberListType_documentationLists
@ MemberListType_documentationLists
Definition: types.h:105
CodeOutputInterface
Output interface for code parser.
Definition: outputgen.h:61
MemberListType_docVarMembers
@ MemberListType_docVarMembers
Definition: types.h:169
LayoutDocManager::instance
static LayoutDocManager & instance()
Returns a reference to this singleton.
Definition: layout.cpp:1574
FileDefImpl::setDiskName
virtual void setDiskName(const QCString &name)
Definition: filedef.cpp:256
LayoutDocEntry::FileInterfaces
@ FileInterfaces
Definition: layout.h:57
DefinitionMixin< FileDef >::hasDocumentation
virtual bool hasDocumentation() const
Definition: definitionimpl.h:176
DefinitionMixin< FileDef >::getBodyDef
virtual const FileDef * getBodyDef() const
Definition: definitionimpl.h:188
MemberGroupList
Definition: membergroup.h:109
FileDefImpl::displayName
virtual QCString displayName(bool=TRUE) const
Definition: filedef.cpp:66
OutputList::writeSynopsis
void writeSynopsis()
Definition: outputlist.h:337
FileDefImpl::includeDependencyGraphFileName
virtual QCString includeDependencyGraphFileName() const
Definition: filedef.cpp:1733
MemberListType_decTypedefMembers
@ MemberListType_decTypedefMembers
Definition: types.h:151
FileDefImpl::includeFileList
virtual const IncludeInfoList & includeFileList() const
Definition: filedef.cpp:89
OutputList::parseText
void parseText(const QCString &textStr)
Definition: outputlist.cpp:179
FileDef::absFilePath
virtual QCString absFilePath() const =0
NamespaceLinkedRefMap::declVisible
bool declVisible(bool isContantGroup) const
Definition: namespacedef.cpp:1284
MemberType_Sequence
@ MemberType_Sequence
Definition: types.h:290
qPrint
const char * qPrint(const char *s)
Definition: qcstring.h:589
SrcLangExt_IDL
@ SrcLangExt_IDL
Definition: types.h:44
ConceptLinkedRefMap
Definition: conceptdef.h:67
LayoutDocEntry::MemberGroups
@ MemberGroups
Definition: layout.h:36
Config_getString
#define Config_getString(name)
Definition: config.h:32
LayoutDocEntry::ClassInlineClasses
@ ClassInlineClasses
Definition: layout.h:43
LinkedRefMap::end
iterator end()
Definition: linkedmap.h:367
FileDefImpl::getUsedClasses
virtual LinkedRefMap< const ClassDef > getUsedClasses() const
Definition: filedef.cpp:88
OutputList::startInclDepGraph
void startInclDepGraph()
Definition: outputlist.h:391
OutputList::generateDoc
void generateDoc(const QCString &fileName, int startLine, const Definition *ctx, const MemberDef *md, const QCString &docStr, bool indexWords, bool isExample, const QCString &exampleName, bool singleLine, bool linkFromIndex, bool markdownSupport)
Definition: outputlist.cpp:142
addGroupListToTitle
void addGroupListToTitle(OutputList &ol, const Definition *d)
Definition: util.cpp:4929
MemberVector::contains
bool contains(const MemberDef *md)
Definition: memberlist.h:71
FileDefImpl::getPath
virtual QCString getPath() const
Definition: filedef.cpp:80
convertNameToFile
QCString convertNameToFile(const QCString &name, bool allowDots, bool allowUnderscore)
Definition: util.cpp:3604
config.h
FileDefImpl::hasDetailedDescription
virtual bool hasDetailedDescription() const
Definition: filedef.cpp:306
FileDefImpl::distributeMemberGroupDocumentation
virtual void distributeMemberGroupDocumentation()
Definition: filedef.cpp:279
ClassLinkedRefMap::declVisible
bool declVisible(const ClassDef::CompoundType *filter=0) const
Definition: classlist.cpp:29
SrcLangExt_Markdown
@ SrcLangExt_Markdown
Definition: types.h:57
OutputList::pushGeneratorState
void pushGeneratorState()
Definition: outputlist.cpp:126
groupdef.h
getFileNameExtension
QCString getFileNameExtension(const QCString &fn)
Definition: util.cpp:5621
Translator::trInclByDepGraph
virtual QCString trInclByDepGraph()=0
ClangTUParser
Clang parser object for a single translation unit, which consists of a source file and the directly o...
Definition: clangparser.h:21
convertToXML
QCString convertToXML(const QCString &s, bool keepEntities)
Definition: util.cpp:3948
MemberList::setNeedsSorting
void setNeedsSorting(bool b)
Definition: memberlist.cpp:877
NamespaceDefMutable
Definition: namespacedef.h:106
FileDef
A model of a file symbol.
Definition: filedef.h:73
FileDefImpl::isLinkableInProject
virtual bool isLinkableInProject() const
Definition: filedef.cpp:1695
Translator::trInclDepGraph
virtual QCString trInclDepGraph(const QCString &fName)=0
DefinitionMixin< FileDef >::setReference
virtual void setReference(const QCString &r)
Definition: definitionimpl.h:214
toFileDef
FileDef * toFileDef(Definition *d)
Definition: filedef.cpp:1778
MemberType_Define
@ MemberType_Define
Definition: types.h:276
LayoutDocEntry::BriefDesc
@ BriefDesc
Definition: layout.h:39
Entry::HEADER_SEC
@ HEADER_SEC
Definition: entry.h:89
DotInclDepGraph
Representation of an include dependency graph
Definition: dotincldepgraph.h:30
FileDefImpl::isIncluded
virtual bool isIncluded(const QCString &name) const
Definition: filedef.cpp:1461
LayoutDocEntry::NamespaceConcepts
@ NamespaceConcepts
Definition: layout.h:53
FileDefImpl::includeName
virtual QCString includeName() const
Definition: filedef.cpp:1596
FileDefImpl::findSectionsInDocumentation
virtual void findSectionsInDocumentation()
Definition: filedef.cpp:288
conceptdef.h
FileDefImpl::docName
virtual const QCString & docName() const
Definition: filedef.cpp:75
stripFromPath
static QCString stripFromPath(const QCString &path, const StringVector &l)
Definition: util.cpp:292
FileDefImpl::acquireFileVersion
void acquireFileVersion()
Definition: filedef.cpp:1544
LayoutDocEntry::DirGraph
@ DirGraph
Definition: layout.h:68
CodeSymbolType::Default
@ Default
LayoutDocEntry::FileIncludeGraph
@ FileIncludeGraph
Definition: layout.h:58
Translator::trGotoDocumentation
virtual QCString trGotoDocumentation()=0
LayoutDocEntry::FileIncludedByGraph
@ FileIncludedByGraph
Definition: layout.h:59
Doxygen::suppressDocWarnings
static bool suppressDocWarnings
Definition: doxygen.h:112
OutputList::writeObjectLink
void writeObjectLink(const QCString &ref, const QCString &file, const QCString &anchor, const QCString &name)
Definition: outputlist.h:141
FileDefImpl::getOutputFileBase
virtual QCString getOutputFileBase() const
Definition: filedef.cpp:1590
FileDefImpl::m_structs
ClassLinkedRefMap m_structs
Definition: filedef.cpp:184
DevNullCodeDocInterface
Class implementing CodeOutputInterface by throwing away everything.
Definition: filedef.cpp:199
LayoutDocEntry::ClassUsedFiles
@ ClassUsedFiles
Definition: layout.h:46
LayoutDocEntry::FileSourceLink
@ FileSourceLink
Definition: layout.h:59
FileDefImpl::getSourceMember
virtual const MemberDef * getSourceMember(int lineNr) const
Definition: filedef.cpp:1366
portable.h
Portable versions of functions that are platform dependent.
FileDefImpl::setDirDef
virtual void setDirDef(DirDef *dd)
Definition: filedef.cpp:122
searchindex.h
DotInclDepGraph::isTrivial
bool isTrivial() const
Definition: dotincldepgraph.cpp:196
FileDefImpl::getConcepts
virtual const ConceptLinkedRefMap & getConcepts() const
Definition: filedef.cpp:96
DefinitionMixin< FileDef >::getDefFileExtension
virtual QCString getDefFileExtension() const
Definition: definitionimpl.h:173
FileDefImpl::isLinkable
virtual bool isLinkable() const
Definition: filedef.cpp:83
ClassDef::Exception
@ Exception
Definition: classdef.h:113
FileDefImpl::m_interfaces
ClassLinkedRefMap m_interfaces
Definition: filedef.cpp:183
LayoutDocEntry::ClassNestedClasses
@ ClassNestedClasses
Definition: layout.h:44
FileDefImpl::writeInlineClasses
void writeInlineClasses(OutputList &ol)
Definition: filedef.cpp:677
FileDef::getOutputFileBase
virtual QCString getOutputFileBase() const =0
guessSection
int guessSection(const QCString &name)
Definition: util.cpp:331
util.h
A bunch of utility functions.
createSubDirs
void createSubDirs(const Dir &d)
Definition: util.cpp:3677
getFileFilter
QCString getFileFilter(const QCString &name, bool isSourceCode)
Definition: util.cpp:1315
FileDefImpl::addSourceRef
virtual void addSourceRef(int line, const Definition *d, const MemberDef *md)
Definition: filedef.cpp:1347
Translator::trFileReference
virtual QCString trFileReference(const QCString &fileName)=0
Translator::trGotoSourceCode
virtual QCString trGotoSourceCode()=0
LayoutDocEntry::FileExceptions
@ FileExceptions
Definition: layout.h:57
OutputList::enable
void enable(OutputGenerator::OutputType o)
Definition: outputlist.cpp:108
NamespaceLinkedRefMap::writeDeclaration
void writeDeclaration(OutputList &ol, const QCString &title, bool isConstantGroup=false, bool localName=FALSE)
Definition: namespacedef.cpp:1314
NamespaceDefSet
std::set< const NamespaceDef * > NamespaceDefSet
Definition: namespacedef.h:39
CodeSymbolType
CodeSymbolType
Definition: types.h:204
LayoutDocEntry::NamespaceInterfaces
@ NamespaceInterfaces
Definition: layout.h:53
DefinitionMixin< FileDef >::setLanguage
virtual void setLanguage(SrcLangExt lang)
Definition: definitionimpl.h:242
MemberList
A list of MemberDef objects as shown in documentation sections.
Definition: memberlist.h:81
LayoutDocEntry::FileInlineClasses
@ FileInlineClasses
Definition: layout.h:60
LayoutDocEntry::GroupNamespaces
@ GroupNamespaces
Definition: layout.h:63
ClassLinkedRefMap
Definition: classlist.h:30
FileDefImpl::title
virtual QCString title() const
Definition: filedef.cpp:1723
QCString::right
QCString right(size_t len) const
Definition: qcstring.h:217
ClassDef::className
virtual QCString className() const =0
Returns the name of the class including outer classes, but not including namespaces.
FileDefImpl::insertConcept
virtual void insertConcept(const ConceptDef *cd)
Definition: filedef.cpp:1326
OutputList::endCodeFragment
void endCodeFragment(const QCString &style)
Definition: outputlist.h:243
QCString::prepend
QCString & prepend(const char *s)
Definition: qcstring.h:339
MemberListType_docTypedefMembers
@ MemberListType_docTypedefMembers
Definition: types.h:166
FileDefImpl::getMemberList
virtual MemberList * getMemberList(MemberListType lt) const
Definition: filedef.cpp:1659
MemberDef::memberType
virtual MemberType memberType() const =0
OutputList::endTextLink
void endTextLink()
Definition: outputlist.h:154
debug.h
convertToHtml
QCString convertToHtml(const QCString &s, bool keepEntities)
Definition: util.cpp:4063
LayoutDocEntry::MemberDecl
@ MemberDecl
Definition: layout.h:37
DevNullCodeDocInterface::writeTooltip
virtual void writeTooltip(const QCString &, const DocLinkInfo &, const QCString &, const QCString &, const SourceLinkInfo &, const SourceLinkInfo &) override
Definition: filedef.cpp:207
OutputList::startParagraph
void startParagraph(const QCString &classDef=QCString())
Definition: outputlist.h:107
DefinitionMixin
Definition: definitionimpl.h:142
vhdldocgen.h
LayoutDocEntry::AuthorSection
@ AuthorSection
Definition: layout.h:40
LayoutDocEntrySection::title
QCString title(SrcLangExt lang) const
Definition: layout.cpp:1661
createDocParser
std::unique_ptr< IDocParser > createDocParser()
Definition: docparser.cpp:179
FALSE
#define FALSE
Definition: qcstring.h:33
FileDef::includeFileList
virtual const IncludeInfoList & includeFileList() const =0
Translator::trAuthor
virtual QCString trAuthor(bool first_capital, bool singular)=0
OutputGenerator::Man
@ Man
Definition: outputgen.h:333
QCString
This is an alternative implementation of QCString.
Definition: qcstring.h:108