Doxygen
conceptdef.cpp
浏览该文件的文档.
1 /******************************************************************************
2  *
3  * Copyright (C) 1997-2021 by Dimitri van Heesch.
4  *
5  * Permission to use, copy, modify, and distribute this software and its
6  * documentation under the terms of the GNU General Public License is hereby
7  * granted. No representations are made about the suitability of this software
8  * for any purpose. It is provided "as is" without express or implied warranty.
9  * See the GNU General Public License for more details.
10  *
11  * Documents produced by Doxygen are derivative works derived from the
12  * input used in their production; they are not affected by this license.
13  *
14  */
15 
16 #include "conceptdef.h"
17 #include "definitionimpl.h"
18 #include "util.h"
19 #include "config.h"
20 #include "doxygen.h"
21 #include "language.h"
22 #include "outputlist.h"
23 #include "searchindex.h"
24 #include "message.h"
25 #include "parserintf.h"
26 #include "layout.h"
27 #include "namespacedef.h"
28 
29 //------------------------------------------------------------------------------------
30 
31 class ConceptDefImpl : public DefinitionMixin<ConceptDefMutable>
32 {
33  public:
34  ConceptDefImpl(const QCString &fileName,int startLine,int startColumn,
35  const QCString &name,const QCString &tagRef=QCString(),const QCString &tagFile=QCString());
37 
38  virtual ConceptDef *resolveAlias() { return this; }
39 
40  //---------- ConceptDef
41  virtual DefType definitionType() const;
42  virtual CodeSymbolType codeSymbolType() const { return CodeSymbolType::Concept; }
43  virtual QCString getOutputFileBase() const;
44  virtual bool hasDetailedDescription() const;
45  virtual QCString displayName(bool includeScope=true) const;
46  virtual const IncludeInfo *includeInfo() const;
47  virtual ArgumentList getTemplateParameterList() const;
48  virtual QCString anchor() const;
49  virtual bool isLinkableInProject() const;
50  virtual bool isLinkable() const;
51  virtual QCString initializer() const;
52  virtual void writeDeclarationLink(OutputList &ol,bool &found,
53  const QCString &header,bool localNames) const;
54  virtual const NamespaceDef *getNamespaceDef() const;
55  virtual const FileDef *getFileDef() const;
56  virtual QCString title() const;
57 
58  //---------- ConceptDefMutable
59  virtual void setIncludeFile(FileDef *fd,const QCString &incName,bool local,bool force);
60  virtual void setTemplateArguments(const ArgumentList &al);
61  virtual void setNamespace(NamespaceDef *nd);
62  virtual void setFileDef(FileDef *fd);
63  virtual void writeTagFile(TextStream &);
64  virtual void writeDocumentation(OutputList &);
65  virtual void setInitializer(const QCString &init);
66  virtual void findSectionsInDocumentation();
67 
68  //---------- Helpers
69  void writeBriefDescription(OutputList &) const;
70  void writeAuthorSection(OutputList &ol) const;
71  void writeIncludeFiles(OutputList &ol) const;
72  void writeDetailedDescription(OutputList &ol,const QCString &title) const;
73  void writeDefinition(OutputList &ol,const QCString &title) const;
74 
75  private:
77  std::unique_ptr<IncludeInfo> m_incInfo;
79  FileDef *m_fileDef = 0;
82 };
83 
85  const QCString &fileName,int startLine,int startColumn,
86  const QCString &name, const QCString &tagRef,const QCString &tagFile)
87 {
88  return new ConceptDefImpl(fileName,startLine,startColumn,name,tagRef,tagFile);
89 }
90 
91 //------------------------------------------------------------------------------------
92 
93 class ConceptDefAliasImpl : public DefinitionAliasMixin<ConceptDef>
94 {
95  public:
96  ConceptDefAliasImpl(const Definition *newScope,const ConceptDef *cd)
97  : DefinitionAliasMixin(newScope,cd) { init(); }
98  virtual ~ConceptDefAliasImpl() { deinit(); }
99 
100  const ConceptDef *getCdAlias() const { return toConceptDef(getAlias()); }
101  virtual ConceptDef *resolveAlias() { return const_cast<ConceptDef*>(getCdAlias()); }
102 
103  virtual DefType definitionType() const { return TypeConcept; }
105  { return getCdAlias()->codeSymbolType(); }
106  virtual QCString getOutputFileBase() const
107  { return getCdAlias()->getOutputFileBase(); }
108  virtual QCString getReference() const
109  { return getCdAlias()->getReference(); }
110  virtual bool isReference() const
111  { return getCdAlias()->isReference(); }
112  virtual bool hasDetailedDescription() const
113  { return getCdAlias()->hasDetailedDescription(); }
114  virtual QCString displayName(bool includeScope=true) const
115  { return getCdAlias()->displayName(includeScope); }
116  virtual const IncludeInfo *includeInfo() const
117  { return getCdAlias()->includeInfo(); }
119  { return getCdAlias()->getTemplateParameterList(); }
120  virtual QCString anchor() const
121  { return getCdAlias()->anchor(); }
122  virtual bool isLinkableInProject() const
123  { return getCdAlias()->isLinkableInProject(); }
124  virtual bool isLinkable() const
125  { return getCdAlias()->isLinkable(); }
126  virtual QCString initializer() const
127  { return getCdAlias()->initializer(); }
128  virtual const NamespaceDef *getNamespaceDef() const
129  { return getCdAlias()->getNamespaceDef(); }
130  virtual const FileDef *getFileDef() const
131  { return getCdAlias()->getFileDef(); }
132  virtual QCString title() const
133  { return getCdAlias()->title(); }
134  virtual void writeDeclarationLink(OutputList &ol,bool &found,
135  const QCString &header,bool localNames) const
136  { getCdAlias()->writeDeclarationLink(ol,found,header,localNames); }
137 };
138 
140 {
141  ConceptDef *acd = new ConceptDefAliasImpl(newScope,cd);
142  return acd;
143 }
144 
145 //------------------------------------------------------------------------------------
146 
147 ConceptDefImpl::ConceptDefImpl(const QCString &fileName,int startLine,int startColumn,
148  const QCString &name,const QCString &tagRef,const QCString &tagFile) : DefinitionMixin(fileName,startLine,startColumn,name)
149 {
150  if (!tagFile.isEmpty())
151  {
152  if (!tagRef.isEmpty())
153  {
154  m_fileName = stripExtension(tagFile);
155  }
156  else
157  {
159  }
160  }
161  else
162  {
164  }
165  setReference(tagRef);
166 }
167 
169 {
170 }
171 
173 {
174  return TypeConcept;
175 }
176 
178 {
179  return m_fileName;
180 }
181 
183 {
184  bool repeatBrief = Config_getBool(REPEAT_BRIEF);
185  bool sourceBrowser = Config_getBool(SOURCE_BROWSER);
186  return ((!briefDescription().isEmpty() && repeatBrief) ||
187  !documentation().isEmpty() ||
188  (sourceBrowser && getStartBodyLine()!=-1 && getBodyDef()));
189 }
190 
192 {
193  return "";
194 }
195 
196 QCString ConceptDefImpl::displayName(bool includeScope) const
197 {
198  return includeScope ? name() : localName();
199 }
200 
202 {
203  return m_incInfo.get();
204 }
205 
207 {
208  return m_tArgList;
209 }
210 
212 {
213  return hasDocumentation() && !isReference() && !isHidden();
214 }
215 
217 {
218  return isLinkableInProject() || isReference();
219 }
220 
221 void ConceptDefImpl::setIncludeFile(FileDef *fd,const QCString &incName,bool local,bool force)
222 {
223  if (!m_incInfo) m_incInfo = std::make_unique<IncludeInfo>();
224  if ((!incName.isEmpty() && m_incInfo->includeName.isEmpty()) ||
225  (fd!=0 && m_incInfo->fileDef==0)
226  )
227  {
228  m_incInfo->fileDef = fd;
229  m_incInfo->includeName = incName;
230  m_incInfo->local = local;
231  }
232  if (force && !incName.isEmpty())
233  {
234  m_incInfo->includeName = incName;
235  m_incInfo->local = local;
236  }
237 }
238 
240 {
241  m_tArgList = al;
242 }
243 
245 {
246  m_nspace = nd;
247 }
248 
250 {
251  return m_nspace;
252 }
253 
255 {
256  m_fileDef=fd;
257 }
258 
260 {
261  return m_fileDef;
262 }
263 
265 {
267 }
268 
270 {
271  tagFile << " <compound kind=\"concept\">\n";
272  tagFile << " <name>" << convertToXML(name()) << "</name>\n";
273  tagFile << " <filename>" << convertToXML(addHtmlExtensionIfMissing(getOutputFileBase())) << "</filename>\n";
274  QCString idStr = id();
275  if (!idStr.isEmpty())
276  {
277  tagFile << " <clangid>" << convertToXML(idStr) << "</clangid>\n";
278  }
279  writeDocAnchorsToTagFile(tagFile);
280  tagFile << " </compound>\n";
281 }
282 
284 {
285  if (hasBriefDescription())
286  {
287  std::unique_ptr<IDocParser> parser { createDocParser() };
288  std::unique_ptr<DocRoot> rootNode { validatingParseDoc(
289  *parser.get(),briefFile(),briefLine(),this,0,
291  QCString(),TRUE,FALSE,Config_getBool(MARKDOWN_SUPPORT)) };
292  if (rootNode && !rootNode->isEmpty())
293  {
294  ol.startParagraph();
295  ol.pushGeneratorState();
297  ol.writeString(" - ");
298  ol.popGeneratorState();
299  ol.writeDoc(rootNode.get(),this,0);
300  ol.pushGeneratorState();
302  ol.writeString(" \n");
304 
306  {
308  ol.startTextLink(getOutputFileBase(),"details");
310  ol.endTextLink();
311  }
312  ol.popGeneratorState();
313  ol.endParagraph();
314  }
315  }
316  ol.writeSynopsis();
317 }
318 
320 {
321  if (m_incInfo)
322  {
323  QCString nm=m_incInfo->includeName.isEmpty() ?
324  (m_incInfo->fileDef ?
325  m_incInfo->fileDef->docName() : QCString()
326  ) :
327  m_incInfo->includeName;
328  if (!nm.isEmpty())
329  {
330  ol.startParagraph();
331  ol.startTypewriter();
332  ol.docify("#include ");
333  if (m_incInfo->local)
334  ol.docify("\"");
335  else
336  ol.docify("<");
337  ol.pushGeneratorState();
339  ol.docify(nm);
342  if (m_incInfo->fileDef)
343  {
344  ol.writeObjectLink(QCString(),m_incInfo->fileDef->includeName(),QCString(),nm);
345  }
346  else
347  {
348  ol.docify(nm);
349  }
350  ol.popGeneratorState();
351  if (m_incInfo->local)
352  ol.docify("\"");
353  else
354  ol.docify(">");
355  ol.endTypewriter();
356  ol.endParagraph();
357  }
358  }
359 }
360 
362 {
363  TextStream t;
364  t << "template<";
365  bool first=true;
366  for (const auto &a : al)
367  {
368  if (!first) t << ", ";
369  t << a.type;
370  if (!a.name.isEmpty())
371  {
372  t << " " << a.name;
373  }
374  if (a.defval.length()!=0)
375  {
376  t << " " << a.defval;
377  }
378  first=false;
379  }
380  t << ">";
381  return t.str();
382 }
383 
385 {
386  m_initializer = templateSpec(m_tArgList)+"\nconcept "+name()+" = "+init;
387 }
388 
390 {
391  return m_initializer;
392 }
393 
395 {
396  ol.startGroupHeader();
397  ol.parseText(title);
398  ol.endGroupHeader();
399 
400  auto intf = Doxygen::parserManager->getCodeParser(".cpp");
401  intf->resetCodeParserState();
402  ol.startCodeFragment("DoxyCode");
403  QCString scopeName;
404  if (getOuterScope()!=Doxygen::globalScope) scopeName=getOuterScope()->name();
405  TextStream conceptDef;
406  conceptDef << m_initializer;
407  intf->parseCode(ol,scopeName,conceptDef.str(),SrcLangExt_Cpp,false,QCString(),
408  m_fileDef, -1,-1,true,0,false,this);
409  ol.endCodeFragment("DoxyCode");
410 }
411 
413 {
414  static bool repeatBrief = Config_getBool(REPEAT_BRIEF);
416  {
417  ol.pushGeneratorState();
419  ol.writeRuler();
420  ol.popGeneratorState();
421 
422  ol.pushGeneratorState();
424  ol.writeAnchor(QCString(),"details");
425  ol.popGeneratorState();
426 
427  ol.startGroupHeader();
428  ol.parseText(title);
429  ol.endGroupHeader();
430 
431  ol.startTextBlock();
432  // repeat brief description
433  if (!briefDescription().isEmpty() && repeatBrief)
434  {
436  QCString(),FALSE,FALSE,Config_getBool(MARKDOWN_SUPPORT));
437  }
438  if (!briefDescription().isEmpty() && repeatBrief &&
439  !documentation().isEmpty())
440  {
441  ol.pushGeneratorState();
443  ol.writeString("\n\n");
444  ol.popGeneratorState();
445  }
446 
447  // write documentation
448  if (!documentation().isEmpty())
449  {
451  QCString(),FALSE,FALSE,Config_getBool(MARKDOWN_SUPPORT));
452  }
453 
454  writeSourceDef(ol,name());
455  ol.endTextBlock();
456  }
457 }
458 
460 {
461  // write Author section (Man only)
462  ol.pushGeneratorState();
464  ol.startGroupHeader();
466  ol.endGroupHeader();
468  ol.popGeneratorState();
469 }
470 
472 {
473  static bool generateTreeView = Config_getBool(GENERATE_TREEVIEW);
475  startFile(ol,getOutputFileBase(),name(),pageTitle,HLI_ConceptVisible,!generateTreeView);
476 
477  // ---- navigation part
478  if (!generateTreeView)
479  {
481  {
483  }
484  ol.endQuickIndices();
485  }
486 
487  // ---- title part
488  startTitle(ol,getOutputFileBase(),this);
489  ol.parseText(pageTitle);
490  addGroupListToTitle(ol,this);
492 
493  // ---- contents part
494 
495  ol.startContents();
496 
497  //---------------------------------------- start flexible part -------------------------------
498 
499  for (const auto &lde : LayoutDocManager::instance().docEntries(LayoutDocManager::Concept))
500  {
501  switch (lde->kind())
502  {
505  break;
507  {
508  const LayoutDocEntrySection *ls = (const LayoutDocEntrySection*)lde.get();
509  writeDefinition(ol,ls->title(getLanguage()));
510  }
511  break;
513  {
514  const LayoutDocEntrySection *ls = (const LayoutDocEntrySection*)lde.get();
516  }
517  break;
519  writeAuthorSection(ol);
520  break;
522  writeIncludeFiles(ol);
523  break;
569  err("Internal inconsistency: member %d should not be part of "
570  "LayoutDocManager::Namespace entry list\n",lde->kind());
571  break;
572  }
573  }
574 
575  //---------------------------------------- end flexible part -------------------------------
576 
577  ol.endContents();
578 
579  endFileWithNavPath(this,ol);
580 }
581 
582 void ConceptDefImpl::writeDeclarationLink(OutputList &ol,bool &found,const QCString &header,bool localNames) const
583 {
584  if (isLinkable())
585  {
586  if (!found) // first concept
587  {
588  ol.startMemberHeader("concepts");
589  if (!header.isEmpty())
590  {
591  ol.parseText(header);
592  }
593  else
594  {
595  theTranslator->trConcept(true,false);
596  }
597  ol.endMemberHeader();
598  ol.startMemberList();
599  found=TRUE;
600  }
603  ol.writeString("concept ");
604  QCString cname = displayName(!localNames);
605  ol.insertMemberAlign();
606  if (isLinkable())
607  {
610  anchor(),
611  cname
612  );
613  }
614  else
615  {
616  ol.startBold();
617  ol.docify(cname);
618  ol.endBold();
619  }
620  ol.endMemberItem();
621  // add the brief description if available
622  if (!briefDescription().isEmpty() && Config_getBool(BRIEF_MEMBER_DESC))
623  {
624  std::unique_ptr<IDocParser> parser { createDocParser() };
625  std::unique_ptr<DocRoot> rootNode { validatingParseDoc(
626  *parser.get(),briefFile(),briefLine(),this,0,
628  QCString(),TRUE,FALSE,Config_getBool(MARKDOWN_SUPPORT)) };
629  if (rootNode && !rootNode->isEmpty())
630  {
632  ol.writeDoc(rootNode.get(),this,0);
634  }
635  }
637  }
638 }
639 
641 {
644 }
645 
646 //------------------------------------------------------------------------------------
647 
649 {
650  bool hideUndocClasses = Config_getBool(HIDE_UNDOC_CLASSES);
651  for (const auto &cd : *this)
652  {
653  bool isLink = cd->isLinkable();
654  if (isLink || !hideUndocClasses)
655  {
656  return true;
657  }
658  }
659  return false;
660 }
661 
662 void ConceptLinkedRefMap::writeDeclaration(OutputList &ol,const QCString &header,bool localNames) const
663 {
664  bool found=FALSE;
665  for (const auto &cd : *this)
666  {
667  cd->writeDeclarationLink(ol,found,header,localNames);
668  }
669  if (found) ol.endMemberList();
670 }
671 
672 //------------------------------------------------------------------------------------
673 
674 // --- Cast functions
675 //
677 {
678  if (d && (typeid(*d)==typeid(ConceptDefImpl) || typeid(*d)==typeid(ConceptDefAliasImpl)))
679  {
680  return static_cast<ConceptDef*>(d);
681  }
682  else
683  {
684  return 0;
685  }
686 }
687 
689 {
690  Definition *d = toDefinition(md);
691  if (d && typeid(*d)==typeid(ConceptDefImpl))
692  {
693  return static_cast<ConceptDef*>(d);
694  }
695  else
696  {
697  return 0;
698  }
699 }
700 
702 {
703  if (d && (typeid(*d)==typeid(ConceptDefImpl) || typeid(*d)==typeid(ConceptDefAliasImpl)))
704  {
705  return static_cast<const ConceptDef*>(d);
706  }
707  else
708  {
709  return 0;
710  }
711 }
712 
714 {
715  if (d && typeid(*d)==typeid(ConceptDefImpl))
716  {
717  return static_cast<ConceptDefMutable*>(d);
718  }
719  else
720  {
721  return 0;
722  }
723 }
724 
726 {
727  if (d && typeid(*d)==typeid(ConceptDefImpl))
728  {
729  return const_cast<ConceptDefMutable*>(static_cast<const ConceptDefMutable*>(d));
730  }
731  else
732  {
733  return 0;
734  }
735 }
736 
737 // -- helpers
738 
740 {
741  if (n.isEmpty()) return 0;
742  return Doxygen::conceptLinkedMap->find(n);
743 }
744 
746 {
747  ConceptDef *cd=0;
748  while (d && d!=Doxygen::globalScope)
749  {
750  cd = getConcept(d->name()+"::"+name);
751  if (cd) return cd;
752  d = d->getOuterScope();
753  }
754  cd = getConcept(name);
755  return cd;
756 }
757 
758 
toDefinition
Definition * toDefinition(DefinitionMutable *dm)
Definition: definition.cpp:1950
DefinitionMixin< ConceptDefMutable >::briefFile
virtual QCString briefFile() const
Definition: definitionimpl.h:171
LayoutDocEntry::GroupPageDocs
@ GroupPageDocs
Definition: layout.h:65
ConceptDefMutable
Definition: conceptdef.h:42
OutputList::disableAllBut
void disableAllBut(OutputGenerator::OutputType o)
Definition: outputlist.cpp:76
Config::init
void init()
DefinitionMixin< ConceptDefMutable >::isReference
virtual bool isReference() const
Definition: definitionimpl.h:183
OutputList::startMemberDescription
void startMemberDescription(const QCString &anchor, const QCString &inheritId=QCString(), bool typ=false)
Definition: outputlist.h:306
ConceptDefImpl::m_fileName
QCString m_fileName
Definition: conceptdef.cpp:89
startTitle
void startTitle(OutputList &ol, const QCString &fileName, const DefinitionMutable *def)
Definition: index.cpp:219
outputlist.h
OutputList::endGroupHeader
void endGroupHeader(int extraLevels=0)
Definition: outputlist.h:171
ConceptDef::getOutputFileBase
virtual QCString getOutputFileBase() const =0
OutputList::startMemberList
void startMemberList()
Definition: outputlist.h:197
LayoutDocEntry::NamespaceNestedNamespaces
@ NamespaceNestedNamespaces
Definition: layout.h:52
ConceptDef::displayName
virtual QCString displayName(bool includeScope=true) const =0
ConceptLinkedRefMap::writeDeclaration
void writeDeclaration(OutputList &ol, const QCString &header, bool localNames) const
Definition: conceptdef.cpp:662
ConceptDefImpl::displayName
virtual QCString displayName(bool includeScope=true) const
Definition: conceptdef.cpp:196
endTitle
void endTitle(OutputList &ol, const QCString &fileName, const QCString &name)
Definition: index.cpp:228
ConceptDef
Definition: conceptdef.h:22
OutputList::endMemberDeclaration
void endMemberDeclaration(const QCString &anchor, const QCString &inheritId)
Definition: outputlist.h:312
ConceptDefImpl::setInitializer
virtual void setInitializer(const QCString &init)
Definition: conceptdef.cpp:384
ConceptDefAliasImpl::isLinkable
virtual bool isLinkable() const
Definition: conceptdef.cpp:124
LayoutDocEntry::GroupConcepts
@ GroupConcepts
Definition: layout.h:63
ConceptDefImpl::writeBriefDescription
void writeBriefDescription(OutputList &) const
Definition: conceptdef.cpp:283
Definition
The common base class of all entity definitions found in the sources.
Definition: definition.h:76
LayoutDocEntry::GroupFiles
@ GroupFiles
Definition: layout.h:64
LayoutDocEntry::NamespaceInlineClasses
@ NamespaceInlineClasses
Definition: layout.h:54
NamespaceDef
An abstract interface of a namespace symbol.
Definition: namespacedef.h:54
LayoutDocEntry::MemberDef
@ MemberDef
Definition: layout.h:38
getResolvedConcept
ConceptDef * getResolvedConcept(const Definition *d, const QCString &name)
Definition: conceptdef.cpp:745
LayoutDocEntry::FileClasses
@ FileClasses
Definition: layout.h:57
OutputList::docify
void docify(const QCString &s)
Definition: outputlist.h:137
LayoutDocEntry::ConceptDefinition
@ ConceptDefinition
Definition: layout.h:49
DefinitionMixin< ConceptDefMutable >::writeDocAnchorsToTagFile
virtual void writeDocAnchorsToTagFile(TextStream &fs) const
Definition: definitionimpl.h:268
ConceptDefImpl::getTemplateParameterList
virtual ArgumentList getTemplateParameterList() const
Definition: conceptdef.cpp:206
ConceptDefAliasImpl::displayName
virtual QCString displayName(bool includeScope=true) const
Definition: conceptdef.cpp:114
ArgumentList
This class represents an function or template argument list.
Definition: arguments.h:59
OutputList::endMemberDescription
void endMemberDescription()
Definition: outputlist.h:308
Doxygen::conceptLinkedMap
static ConceptLinkedMap * conceptLinkedMap
Definition: doxygen.h:80
ConceptDefAliasImpl::includeInfo
virtual const IncludeInfo * includeInfo() const
Definition: conceptdef.cpp:116
ConceptDefImpl::title
virtual QCString title() const
Definition: conceptdef.cpp:264
ConceptDef::isLinkableInProject
virtual bool isLinkableInProject() const =0
DefinitionMixin< ConceptDefMutable >::docFile
virtual QCString docFile() const
Definition: definitionimpl.h:164
ConceptDefImpl::writeDefinition
void writeDefinition(OutputList &ol, const QCString &title) const
Definition: conceptdef.cpp:394
QCString::isEmpty
bool isEmpty() const
Returns TRUE iff the string is empty
Definition: qcstring.h:144
ConceptDefImpl::getOutputFileBase
virtual QCString getOutputFileBase() const
Definition: conceptdef.cpp:177
OutputList::startBold
void startBold()
Definition: outputlist.h:302
ConceptDefImpl::writeDeclarationLink
virtual void writeDeclarationLink(OutputList &ol, bool &found, const QCString &header, bool localNames) const
Definition: conceptdef.cpp:582
templateSpec
static QCString templateSpec(const ArgumentList &al)
Definition: conceptdef.cpp:361
namespacedef.h
OutputList::writeString
void writeString(const QCString &text)
Definition: outputlist.h:111
OutputList::insertMemberAlign
void insertMemberAlign(bool templ=FALSE)
Definition: outputlist.h:233
LayoutDocEntry::ClassInheritanceGraph
@ ClassInheritanceGraph
Definition: layout.h:44
ConceptDef::includeInfo
virtual const IncludeInfo * includeInfo() const =0
ConceptDefImpl::setTemplateArguments
virtual void setTemplateArguments(const ArgumentList &al)
Definition: conceptdef.cpp:239
DefinitionMixin< ConceptDefMutable >::id
virtual QCString id() const
Definition: definitionimpl.h:200
LayoutDocEntry::MemberDeclStart
@ MemberDeclStart
Definition: layout.h:37
ConceptDef::getNamespaceDef
virtual const NamespaceDef * getNamespaceDef() const =0
Doxygen::globalScope
static NamespaceDefMutable * globalScope
Definition: doxygen.h:102
DefinitionMixin< ConceptDefMutable >::getOuterScope
virtual Definition * getOuterScope() const
Definition: definitionimpl.h:194
ConceptDefImpl::codeSymbolType
virtual CodeSymbolType codeSymbolType() const
Definition: conceptdef.cpp:55
toConceptDef
ConceptDef * toConceptDef(Definition *d)
Definition: conceptdef.cpp:676
ConceptDef::anchor
virtual QCString anchor() const =0
ConceptDefImpl::findSectionsInDocumentation
virtual void findSectionsInDocumentation()
Definition: conceptdef.cpp:640
LayoutDocEntry::NamespaceClasses
@ NamespaceClasses
Definition: layout.h:53
ConceptDefAliasImpl::writeDeclarationLink
virtual void writeDeclarationLink(OutputList &ol, bool &found, const QCString &header, bool localNames) const
Definition: conceptdef.cpp:134
definitionimpl.h
LayoutDocEntry::GroupClasses
@ GroupClasses
Definition: layout.h:63
DefinitionMixin< ConceptDefMutable >::getLanguage
virtual SrcLangExt getLanguage() const
Definition: definitionimpl.h:189
ConceptDefImpl::definitionType
virtual DefType definitionType() const
Definition: conceptdef.cpp:172
err
void err(const char *fmt,...)
Definition: message.cpp:203
TextStream
Text streaming class that buffers data.
Definition: textstream.h:33
DefinitionMixin< ConceptDefMutable >::name
virtual QCString name() const
Definition: definitionimpl.h:155
LayoutDocManager::Concept
@ Concept
Definition: layout.h:203
LayoutDocEntry::ClassIncludes
@ ClassIncludes
Definition: layout.h:43
LayoutDocEntry::FileNamespaces
@ FileNamespaces
Definition: layout.h:57
ConceptDefAliasImpl::isLinkableInProject
virtual bool isLinkableInProject() const
Definition: conceptdef.cpp:122
ConceptDefImpl::writeDetailedDescription
void writeDetailedDescription(OutputList &ol, const QCString &title) const
Definition: conceptdef.cpp:412
LayoutDocEntry::FileConcepts
@ FileConcepts
Definition: layout.h:57
DefinitionMixin< ConceptDefMutable >::briefLine
virtual int briefLine() const
Definition: definitionimpl.h:167
ConceptDef::writeDeclarationLink
virtual void writeDeclarationLink(OutputList &ol, bool &found, const QCString &header, bool localNames) const =0
OutputList::endTypewriter
void endTypewriter()
Definition: outputlist.h:167
endFileWithNavPath
void endFileWithNavPath(const Definition *d, OutputList &ol)
Definition: index.cpp:274
ConceptDefAliasImpl::codeSymbolType
virtual CodeSymbolType codeSymbolType() const
Definition: conceptdef.cpp:104
Translator::trConcept
virtual QCString trConcept(bool first_capital, bool singular)=0
LayoutDocEntry::MemberDefEnd
@ MemberDefEnd
Definition: layout.h:38
LayoutDocEntry::DirSubDirs
@ DirSubDirs
Definition: layout.h:68
DefinitionMixin< ConceptDefMutable >::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
DefinitionAliasMixin< ConceptDef >::deinit
void deinit()
Definition: definitionimpl.h:319
LayoutDocEntry::NamespaceNestedConstantGroups
@ NamespaceNestedConstantGroups
Definition: layout.h:52
OutputList::startTypewriter
void startTypewriter()
Definition: outputlist.h:165
LayoutDocEntry::GroupInlineClasses
@ GroupInlineClasses
Definition: layout.h:63
ConceptDefImpl::getFileDef
virtual const FileDef * getFileDef() const
Definition: conceptdef.cpp:259
OutputList::endTextBlock
void endTextBlock(bool paraBreak=FALSE)
Definition: outputlist.h:411
ConceptDefAliasImpl::isReference
virtual bool isReference() const
Definition: conceptdef.cpp:110
DefinitionMixin< ConceptDefMutable >::isHidden
virtual bool isHidden() const
Definition: definitionimpl.h:180
OutputGenerator::RTF
@ RTF
Definition: outputgen.h:333
ConceptDefImpl
Definition: conceptdef.cpp:31
ConceptLinkedRefMap::declVisible
bool declVisible() const
Definition: conceptdef.cpp:648
LayoutDocEntry::ClassCollaborationGraph
@ ClassCollaborationGraph
Definition: layout.h:45
ConceptDefAliasImpl::getReference
virtual QCString getReference() const
Definition: conceptdef.cpp:108
ConceptDef::hasDetailedDescription
virtual bool hasDetailedDescription() const =0
ConceptDefImpl::writeDocumentation
virtual void writeDocumentation(OutputList &)
Definition: conceptdef.cpp:471
OutputList
Class representing a list of output generators that are written to in parallel.
Definition: outputlist.h:37
ConceptDefAliasImpl::hasDetailedDescription
virtual bool hasDetailedDescription() const
Definition: conceptdef.cpp:112
ConceptDefAliasImpl::getNamespaceDef
virtual const NamespaceDef * getNamespaceDef() const
Definition: conceptdef.cpp:128
LayoutDocEntry::FileStructs
@ FileStructs
Definition: layout.h:57
OutputList::endQuickIndices
void endQuickIndices()
Definition: outputlist.h:349
addHtmlExtensionIfMissing
QCString addHtmlExtensionIfMissing(const QCString &fName)
Definition: util.cpp:5275
LayoutDocEntry::FileIncludes
@ FileIncludes
Definition: layout.h:58
DefinitionMixin< ConceptDefMutable >::writeSourceDef
virtual void writeSourceDef(OutputList &ol, const QCString &scopeName) const
Definition: definitionimpl.h:244
DefinitionMixin< ConceptDefMutable >::briefDescription
virtual QCString briefDescription(bool abbreviate=FALSE) const
Definition: definitionimpl.h:165
OutputList::startTextBlock
void startTextBlock(bool dense=FALSE)
Definition: outputlist.h:409
OutputList::startMemberItem
void startMemberItem(const QCString &anchor, int i1, const QCString &id=QCString())
Definition: outputlist.h:209
OutputList::disable
void disable(OutputGenerator::OutputType o)
Definition: outputlist.cpp:100
OutputList::startMemberHeader
void startMemberHeader(const QCString &anchor, int typ=2)
Definition: outputlist.h:185
message.h
ConceptDef::initializer
virtual QCString initializer() const =0
LayoutDocEntrySection
Definition: layout.h:84
Translator::trConceptReference
virtual QCString trConceptReference(const QCString &conceptName)=0
LayoutDocEntry::MemberDeclEnd
@ MemberDeclEnd
Definition: layout.h:37
Doxygen::parserManager
static ParserManager * parserManager
Definition: doxygen.h:111
ConceptDefImpl::getNamespaceDef
virtual const NamespaceDef * getNamespaceDef() const
Definition: conceptdef.cpp:249
OutputList::writeAnchor
void writeAnchor(const QCString &fileName, const QCString &name)
Definition: outputlist.h:239
ConceptDef::getTemplateParameterList
virtual ArgumentList getTemplateParameterList() const =0
IncludeInfo
Class representing the data associated with a #include statement.
Definition: filedef.h:48
ConceptDefImpl::isLinkable
virtual bool isLinkable() const
Definition: conceptdef.cpp:216
Translator::trMore
virtual QCString trMore()=0
DefinitionMixin< ConceptDefMutable >::getStartBodyLine
virtual int getStartBodyLine() const
Definition: definitionimpl.h:186
DefinitionMutable
Definition: definition.h:308
OutputList::endContents
void endContents()
Definition: outputlist.h:363
ConceptDefAliasImpl::~ConceptDefAliasImpl
virtual ~ConceptDefAliasImpl()
Definition: conceptdef.cpp:98
ConceptDefImpl::m_nspace
NamespaceDef * m_nspace
Definition: conceptdef.cpp:91
LayoutDocEntry::MemberDefStart
@ MemberDefStart
Definition: layout.h:38
LayoutDocEntry::DirFiles
@ DirFiles
Definition: layout.h:68
theTranslator
Translator * theTranslator
Definition: language.cpp:156
Definition::isReference
virtual bool isReference() const =0
Definition::name
virtual QCString name() const =0
ConceptDefImpl::m_incInfo
std::unique_ptr< IncludeInfo > m_incInfo
Definition: conceptdef.cpp:90
SrcLangExt_Cpp
@ SrcLangExt_Cpp
Definition: types.h:50
doxygen.h
LayoutDocEntry::NamespaceExceptions
@ NamespaceExceptions
Definition: layout.h:53
ConceptDefImpl::anchor
virtual QCString anchor() const
Definition: conceptdef.cpp:191
parserintf.h
OutputList::writeRuler
void writeRuler()
Definition: outputlist.h:237
ConceptDefImpl::~ConceptDefImpl
~ConceptDefImpl()
Definition: conceptdef.cpp:168
HLI_ConceptVisible
@ HLI_ConceptVisible
Definition: index.h:169
LayoutDocEntry::FileConstantGroups
@ FileConstantGroups
Definition: layout.h:57
Definition::TypeConcept
@ TypeConcept
Definition: definition.h:95
language.h
Translator::trGeneratedAutomatically
virtual QCString trGeneratedAutomatically(const QCString &s)=0
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
ConceptDefImpl::m_tArgList
ArgumentList m_tArgList
Definition: conceptdef.cpp:93
ConceptDefAliasImpl::ConceptDefAliasImpl
ConceptDefAliasImpl(const Definition *newScope, const ConceptDef *cd)
Definition: conceptdef.cpp:96
LayoutDocEntry::GroupGraph
@ GroupGraph
Definition: layout.h:65
LayoutDocEntry::NamespaceStructs
@ NamespaceStructs
Definition: layout.h:53
ConceptDefImpl::m_fileDef
FileDef * m_fileDef
Definition: conceptdef.cpp:92
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
ConceptDefImpl::m_initializer
QCString m_initializer
Definition: conceptdef.cpp:94
ConceptDefImpl::includeInfo
virtual const IncludeInfo * includeInfo() const
Definition: conceptdef.cpp:201
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
TRUE
#define TRUE
Definition: qcstring.h:36
ConceptDefAliasImpl::getOutputFileBase
virtual QCString getOutputFileBase() const
Definition: conceptdef.cpp:106
OutputList::endMemberList
void endMemberList()
Definition: outputlist.h:199
LayoutDocEntry::GroupNestedGroups
@ GroupNestedGroups
Definition: layout.h:64
ConceptDefImpl::writeAuthorSection
void writeAuthorSection(OutputList &ol) const
Definition: conceptdef.cpp:459
OutputList::endMemberItem
void endMemberItem()
Definition: outputlist.h:211
OutputGenerator::Html
@ Html
Definition: outputgen.h:333
LinkedMap::find
const T * find(const std::string &key) const
Find an object given the key.
Definition: linkedmap.h:60
TextStream::str
std::string str() const
Return the contents of the buffer as a std::string object
Definition: textstream.h:208
ConceptDefImpl::setNamespace
virtual void setNamespace(NamespaceDef *nd)
Definition: conceptdef.cpp:244
getConcept
ConceptDef * getConcept(const QCString &n)
Definition: conceptdef.cpp:739
Definition::DefType
DefType
Definition: definition.h:85
createConceptDef
ConceptDefMutable * createConceptDef(const QCString &fileName, int startLine, int startColumn, const QCString &name, const QCString &tagRef, const QCString &tagFile)
Definition: conceptdef.cpp:84
ConceptDefAliasImpl::anchor
virtual QCString anchor() const
Definition: conceptdef.cpp:120
DefinitionAliasMixin
Definition: definitionimpl.h:312
DefinitionMixin< ConceptDefMutable >::docLine
virtual int docLine() const
Definition: definitionimpl.h:163
OutputList::startContents
void startContents()
Definition: outputlist.h:361
ConceptDefAliasImpl::getFileDef
virtual const FileDef * getFileDef() const
Definition: conceptdef.cpp:130
OutputList::startGroupHeader
void startGroupHeader(int extraLevels=0)
Definition: outputlist.h:169
ConceptDef::title
virtual QCString title() const =0
OutputList::popGeneratorState
void popGeneratorState()
Definition: outputlist.cpp:134
OutputList::startTextLink
void startTextLink(const QCString &file, const QCString &anchor)
Definition: outputlist.h:152
DefinitionMixin< ConceptDefMutable >::localName
virtual QCString localName() const
Definition: definitionimpl.h:157
Definition::codeSymbolType
virtual CodeSymbolType codeSymbolType() const =0
docFindSections
void docFindSections(const QCString &input, const Definition *d, const QCString &fileName)
Definition: docparser.cpp:7681
OutputList::startCodeFragment
void startCodeFragment(const QCString &style)
Definition: outputlist.h:241
Definition::getReference
virtual QCString getReference() const =0
DefinitionMixin< ConceptDefMutable >::documentation
virtual QCString documentation() const
Definition: definitionimpl.h:162
ConceptDefAliasImpl::getCdAlias
const ConceptDef * getCdAlias() const
Definition: conceptdef.cpp:100
ConceptDefImpl::setIncludeFile
virtual void setIncludeFile(FileDef *fd, const QCString &incName, bool local, bool force)
Definition: conceptdef.cpp:221
ConceptDefImpl::writeTagFile
virtual void writeTagFile(TextStream &)
Definition: conceptdef.cpp:269
OutputList::endMemberHeader
void endMemberHeader()
Definition: outputlist.h:187
ConceptDefImpl::writeIncludeFiles
void writeIncludeFiles(OutputList &ol) const
Definition: conceptdef.cpp:319
LayoutDocEntry::ClassAllMembersLink
@ ClassAllMembersLink
Definition: layout.h:45
Config_getBool
#define Config_getBool(name)
Definition: config.h:33
LayoutDocEntry::GroupDirs
@ GroupDirs
Definition: layout.h:64
layout.h
CodeSymbolType::Concept
@ Concept
ConceptDef::isLinkable
virtual bool isLinkable() const =0
LayoutDocEntry::DetailedDesc
@ DetailedDesc
Definition: layout.h:39
ConceptDefImpl::hasDetailedDescription
virtual bool hasDetailedDescription() const
Definition: conceptdef.cpp:182
LayoutDocManager::instance
static LayoutDocManager & instance()
Returns a reference to this singleton.
Definition: layout.cpp:1574
LayoutDocEntry::FileInterfaces
@ FileInterfaces
Definition: layout.h:57
DefinitionMixin< ConceptDefMutable >::hasDocumentation
virtual bool hasDocumentation() const
Definition: definitionimpl.h:176
DefinitionMixin< ConceptDefMutable >::getBodyDef
virtual const FileDef * getBodyDef() const
Definition: definitionimpl.h:188
Definition::getOuterScope
virtual Definition * getOuterScope() const =0
OutputList::writeSynopsis
void writeSynopsis()
Definition: outputlist.h:337
OutputList::parseText
void parseText(const QCString &textStr)
Definition: outputlist.cpp:179
LayoutDocEntry::MemberGroups
@ MemberGroups
Definition: layout.h:36
Config_getString
#define Config_getString(name)
Definition: config.h:32
LayoutDocEntry::ClassInlineClasses
@ ClassInlineClasses
Definition: layout.h:43
ConceptDefAliasImpl::getTemplateParameterList
virtual ArgumentList getTemplateParameterList() const
Definition: conceptdef.cpp:118
ConceptDefAliasImpl::resolveAlias
virtual ConceptDef * resolveAlias()
Definition: conceptdef.cpp:101
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
convertNameToFile
QCString convertNameToFile(const QCString &name, bool allowDots, bool allowUnderscore)
Definition: util.cpp:3604
config.h
OutputList::pushGeneratorState
void pushGeneratorState()
Definition: outputlist.cpp:126
convertToXML
QCString convertToXML(const QCString &s, bool keepEntities)
Definition: util.cpp:3948
FileDef
A model of a file symbol.
Definition: filedef.h:73
ConceptDefImpl::initializer
virtual QCString initializer() const
Definition: conceptdef.cpp:389
DefinitionMixin< ConceptDefMutable >::setReference
virtual void setReference(const QCString &r)
Definition: definitionimpl.h:214
ConceptDefImpl::setFileDef
virtual void setFileDef(FileDef *fd)
Definition: conceptdef.cpp:254
ConceptDef::getFileDef
virtual const FileDef * getFileDef() const =0
LayoutDocEntry::BriefDesc
@ BriefDesc
Definition: layout.h:39
ConceptDefAliasImpl
Definition: conceptdef.cpp:93
LayoutDocEntry::NamespaceConcepts
@ NamespaceConcepts
Definition: layout.h:53
ConceptDefAliasImpl::title
virtual QCString title() const
Definition: conceptdef.cpp:132
conceptdef.h
stripExtension
QCString stripExtension(const QCString &fName)
Definition: util.cpp:5295
LayoutDocEntry::DirGraph
@ DirGraph
Definition: layout.h:68
DefinitionMixin< ConceptDefMutable >::writeNavigationPath
virtual void writeNavigationPath(OutputList &ol) const
Definition: definitionimpl.h:258
ConceptDefImpl::ConceptDefImpl
ConceptDefImpl(const QCString &fileName, int startLine, int startColumn, const QCString &name, const QCString &tagRef=QCString(), const QCString &tagFile=QCString())
Definition: conceptdef.cpp:147
LayoutDocEntry::FileIncludeGraph
@ FileIncludeGraph
Definition: layout.h:58
LayoutDocEntry::FileIncludedByGraph
@ FileIncludedByGraph
Definition: layout.h:59
OutputList::writeObjectLink
void writeObjectLink(const QCString &ref, const QCString &file, const QCString &anchor, const QCString &name)
Definition: outputlist.h:141
LayoutDocEntry::ClassUsedFiles
@ ClassUsedFiles
Definition: layout.h:46
LayoutDocEntry::FileSourceLink
@ FileSourceLink
Definition: layout.h:59
OutputList::startMemberDeclaration
void startMemberDeclaration()
Definition: outputlist.h:310
ConceptDefAliasImpl::initializer
virtual QCString initializer() const
Definition: conceptdef.cpp:126
searchindex.h
LayoutDocEntry::ClassNestedClasses
@ ClassNestedClasses
Definition: layout.h:44
ConceptDefAliasImpl::definitionType
virtual DefType definitionType() const
Definition: conceptdef.cpp:103
util.h
A bunch of utility functions.
DefinitionAliasMixin< ConceptDef >::init
void init()
Definition: definitionimpl.h:318
ConceptDefImpl::resolveAlias
virtual ConceptDef * resolveAlias()
Definition: conceptdef.cpp:51
LayoutDocEntry::FileExceptions
@ FileExceptions
Definition: layout.h:57
toConceptDefMutable
ConceptDefMutable * toConceptDefMutable(Definition *d)
Definition: conceptdef.cpp:713
OutputList::enable
void enable(OutputGenerator::OutputType o)
Definition: outputlist.cpp:108
CodeSymbolType
CodeSymbolType
Definition: types.h:204
LayoutDocEntry::NamespaceInterfaces
@ NamespaceInterfaces
Definition: layout.h:53
LayoutDocEntry::FileInlineClasses
@ FileInlineClasses
Definition: layout.h:60
LayoutDocEntry::GroupNamespaces
@ GroupNamespaces
Definition: layout.h:63
createConceptDefAlias
ConceptDef * createConceptDefAlias(const Definition *newScope, const ConceptDef *cd)
Definition: conceptdef.cpp:139
DefinitionAliasMixin< ConceptDef >::getAlias
const Definition * getAlias() const
Definition: definitionimpl.h:426
OutputList::endCodeFragment
void endCodeFragment(const QCString &style)
Definition: outputlist.h:243
OutputList::endTextLink
void endTextLink()
Definition: outputlist.h:154
ConceptDefImpl::isLinkableInProject
virtual bool isLinkableInProject() const
Definition: conceptdef.cpp:211
LayoutDocEntry::MemberDecl
@ MemberDecl
Definition: layout.h:37
OutputList::startParagraph
void startParagraph(const QCString &classDef=QCString())
Definition: outputlist.h:107
DefinitionMixin
Definition: definitionimpl.h:142
LayoutDocEntry::AuthorSection
@ AuthorSection
Definition: layout.h:40
LayoutDocEntrySection::title
QCString title(SrcLangExt lang) const
Definition: layout.cpp:1661
DefinitionMixin< ConceptDefMutable >::getReference
virtual QCString getReference() const
Definition: definitionimpl.h:182
createDocParser
std::unique_ptr< IDocParser > createDocParser()
Definition: docparser.cpp:179
FALSE
#define FALSE
Definition: qcstring.h:33
Translator::trAuthor
virtual QCString trAuthor(bool first_capital, bool singular)=0
OutputList::endBold
void endBold()
Definition: outputlist.h:304
OutputGenerator::Man
@ Man
Definition: outputgen.h:333
QCString
This is an alternative implementation of QCString.
Definition: qcstring.h:108