Doxygen
Loading...
Searching...
No Matches
FileDefImpl Class Reference
Inheritance diagram for FileDefImpl:
Collaboration diagram for FileDefImpl:

Public Member Functions

 FileDefImpl (const QCString &p, const QCString &n, const QCString &ref=QCString(), const QCString &dn=QCString())
 ~FileDefImpl () override
DefType definitionType () const override
CodeSymbolType codeSymbolType () const override
const QCStringname () const override
QCString displayName (bool=TRUE) const override
QCString fileName () const override
QCString getOutputFileBase () const override
QCString anchor () const override
QCString getSourceFileBase () const override
QCString includeName () const override
QCString includeDependencyGraphFileName () const override
QCString includedByDependencyGraphFileName () const override
QCString absFilePath () const override
const QCStringdocName () const override
bool isSource () const override
bool isDocumentationFile () const override
const DefinitiongetSourceDefinition (int lineNr) const override
const MemberDefgetSourceMember (int lineNr) const override
QCString getPath () const override
QCString getVersion () const override
bool isLinkableInProject () const override
bool isLinkable () const override
bool isIncluded (const QCString &name) const override
DirDefgetDirDef () const override
ModuleDefgetModuleDef () const override
const LinkedRefMap< NamespaceDef > & getUsedNamespaces () const override
const LinkedRefMap< const Definition > & getUsedDefinitions () const override
const IncludeInfoListincludeFileList () const override
const IncludeInfoListincludedByFileList () const override
void getAllIncludeFilesRecursively (StringVector &incFiles) const override
MemberListgetMemberList (MemberListType lt) const override
const MemberListsgetMemberLists () const override
const MemberGroupListgetMemberGroups () const override
const NamespaceLinkedRefMapgetNamespaces () const override
const ConceptLinkedRefMapgetConcepts () const override
const ClassLinkedRefMapgetClasses () const override
QCString title () const override
bool hasDetailedDescription () const override
QCString fileVersion () const override
bool subGrouping () const override
void countMembers () override
int numDocMembers () const override
int numDecMembers () const override
void addSourceRef (int line, const Definition *d, const MemberDef *md) override
void writeDocumentation (OutputList &ol) override
void writeMemberPages (OutputList &ol) override
void writeQuickMemberLinks (OutputList &ol, const MemberDef *currentMd) const override
void writeSummaryLinks (OutputList &ol) const override
void writeTagFile (TextStream &t) override
void writeSourceHeader (OutputList &ol) override
void writeSourceBody (OutputList &ol, ClangTUParser *clangParser) override
void writeSourceFooter (OutputList &ol) override
void parseSource (ClangTUParser *clangParser) override
void setDiskName (const QCString &name) override
void insertMember (MemberDef *md) override
void removeMember (MemberDef *md) override
void insertClass (ClassDef *cd) override
void insertConcept (ConceptDef *cd) override
void insertNamespace (NamespaceDef *nd) override
void computeAnchors () override
void setDirDef (DirDef *dd) override
void setModuleDef (ModuleDef *mod) override
void addUsingDirective (NamespaceDef *nd) override
void addUsingDeclaration (const Definition *d) override
void combineUsingRelations () override
bool generateSourceFile () const override
void sortMemberLists () override
void addIncludeDependency (const FileDef *fd, const QCString &incName, IncludeKind kind) override
void addIncludedByDependency (const FileDef *fd, const QCString &incName, IncludeKind kind) override
void addMembersToMemberGroup () override
void distributeMemberGroupDocumentation () override
void findSectionsInDocumentation () override
void addIncludedUsingDirectives (FileDefSet &visitedFiles) override
void addListReferences () override
bool hasIncludeGraph () const override
bool hasIncludedByGraph () const override
void overrideIncludeGraph (bool e) override
void overrideIncludedByGraph (bool e) override
Public Member Functions inherited from DefinitionMixin< FileDef >
 DefinitionMixin (const QCString &defFileName, int defLine, int defColumn, const QCString &name, const char *b=nullptr, const char *d=nullptr, bool isSymbol=TRUE)
 DefinitionMixin (const DefinitionMixin &other)
 DefinitionMixin (DefinitionMixin &&)=delete
DefinitionMixinoperator= (const DefinitionMixin &other)
DefinitionMixinoperator= (DefinitionMixin &&)=delete
 ~DefinitionMixin () override=default
bool isAlias () const override
bool isAnonymous () const override
const QCStringlocalName () const override
QCString qualifiedName () const override
QCString symbolName () const override
QCString getSourceAnchor () const override
QCString documentation () const override
int docLine () const override
QCString docFile () const override
QCString briefDescription (bool abbreviate=FALSE) const override
QCString briefDescriptionAsTooltip () const override
int briefLine () const override
QCString inbodyDocumentation () const override
QCString inbodyFile () const override
int inbodyLine () const override
QCString briefFile () const override
QCString getDefFileName () const override
QCString getDefFileExtension () const override
int getDefLine () const override
int getDefColumn () const override
bool hasDocumentation () const override
bool hasUserDocumentation () const override
bool isVisibleInProject () const override
bool isVisible () const override
bool isHidden () const override
bool isArtificial () const override
bool isExported () const override
QCString getReference () const override
bool isReference () const override
QCString externalReference (const QCString &relPath) const override
int getStartDefLine () const override
int getStartBodyLine () const override
int getEndBodyLine () const override
const FileDefgetBodyDef () const override
SrcLangExt getLanguage () const override
const GroupListpartOfGroups () const override
bool isLinkableViaGroup () const override
const RefItemVectorxrefListItems () const override
const DefinitionfindInnerCompound (const QCString &name) const override
DefinitiongetOuterScope () const override
const MemberVectorgetReferencesMembers () const override
const MemberVectorgetReferencedByMembers () const override
bool hasSections () const override
bool hasSources () const override
bool hasBriefDescription () const override
QCString id () const override
const SectionRefsgetSectionRefs () const override
void setName (const QCString &name) override
void setId (const QCString &name) override
void setDefFile (const QCString &df, int defLine, int defColumn) override
void setDocumentation (const QCString &doc, const QCString &docFile, int docLine, bool stripWhiteSpace=TRUE) override
void setBriefDescription (const QCString &brief, const QCString &briefFile, int briefLine) override
void setInbodyDocumentation (const QCString &doc, const QCString &docFile, int docLine) override
void setReference (const QCString &r) override
void addSectionsToDefinition (const std::vector< const SectionInfo * > &anchorList) override
void setBodySegment (int defLine, int bls, int ble) override
void setBodyDef (const FileDef *fd) override
void addSourceReferencedBy (MemberDef *md, const QCString &sourceRefName) override
void addSourceReferences (MemberDef *md, const QCString &sourceRefName) override
void setRefItems (const RefItemVector &sli) override
void mergeRefItems (Definition *def) override
void mergeReferences (const Definition *other) override
void mergeReferencedBy (const Definition *other) override
void addInnerCompound (Definition *def) override
void setOuterScope (Definition *def) override
void setHidden (bool b) override
void setArtificial (bool b) override
void setExported (bool b) override
void setLanguage (SrcLangExt lang) override
void writeSourceDef (OutputList &ol) const override
void writeInlineCode (OutputList &ol, const QCString &scopeName) const override
bool hasSourceRefs () const override
bool hasSourceReffedBy () const override
void writeSourceRefs (OutputList &ol, const QCString &scopeName) const override
void writeSourceReffedBy (OutputList &ol, const QCString &scopeName) const override
void makePartOfGroup (GroupDef *gd) override
void writeNavigationPath (OutputList &ol) const override
QCString navigationPathAsString () const override
QCString pathFragment () const override
void writeDocAnchorsToTagFile (TextStream &fs) const override
void setLocalName (const QCString &name) override
void writeToc (OutputList &ol, const LocalToc &lt) const override
void computeTooltip () override
void _setSymbolName (const QCString &name) override
QCString _symbolName () const override

Private Member Functions

void setDiskNameLocal (const QCString &name)
void acquireFileVersion ()
void addMemberToList (MemberListType lt, MemberDef *md)
void writeMemberDeclarations (OutputList &ol, MemberListType lt, const QCString &title)
void writeMemberDocumentation (OutputList &ol, MemberListType lt, const QCString &title)
void writeIncludeFiles (OutputList &ol)
void writeIncludeGraph (OutputList &ol)
void writeIncludedByGraph (OutputList &ol)
void writeMemberGroups (OutputList &ol)
void writeAuthorSection (OutputList &ol)
void writeSourceLink (OutputList &ol)
void writeNamespaceDeclarations (OutputList &ol, const QCString &title, bool isConstantGroup)
void writeClassDeclarations (OutputList &ol, const QCString &title, const ClassLinkedRefMap &list)
void writeConcepts (OutputList &ol, const QCString &title)
void writeInlineClasses (OutputList &ol)
void startMemberDeclarations (OutputList &ol)
void endMemberDeclarations (OutputList &ol)
void startMemberDocumentation (OutputList &ol)
void endMemberDocumentation (OutputList &ol)
void writeDetailedDescription (OutputList &ol, const QCString &title)
void writeBriefDescription (OutputList &ol)
void writeClassesToTagFile (TextStream &t, const ClassLinkedRefMap &list)
void removeMemberFromList (MemberListType lt, MemberDef *md)

Private Attributes

IncludeInfoMap m_includeMap
IncludeInfoList m_includeList
IncludeInfoMap m_includedByMap
IncludeInfoList m_includedByList
LinkedRefMap< NamespaceDefm_usingDirList
LinkedRefMap< const Definitionm_usingDeclList
QCString m_path
QCString m_filePath
QCString m_inclDepFileName
QCString m_inclByDepFileName
QCString m_outputDiskName
QCString m_fileName
QCString m_docname
DefinitionLineMap m_srcDefMap
MemberDefLineMap m_srcMemberMap
bool m_isSource
QCString m_fileVersion
DirDefm_dir = nullptr
ModuleDefm_moduleDef = nullptr
MemberLists m_memberLists
MemberGroupList m_memberGroups
NamespaceLinkedRefMap m_namespaces
ClassLinkedRefMap m_classes
ClassLinkedRefMap m_interfaces
ClassLinkedRefMap m_structs
ClassLinkedRefMap m_exceptions
ConceptLinkedRefMap m_concepts
bool m_subGrouping
bool m_hasIncludeGraph = Config_getBool(INCLUDE_GRAPH)
bool m_hasIncludedByGraph = Config_getBool(INCLUDED_BY_GRAPH)

Additional Inherited Members

Public Types inherited from Definition
enum  DefType {
  TypeClass = 0 , TypeFile = 1 , TypeNamespace = 2 , TypeModule = 3 ,
  TypeMember = 4 , TypeGroup = 5 , TypePackage = 6 , TypePage = 7 ,
  TypeDir = 8 , TypeConcept = 9
}

Detailed Description

Definition at line 122 of file filedef.cpp.

Constructor & Destructor Documentation

◆ FileDefImpl()

FileDefImpl::FileDefImpl ( const QCString & p,
const QCString & nm,
const QCString & lref = QCString(),
const QCString & dn = QCString() )

create a new file definition, where p is the file path, nm the file name, and lref is an HTML anchor name if the file was read from a tag file or nullptr otherwise

Definition at line 279 of file filedef.cpp.

281 : DefinitionMixin(QCString(p)+nm,1,1,nm,nullptr,nullptr,!p.isEmpty())
282{
284 m_filePath=p+nm;
285 m_fileName=nm;
286
287 setReference(lref);
288 setDiskNameLocal(!dn.isEmpty() ? dn : nm);
289 m_isSource = guessSection(nm).isSource();
290 m_docname = nm;
291 m_dir = nullptr;
292 if (Config_getBool(FULL_PATH_NAMES))
293 {
295 }
297 Config_getBool(FULL_PATH_NAMES) ? m_fileName : DefinitionMixin::name()));
299 m_subGrouping=Config_getBool(SUBGROUPING);
300}
const QCString & name() const override
void setLanguage(SrcLangExt lang) override
void setReference(const QCString &r) override
DefinitionMixin(const QCString &defFileName, int defLine, int defColumn, const QCString &name, const char *b=nullptr, const char *d=nullptr, bool isSymbol=TRUE)
DirDef * m_dir
Definition filedef.cpp:252
QCString m_path
Definition filedef.cpp:241
void setDiskNameLocal(const QCString &name)
Definition filedef.cpp:307
void acquireFileVersion()
Definition filedef.cpp:1665
QCString m_fileName
Definition filedef.cpp:246
bool m_isSource
Definition filedef.cpp:250
bool m_subGrouping
Definition filedef.cpp:262
QCString m_docname
Definition filedef.cpp:247
QCString m_filePath
Definition filedef.cpp:242
bool isEmpty() const
Returns TRUE iff the string is empty.
Definition qcstring.h:150
#define Config_getBool(name)
Definition config.h:33
SrcLangExt getLanguageFromFileName(const QCString &fileName, SrcLangExt defLang)
Definition util.cpp:5714
static QCString stripFromPath(const QCString &p, const StringVector &l)
Definition util.cpp:309
EntryType guessSection(const QCString &name)
Definition util.cpp:349
QCString removeLongPathMarker(QCString path)
Definition util.cpp:298

References acquireFileVersion(), Config_getBool, DefinitionMixin< FileDef >::DefinitionMixin(), getLanguageFromFileName(), guessSection(), QCString::isEmpty(), m_dir, m_docname, m_fileName, m_filePath, m_isSource, m_path, m_subGrouping, DefinitionMixin< Base >::name(), removeLongPathMarker(), setDiskNameLocal(), DefinitionMixin< FileDef >::setLanguage(), DefinitionMixin< FileDef >::setReference(), and stripFromPath().

◆ ~FileDefImpl()

FileDefImpl::~FileDefImpl ( )
override

destroy the file definition

Definition at line 303 of file filedef.cpp.

304{
305}

Member Function Documentation

◆ absFilePath()

QCString FileDefImpl::absFilePath ( ) const
inlineoverridevirtual

Returns the absolute path including the file name.

Implements FileDef.

Definition at line 141 of file filedef.cpp.

141{ return m_filePath; }

References m_filePath.

Referenced by parseSource(), and writeSourceBody().

◆ acquireFileVersion()

void FileDefImpl::acquireFileVersion ( )
private

Definition at line 1665 of file filedef.cpp.

1666{
1667 QCString vercmd = Config_getString(FILE_VERSION_FILTER);
1668 if (!vercmd.isEmpty() && !m_filePath.isEmpty() && !isReference() &&
1669 m_filePath!="generated" && m_filePath!="graph_legend.dox")
1670 {
1671 msg("Version of {} : ",m_filePath);
1672 QCString cmd = vercmd+" \""+m_filePath+"\"";
1673 Debug::print(Debug::ExtCmd,0,"Executing popen(`{}`)\n",cmd);
1674 FILE *f=Portable::popen(cmd,"r");
1675 if (!f)
1676 {
1677 err("could not execute {}\n",vercmd);
1678 return;
1679 }
1680 const int bufSize=1024;
1681 char buf[bufSize];
1682 int numRead = static_cast<int>(fread(buf,1,bufSize-1,f));
1684 if (numRead>0 && numRead<bufSize)
1685 {
1686 buf[numRead]='\0';
1687 m_fileVersion=QCString(buf,numRead).stripWhiteSpace();
1688 if (!m_fileVersion.isEmpty())
1689 {
1690 msg("{}\n",m_fileVersion);
1691 return;
1692 }
1693 }
1694 msg("no version available\n");
1695 }
1696}
@ ExtCmd
Definition debug.h:36
static void print(DebugMask mask, int prio, fmt::format_string< Args... > fmt, Args &&... args)
Definition debug.h:76
virtual bool isReference() const =0
QCString m_fileVersion
Definition filedef.cpp:251
#define Config_getString(name)
Definition config.h:32
#define msg(fmt,...)
Definition message.h:94
#define err(fmt,...)
Definition message.h:127
FILE * popen(const QCString &name, const QCString &type)
Definition portable.cpp:496
int pclose(FILE *stream)
Definition portable.cpp:505

References Config_getString, err, Debug::ExtCmd, QCString::isEmpty(), DefinitionMixin< FileDef >::isReference(), m_filePath, m_fileVersion, msg, Portable::pclose(), Portable::popen(), Debug::print(), and QCString::stripWhiteSpace().

Referenced by FileDefImpl().

◆ addIncludedByDependency()

void FileDefImpl::addIncludedByDependency ( const FileDef * fd,
const QCString & incName,
IncludeKind kind )
overridevirtual

Implements FileDef.

Definition at line 1571 of file filedef.cpp.

1572{
1573 //printf("FileDefImpl::addIncludedByDependency(%p,%s,%d)\n",fd,incName,local);
1574 QCString iName = fd ? fd->absFilePath() : incName;
1575 if (!iName.isEmpty() && m_includedByMap.find(iName.str())==m_includedByMap.end())
1576 {
1577 m_includedByList.emplace_back(fd,incName,kind);
1578 m_includedByMap.emplace(iName.str(),&m_includedByList.back());
1579 }
1580}
virtual QCString absFilePath() const =0
IncludeInfoList m_includedByList
Definition filedef.cpp:238
IncludeInfoMap m_includedByMap
Definition filedef.cpp:237
const std::string & str() const
Definition qcstring.h:537

References FileDef::absFilePath(), QCString::isEmpty(), m_includedByList, m_includedByMap, and QCString::str().

◆ addIncludeDependency()

void FileDefImpl::addIncludeDependency ( const FileDef * fd,
const QCString & incName,
IncludeKind kind )
overridevirtual

Implements FileDef.

Definition at line 1512 of file filedef.cpp.

1513{
1514 //printf("FileDefImpl::addIncludeDependency(%p,%s,%d)\n",(void*)fd,qPrint(incName),kind);
1515 QCString iName = fd ? fd->absFilePath() : incName;
1516 if (!iName.isEmpty() && m_includeMap.find(iName.str())==m_includeMap.end())
1517 {
1518 m_includeList.emplace_back(fd,incName,kind);
1519 m_includeMap.emplace(iName.str(),&m_includeList.back());
1520 }
1521}
IncludeInfoMap m_includeMap
Definition filedef.cpp:235
IncludeInfoList m_includeList
Definition filedef.cpp:236

References FileDef::absFilePath(), QCString::isEmpty(), m_includeList, m_includeMap, and QCString::str().

◆ addIncludedUsingDirectives()

void FileDefImpl::addIncludedUsingDirectives ( FileDefSet & visitedFiles)
overridevirtual

Implements FileDef.

Definition at line 1523 of file filedef.cpp.

1524{
1525 if (visitedFiles.find(this)!=visitedFiles.end()) return; // file already processed
1526 visitedFiles.insert(this);
1527 //printf("( FileDefImpl::addIncludedUsingDirectives for file %s\n",qPrint(name()));
1528
1529 if (!m_includeList.empty()) // file contains #includes
1530 {
1531 {
1532 for (const auto &ii : m_includeList) // foreach #include...
1533 {
1534 if (ii.fileDef) // ...that is a known file
1535 {
1536 // recurse into this file
1537 const_cast<FileDef*>(ii.fileDef)->addIncludedUsingDirectives(visitedFiles);
1538 }
1539 }
1540 }
1541 {
1542 // iterate through list from last to first
1543 for (auto ii_it = m_includeList.rbegin(); ii_it!=m_includeList.rend(); ++ii_it)
1544 {
1545 auto &ii = *ii_it;
1546 if (ii.fileDef && ii.fileDef!=this)
1547 {
1548 // add using directives
1549 auto unl = ii.fileDef->getUsedNamespaces();
1550 for (auto it = unl.rbegin(); it!=unl.rend(); ++it)
1551 {
1552 auto *nd = *it;
1553 //printf(" adding using directive for %s\n",qPrint(nd->qualifiedName()));
1554 m_usingDirList.prepend(nd->qualifiedName(),nd);
1555 }
1556 // add using declarations
1557 auto udl = ii.fileDef->getUsedDefinitions();
1558 for (auto it = udl.rbegin(); it!=udl.rend(); ++it)
1559 {
1560 auto *d = *it;
1561 m_usingDeclList.prepend(d->qualifiedName(),d);
1562 }
1563 }
1564 }
1565 }
1566 }
1567 //printf(") end FileDefImpl::addIncludedUsingDirectives for file %s\n",qPrint(name()));
1568}
void addIncludedUsingDirectives(FileDefSet &visitedFiles) override
Definition filedef.cpp:1523
LinkedRefMap< const Definition > m_usingDeclList
Definition filedef.cpp:240
LinkedRefMap< NamespaceDef > m_usingDirList
Definition filedef.cpp:239

References addIncludedUsingDirectives(), QCString::insert(), m_includeList, m_usingDeclList, and m_usingDirList.

Referenced by addIncludedUsingDirectives().

◆ addListReferences()

void FileDefImpl::addListReferences ( )
overridevirtual

Implements FileDef.

Definition at line 1600 of file filedef.cpp.

1601{
1602 {
1603 const RefItemVector &xrefItems = xrefListItems();
1604 addRefItem(xrefItems,
1608 QCString(),
1609 nullptr
1610 );
1611 }
1612 for (const auto &mg : m_memberGroups)
1613 {
1614 mg->addListReferences(this);
1615 }
1616 for (auto &ml : m_memberLists)
1617 {
1618 if (ml->listType().isDocumentation())
1619 {
1620 ml->addListReferences(this);
1621 }
1622 }
1623}
const RefItemVector & xrefListItems() const override
QCString getOutputFileBase() const override
Definition filedef.cpp:1711
MemberGroupList m_memberGroups
Definition filedef.cpp:255
const QCString & name() const override
Definition filedef.cpp:1460
MemberLists m_memberLists
Definition filedef.cpp:254
virtual QCString trFile(bool first_capital, bool singular)=0
Translator * theTranslator
Definition language.cpp:71
#define TRUE
Definition qcstring.h:37
std::vector< RefItem * > RefItemVector
Definition reflist.h:133
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:5311

References addRefItem(), getOutputFileBase(), m_memberGroups, m_memberLists, name(), theTranslator, TRUE, and DefinitionMixin< FileDef >::xrefListItems().

◆ addMembersToMemberGroup()

void FileDefImpl::addMembersToMemberGroup ( )
overridevirtual

Implements FileDef.

Definition at line 1277 of file filedef.cpp.

1278{
1279 for (auto &ml : m_memberLists)
1280 {
1281 if (ml->listType().isDeclaration())
1282 {
1284 }
1285 }
1286
1287 // add members inside sections to their groups
1288 for (const auto &mg : m_memberGroups)
1289 {
1290 if (mg->allMembersInSameSection() && m_subGrouping)
1291 {
1292 //printf("----> addToDeclarationSection(%s)\n",qPrint(mg->header()));
1293 mg->addToDeclarationSection();
1294 }
1295 }
1296}
void addMembersToMemberGroup() override
Definition filedef.cpp:1277

References addMembersToMemberGroup(), m_memberGroups, m_memberLists, and m_subGrouping.

Referenced by addMembersToMemberGroup().

◆ addMemberToList()

void FileDefImpl::addMemberToList ( MemberListType lt,
MemberDef * md )
private

Definition at line 1722 of file filedef.cpp.

1723{
1724 bool sortBriefDocs = Config_getBool(SORT_BRIEF_DOCS);
1725 bool sortMemberDocs = Config_getBool(SORT_MEMBER_DOCS);
1726 const auto &ml = m_memberLists.get(lt,MemberListContainer::File);
1727 ml->setNeedsSorting(
1728 (ml->listType().isDeclaration() && sortBriefDocs) ||
1729 (ml->listType().isDocumentation() && sortMemberDocs));
1730 ml->push_back(md);
1731 if (ml->listType().isDeclaration())
1732 {
1733 MemberDefMutable *mdm = toMemberDefMutable(md);
1734 if (mdm)
1735 {
1736 mdm->setSectionList(this,ml.get());
1737 }
1738 }
1739}
virtual void setSectionList(const Definition *container, const MemberList *sl)=0
MemberDefMutable * toMemberDefMutable(Definition *d)

References Config_getBool, File, m_memberLists, MemberDefMutable::setSectionList(), and toMemberDefMutable().

Referenced by insertMember().

◆ addSourceRef()

void FileDefImpl::addSourceRef ( int line,
const Definition * d,
const MemberDef * md )
overridevirtual

Implements FileDef.

Definition at line 1468 of file filedef.cpp.

1469{
1470 //printf("FileDefImpl::addSourceRef(%d,%s,%s)\n",line,qPrint(d?d->name():"nullptr"),qPrint(md?md->name():"nullptr"));
1471 if (d)
1472 {
1473 m_srcDefMap.emplace(line,d);
1474 if (md) m_srcMemberMap.emplace(line,md);
1475 //printf("Adding member %s with anchor %s at line %d to file %s\n",
1476 // md?qPrint(md->name()):"<none>",md?qPrint(md->anchor()):"<none>",line,qPrint(name()));
1477 }
1478}
MemberDefLineMap m_srcMemberMap
Definition filedef.cpp:249
DefinitionLineMap m_srcDefMap
Definition filedef.cpp:248

References m_srcDefMap, and m_srcMemberMap.

◆ addUsingDeclaration()

void FileDefImpl::addUsingDeclaration ( const Definition * d)
overridevirtual

Implements FileDef.

Definition at line 1507 of file filedef.cpp.

1508{
1509 m_usingDeclList.add(d->qualifiedName(),d);
1510}
virtual QCString qualifiedName() const =0

References m_usingDeclList, and Definition::qualifiedName().

Referenced by combineUsingRelations().

◆ addUsingDirective()

void FileDefImpl::addUsingDirective ( NamespaceDef * nd)
overridevirtual

Implements FileDef.

Definition at line 1495 of file filedef.cpp.

1496{
1497 m_usingDirList.add(nd->qualifiedName(),nd);
1498 //printf("%p: FileDefImpl::addUsingDirective: %s:%d\n",this,qPrint(name()),usingDirList->count());
1499}

References m_usingDirList, and Definition::qualifiedName().

Referenced by combineUsingRelations().

◆ anchor()

QCString FileDefImpl::anchor ( ) const
inlineoverridevirtual

Returns the anchor within a page where this item can be found

Implements Definition.

Definition at line 136 of file filedef.cpp.

136{ return QCString(); }

◆ codeSymbolType()

CodeSymbolType FileDefImpl::codeSymbolType ( ) const
inlineoverridevirtual

Used for syntax highlighting symbol class

Implements Definition.

Definition at line 130 of file filedef.cpp.

130{ return CodeSymbolType::Default; }

References Default.

◆ combineUsingRelations()

void FileDefImpl::combineUsingRelations ( )
overridevirtual

Implements FileDef.

Definition at line 1627 of file filedef.cpp.

1628{
1629 LinkedRefMap<NamespaceDef> usingDirList = m_usingDirList;
1630 NamespaceDefSet visitedNamespaces;
1631 for (auto &nd : usingDirList)
1632 {
1633 NamespaceDefMutable *ndm = toNamespaceDefMutable(nd);
1634 if (ndm)
1635 {
1636 ndm->combineUsingRelations(visitedNamespaces);
1637 }
1638 }
1639
1640 for (auto &nd : usingDirList)
1641 {
1642 // add used namespaces of namespace nd to this namespace
1643 for (const auto &und : nd->getUsedNamespaces())
1644 {
1645 addUsingDirective(und);
1646 }
1647 // add used classes of namespace nd to this namespace
1648 for (const auto &ud : nd->getUsedDefinitions())
1649 {
1651 }
1652 }
1653}
void addUsingDirective(NamespaceDef *nd) override
Definition filedef.cpp:1495
void addUsingDeclaration(const Definition *d) override
Definition filedef.cpp:1507
virtual void combineUsingRelations(NamespaceDefSet &visitedNamespace)=0
NamespaceDefMutable * toNamespaceDefMutable(Definition *d)
std::unordered_set< const NamespaceDef * > NamespaceDefSet

References addUsingDeclaration(), addUsingDirective(), NamespaceDefMutable::combineUsingRelations(), m_usingDirList, and toNamespaceDefMutable().

◆ computeAnchors()

void FileDefImpl::computeAnchors ( )
overridevirtual

Compute the HTML anchor names for all members in the class

Implements FileDef.

Definition at line 329 of file filedef.cpp.

330{
331 MemberList *ml = getMemberList(MemberListType::AllMembersList());
332 if (ml) ml->setAnchors();
333}
MemberList * getMemberList(MemberListType lt) const override
Definition filedef.cpp:1780
void setAnchors()

References getMemberList(), and MemberList::setAnchors().

◆ countMembers()

void FileDefImpl::countMembers ( )
overridevirtual

Implements FileDef.

Definition at line 1871 of file filedef.cpp.

1872{
1873 for (auto &ml : m_memberLists)
1874 {
1875 ml->countDecMembers();
1876 ml->countDocMembers();
1877 }
1878 for (const auto &mg : m_memberGroups)
1879 {
1880 mg->countDecMembers();
1881 mg->countDocMembers();
1882 }
1883}

References m_memberGroups, and m_memberLists.

◆ definitionType()

DefType FileDefImpl::definitionType ( ) const
inlineoverridevirtual

Use this for dynamic inspection of the type of the derived class

Implements Definition.

Definition at line 129 of file filedef.cpp.

129{ return TypeFile; }

References definitionType(), and Definition::TypeFile.

Referenced by definitionType().

◆ displayName()

QCString FileDefImpl::displayName ( bool includeScope = TRUE) const
inlineoverridevirtual

Returns the name of the definition as it appears in the output

Implements Definition.

Definition at line 133 of file filedef.cpp.

133{ return localName(); }
const QCString & localName() const override

References DefinitionMixin< FileDef >::localName(), and TRUE.

Referenced by writeDocumentation().

◆ distributeMemberGroupDocumentation()

void FileDefImpl::distributeMemberGroupDocumentation ( )
overridevirtual

Implements FileDef.

Definition at line 335 of file filedef.cpp.

336{
337 //printf("FileDefImpl::distributeMemberGroupDocumentation()\n");
338 for (const auto &mg : m_memberGroups)
339 {
340 mg->distributeMemberGroupDocumentation();
341 }
342}

References m_memberGroups.

◆ docName()

const QCString & FileDefImpl::docName ( ) const
inlineoverridevirtual

Returns the name as it is used in the documentation

Implements FileDef.

Definition at line 142 of file filedef.cpp.

142{ return m_docname; }

References m_docname.

◆ endMemberDeclarations()

void FileDefImpl::endMemberDeclarations ( OutputList & ol)
private

Definition at line 735 of file filedef.cpp.

736{
738}
void endMemberSections()
Definition outputlist.h:464

References OutputList::endMemberSections().

Referenced by writeDocumentation().

◆ endMemberDocumentation()

void FileDefImpl::endMemberDocumentation ( OutputList & ol)
private

Definition at line 749 of file filedef.cpp.

750{
751 if (Config_getBool(SEPARATE_MEMBER_PAGES))
752 {
755 }
756}
static bool suppressDocWarnings
Definition doxygen.h:132
void enable(OutputType o)
#define FALSE
Definition qcstring.h:34

References Config_getBool, OutputList::enable(), FALSE, Html, and Doxygen::suppressDocWarnings.

Referenced by writeDocumentation().

◆ fileName()

QCString FileDefImpl::fileName ( ) const
inlineoverridevirtual

Returns the unique file name (this may include part of the path).

Implements FileDef.

Definition at line 134 of file filedef.cpp.

134{ return m_fileName; }

References m_fileName.

◆ fileVersion()

QCString FileDefImpl::fileVersion ( ) const
overridevirtual

Implements FileDef.

Definition at line 1856 of file filedef.cpp.

1857{
1858 return m_fileVersion;
1859}

References m_fileVersion.

◆ findSectionsInDocumentation()

void FileDefImpl::findSectionsInDocumentation ( )
overridevirtual

Implements FileDef.

Definition at line 344 of file filedef.cpp.

345{
349 for (const auto &mg : m_memberGroups)
350 {
351 mg->findSectionsInDocumentation(this);
352 }
353
354 for (auto &ml : m_memberLists)
355 {
356 if (ml->listType().isDeclaration())
357 {
358 ml->findSectionsInDocumentation(this);
359 }
360 }
361}
QCString docFile() const override
QCString briefDescription(bool abbreviate=FALSE) const override
QCString inbodyDocumentation() const override
QCString documentation() const override
void docFindSections(const QCString &input, const Definition *d, const QCString &fileName)

References DefinitionMixin< FileDef >::briefDescription(), DefinitionMixin< FileDef >::docFile(), docFindSections(), DefinitionMixin< FileDef >::documentation(), DefinitionMixin< FileDef >::inbodyDocumentation(), m_memberGroups, and m_memberLists.

◆ generateSourceFile()

bool FileDefImpl::generateSourceFile ( ) const
overridevirtual

Implements FileDef.

Definition at line 1588 of file filedef.cpp.

1589{
1590 bool sourceBrowser = Config_getBool(SOURCE_BROWSER);
1591 bool verbatimHeaders = Config_getBool(VERBATIM_HEADERS);
1592 return !isReference() &&
1593 (sourceBrowser ||
1594 (verbatimHeaders && (guessSection(name()).isHeader() || !m_includedByMap.empty()))
1595 ) &&
1597}
bool isReference() const override
bool isDocumentationFile() const override
Definition filedef.cpp:1655

References Config_getBool, guessSection(), isDocumentationFile(), DefinitionMixin< FileDef >::isReference(), m_includedByMap, and name().

Referenced by writeSourceHeader(), and writeSourceLink().

◆ getAllIncludeFilesRecursively()

void FileDefImpl::getAllIncludeFilesRecursively ( StringVector & incFiles) const
overridevirtual

Implements FileDef.

Definition at line 1838 of file filedef.cpp.

1839{
1840 StringUnorderedSet includes;
1841 ::getAllIncludeFilesRecursively(includes,this,incFiles);
1842}
void getAllIncludeFilesRecursively(StringVector &incFiles) const override
Definition filedef.cpp:1838
std::unordered_set< std::string > StringUnorderedSet
Definition containers.h:29

References getAllIncludeFilesRecursively().

Referenced by getAllIncludeFilesRecursively().

◆ getClasses()

const ClassLinkedRefMap & FileDefImpl::getClasses ( ) const
inlineoverridevirtual

Implements FileDef.

Definition at line 164 of file filedef.cpp.

164{ return m_classes; }
ClassLinkedRefMap m_classes
Definition filedef.cpp:257

References m_classes.

◆ getConcepts()

const ConceptLinkedRefMap & FileDefImpl::getConcepts ( ) const
inlineoverridevirtual

Implements FileDef.

Definition at line 163 of file filedef.cpp.

163{ return m_concepts; }
ConceptLinkedRefMap m_concepts
Definition filedef.cpp:261

References m_concepts.

◆ getDirDef()

DirDef * FileDefImpl::getDirDef ( ) const
inlineoverridevirtual

Implements FileDef.

Definition at line 152 of file filedef.cpp.

152{ return m_dir; }

References m_dir.

Referenced by writeDocumentation(), and writeSourceHeader().

◆ getMemberGroups()

const MemberGroupList & FileDefImpl::getMemberGroups ( ) const
inlineoverridevirtual

Implements FileDef.

Definition at line 161 of file filedef.cpp.

161{ return m_memberGroups; }

References m_memberGroups.

◆ getMemberList()

MemberList * FileDefImpl::getMemberList ( MemberListType lt) const
overridevirtual

Implements FileDef.

Definition at line 1780 of file filedef.cpp.

1781{
1782 for (auto &ml : m_memberLists)
1783 {
1784 if (ml->listType()==lt)
1785 {
1786 return ml.get();
1787 }
1788 }
1789 return nullptr;
1790}

References m_memberLists.

Referenced by computeAnchors(), insertMember(), numDecMembers(), numDocMembers(), removeMemberFromList(), writeDocumentation(), writeMemberDeclarations(), writeMemberDocumentation(), writeQuickMemberLinks(), writeSummaryLinks(), and writeTagFile().

◆ getMemberLists()

const MemberLists & FileDefImpl::getMemberLists ( ) const
inlineoverridevirtual

Implements FileDef.

Definition at line 160 of file filedef.cpp.

160{ return m_memberLists; }

References m_memberLists.

◆ getModuleDef()

ModuleDef * FileDefImpl::getModuleDef ( ) const
inlineoverridevirtual

Implements FileDef.

Definition at line 153 of file filedef.cpp.

153{ return m_moduleDef; }
ModuleDef * m_moduleDef
Definition filedef.cpp:253

References m_moduleDef.

◆ getNamespaces()

const NamespaceLinkedRefMap & FileDefImpl::getNamespaces ( ) const
inlineoverridevirtual

Implements FileDef.

Definition at line 162 of file filedef.cpp.

162{ return m_namespaces; }
NamespaceLinkedRefMap m_namespaces
Definition filedef.cpp:256

References m_namespaces.

◆ getOutputFileBase()

QCString FileDefImpl::getOutputFileBase ( ) const
overridevirtual

Returns the base file name (without extension) of this definition. as it is referenced to/written to disk.

Implements Definition.

Definition at line 1711 of file filedef.cpp.

1712{
1713 return m_outputDiskName;
1714}
QCString m_outputDiskName
Definition filedef.cpp:245

References m_outputDiskName.

Referenced by addListReferences(), writeDocumentation(), writeSourceHeader(), and writeTagFile().

◆ getPath()

QCString FileDefImpl::getPath ( ) const
inlineoverridevirtual

Returns the absolute path of this file.

Implements FileDef.

Definition at line 147 of file filedef.cpp.

147{ return m_path; }

References m_path.

Referenced by writeTagFile().

◆ getSourceDefinition()

const Definition * FileDefImpl::getSourceDefinition ( int lineNr) const
overridevirtual

Implements FileDef.

Definition at line 1480 of file filedef.cpp.

1481{
1482 auto it = m_srcDefMap.find(lineNr);
1483 //printf("%s::getSourceDefinition(%d)=%s\n",qPrint(name()),lineNr,it!=m_srcDefMap.end()?qPrint(it->second->name()):"none");
1484 return it!=m_srcDefMap.end() ? it->second : nullptr;
1485}

References m_srcDefMap.

◆ getSourceFileBase()

QCString FileDefImpl::getSourceFileBase ( ) const
overridevirtual

Returns the name of the source listing of this definition.

Reimplemented from DefinitionMixin< FileDef >.

Definition at line 1699 of file filedef.cpp.

1700{
1701 if (Htags::useHtags)
1702 {
1704 }
1705 else
1706 {
1707 return m_outputDiskName+"_source";
1708 }
1709}
static QCString path2URL(const QCString &path)
Definition htags.cpp:157
static bool useHtags
Definition htags.h:23

References m_filePath, m_outputDiskName, Htags::path2URL(), and Htags::useHtags.

Referenced by includeName(), writeDetailedDescription(), and writeSourceHeader().

◆ getSourceMember()

const MemberDef * FileDefImpl::getSourceMember ( int lineNr) const
overridevirtual

Implements FileDef.

Definition at line 1487 of file filedef.cpp.

1488{
1489 auto it = m_srcMemberMap.find(lineNr);
1490 //printf("%s::getSourceMember(%d)=%s\n",qPrint(name()),lineNr,it!=m_srcMemberMap.end()?qPrint(it->second->name()):"none");
1491 return it!=m_srcMemberMap.end() ? it->second : nullptr;
1492}

References m_srcMemberMap.

◆ getUsedDefinitions()

const LinkedRefMap< const Definition > & FileDefImpl::getUsedDefinitions ( ) const
inlineoverridevirtual

Implements FileDef.

Definition at line 155 of file filedef.cpp.

155{ return m_usingDeclList; }

References m_usingDeclList.

◆ getUsedNamespaces()

const LinkedRefMap< NamespaceDef > & FileDefImpl::getUsedNamespaces ( ) const
overridevirtual

Implements FileDef.

Definition at line 1501 of file filedef.cpp.

1502{
1503 //printf("%p: FileDefImpl::getUsedNamespace: %s:%d\n",this,qPrint(name()),usingDirList?usingDirList->count():0);
1504 return m_usingDirList;
1505}

References m_usingDirList.

◆ getVersion()

QCString FileDefImpl::getVersion ( ) const
inlineoverridevirtual

Returns version of this file.

Implements FileDef.

Definition at line 148 of file filedef.cpp.

148{ return m_fileVersion; }

References m_fileVersion.

◆ hasDetailedDescription()

bool FileDefImpl::hasDetailedDescription ( ) const
overridevirtual

Implements FileDef.

Definition at line 363 of file filedef.cpp.

364{
365 bool repeatBrief = Config_getBool(REPEAT_BRIEF);
366 bool sourceBrowser = Config_getBool(SOURCE_BROWSER);
367 return ((!briefDescription().isEmpty() && repeatBrief) ||
368 !documentation().stripWhiteSpace().isEmpty() || // avail empty section
369 (sourceBrowser && getStartBodyLine()!=-1 && getBodyDef())
370 );
371}
const FileDef * getBodyDef() const override
int getStartBodyLine() const override
std::string_view stripWhiteSpace(std::string_view s)
Given a string view s, returns a new, narrower view on that string, skipping over any leading or trai...
Definition stringutil.h:72

References DefinitionMixin< FileDef >::briefDescription(), Config_getBool, DefinitionMixin< FileDef >::documentation(), DefinitionMixin< FileDef >::getBodyDef(), DefinitionMixin< FileDef >::getStartBodyLine(), and stripWhiteSpace().

Referenced by writeDetailedDescription().

◆ hasIncludedByGraph()

bool FileDefImpl::hasIncludedByGraph ( ) const
overridevirtual

Implements FileDef.

Definition at line 1912 of file filedef.cpp.

1913{
1914 return m_hasIncludedByGraph;
1915}
bool m_hasIncludedByGraph
Definition filedef.cpp:264

References m_hasIncludedByGraph.

◆ hasIncludeGraph()

bool FileDefImpl::hasIncludeGraph ( ) const
overridevirtual

Implements FileDef.

Definition at line 1907 of file filedef.cpp.

1908{
1909 return m_hasIncludeGraph;
1910}
bool m_hasIncludeGraph
Definition filedef.cpp:263

References m_hasIncludeGraph.

◆ includedByDependencyGraphFileName()

QCString FileDefImpl::includedByDependencyGraphFileName ( ) const
overridevirtual

Implements FileDef.

Definition at line 1866 of file filedef.cpp.

1867{
1868 return m_inclByDepFileName;
1869}
QCString m_inclByDepFileName
Definition filedef.cpp:244

References m_inclByDepFileName.

◆ includedByFileList()

const IncludeInfoList & FileDefImpl::includedByFileList ( ) const
inlineoverridevirtual

Implements FileDef.

Definition at line 157 of file filedef.cpp.

157{ return m_includedByList; }

References m_includedByList.

◆ includeDependencyGraphFileName()

QCString FileDefImpl::includeDependencyGraphFileName ( ) const
overridevirtual

Implements FileDef.

Definition at line 1861 of file filedef.cpp.

1862{
1863 return m_inclDepFileName;
1864}
QCString m_inclDepFileName
Definition filedef.cpp:243

References m_inclDepFileName.

◆ includeFileList()

const IncludeInfoList & FileDefImpl::includeFileList ( ) const
inlineoverridevirtual

Implements FileDef.

Definition at line 156 of file filedef.cpp.

156{ return m_includeList; }

References m_includeList.

◆ includeName()

QCString FileDefImpl::includeName ( ) const
overridevirtual

Returns the name of the verbatim copy of this file (if any).

Implements FileDef.

Definition at line 1717 of file filedef.cpp.

1718{
1719 return getSourceFileBase();
1720}
QCString getSourceFileBase() const override
Definition filedef.cpp:1699

References getSourceFileBase().

Referenced by writeSourceLink().

◆ insertClass()

void FileDefImpl::insertClass ( ClassDef * cd)
overridevirtual

Adds compound definition cd to the list of all compounds of this file

Implements FileDef.

Definition at line 1422 of file filedef.cpp.

1423{
1424 if (cd->isHidden()) return;
1425
1426 ClassLinkedRefMap *list = &m_classes;
1427
1428 if (Config_getBool(OPTIMIZE_OUTPUT_SLICE))
1429 {
1431 {
1432 list = &m_interfaces;
1433 }
1434 else if (cd->compoundType()==ClassDef::Struct)
1435 {
1436 list = &m_structs;
1437 }
1438 else if (cd->compoundType()==ClassDef::Exception)
1439 {
1440 list = &m_exceptions;
1441 }
1442 }
1443
1444 list->add(cd->name(),cd);
1445}
@ Interface
Definition classdef.h:112
@ Exception
Definition classdef.h:115
virtual CompoundType compoundType() const =0
Returns the type of compound this is, i.e.
virtual bool isHidden() const =0
virtual const QCString & name() const =0
ClassLinkedRefMap m_interfaces
Definition filedef.cpp:258
ClassLinkedRefMap m_structs
Definition filedef.cpp:259
ClassLinkedRefMap m_exceptions
Definition filedef.cpp:260
bool add(const char *k, T *obj)
Definition linkedmap.h:284

References LinkedRefMap< T, Hash, KeyEqual, Map >::add(), ClassDef::compoundType(), Config_getBool, ClassDef::Exception, ClassDef::Interface, Definition::isHidden(), m_classes, m_exceptions, m_interfaces, m_structs, Definition::name(), and ClassDef::Struct.

◆ insertConcept()

void FileDefImpl::insertConcept ( ConceptDef * cd)
overridevirtual

Implements FileDef.

Definition at line 1447 of file filedef.cpp.

1448{
1449 if (cd->isHidden()) return;
1450 m_concepts.add(cd->name(),cd);
1451}

References Definition::isHidden(), m_concepts, and Definition::name().

◆ insertMember()

void FileDefImpl::insertMember ( MemberDef * md)
overridevirtual

Adds member definition md to the list of all members of this file

Implements FileDef.

Definition at line 1299 of file filedef.cpp.

1300{
1301 if (md->isHidden()) return;
1302 MemberList *allMemberList = getMemberList(MemberListType::AllMembersList());
1303 //printf("%s:FileDefImpl::insertMember(%s (=%p) list has %zu elements)\n",
1304 // qPrint(name()),qPrint(md->name()),(void*)md,allMemberList ? allMemberList->size() : 0);
1305 if (allMemberList && allMemberList->contains(md))
1306 {
1307 //printf("already added\n");
1308 return;
1309 }
1310
1311 if (allMemberList==nullptr)
1312 {
1313 m_memberLists.emplace_back(std::make_unique<MemberList>(MemberListType::AllMembersList(),MemberListContainer::File));
1314 allMemberList = m_memberLists.back().get();
1315 }
1316 allMemberList->push_back(md);
1317 switch (md->memberType())
1318 {
1320 if (md->getLanguage() == SrcLangExt::Python)
1321 {
1322 addMemberToList(MemberListType::PropertyMembers(),md);
1323 addMemberToList(MemberListType::Properties(),md);
1324 break;
1325 }
1326 // fallthrough, explicitly no break here
1328 addMemberToList(MemberListType::DecVarMembers(),md);
1329 addMemberToList(MemberListType::DocVarMembers(),md);
1330 break;
1332 addMemberToList(MemberListType::DecFuncMembers(),md);
1333 addMemberToList(MemberListType::DocFuncMembers(),md);
1334 break;
1336 addMemberToList(MemberListType::DecTypedefMembers(),md);
1337 addMemberToList(MemberListType::DocTypedefMembers(),md);
1338 break;
1340 addMemberToList(MemberListType::DecSequenceMembers(),md);
1341 addMemberToList(MemberListType::DocSequenceMembers(),md);
1342 break;
1344 addMemberToList(MemberListType::DecDictionaryMembers(),md);
1345 addMemberToList(MemberListType::DocDictionaryMembers(),md);
1346 break;
1348 addMemberToList(MemberListType::DecEnumMembers(),md);
1349 addMemberToList(MemberListType::DocEnumMembers(),md);
1350 break;
1351 case MemberType::EnumValue: // enum values are shown inside their enums
1352 break;
1353 case MemberType::Define:
1354 addMemberToList(MemberListType::DecDefineMembers(),md);
1355 addMemberToList(MemberListType::DocDefineMembers(),md);
1356 break;
1357 default:
1358 err("FileDefImpl::insertMembers(): "
1359 "member '{}' with class scope '{}' inserted in file scope '{}'!\n",
1360 md->name(),
1361 md->getClassDef() ? md->getClassDef()->name() : "<global>",
1362 name());
1363 }
1364 //addMemberToGroup(md,groupId);
1365}
virtual SrcLangExt getLanguage() const =0
Returns the programming language this definition was written in.
void addMemberToList(MemberListType lt, MemberDef *md)
Definition filedef.cpp:1722
virtual const ClassDef * getClassDef() const =0
virtual MemberType memberType() const =0
bool contains(const MemberDef *md) const
Definition memberlist.h:89
void push_back(const T &value)
Definition memberlist.h:48
@ Enumeration
Definition types.h:557
@ EnumValue
Definition types.h:558
@ Dictionary
Definition types.h:568
@ Sequence
Definition types.h:567
@ Variable
Definition types.h:555
@ Property
Definition types.h:563
@ Typedef
Definition types.h:556
@ Function
Definition types.h:554

References addMemberToList(), MemberVector::contains(), Define, Dictionary, Enumeration, EnumValue, err, File, Function, MemberDef::getClassDef(), Definition::getLanguage(), getMemberList(), Definition::isHidden(), m_memberLists, MemberDef::memberType(), Definition::name(), name(), Property, MemberVector::push_back(), Sequence, Typedef, and Variable.

◆ insertNamespace()

void FileDefImpl::insertNamespace ( NamespaceDef * nd)
overridevirtual

Adds namespace definition nd to the list of all compounds of this file

Implements FileDef.

Definition at line 1454 of file filedef.cpp.

1455{
1456 if (nd->isHidden()) return;
1457 m_namespaces.add(nd->name(),nd);
1458}

References Definition::isHidden(), m_namespaces, and Definition::name().

◆ isDocumentationFile()

bool FileDefImpl::isDocumentationFile ( ) const
overridevirtual

Implements FileDef.

Definition at line 1655 of file filedef.cpp.

1656{
1657 static const std::unordered_set<std::string> docExtensions =
1658 { "doc", "txt", "dox", "md", "markdown" };
1659
1660 int lastDot = name().findRev('.');
1661 return (lastDot!=-1 && docExtensions.find(name().mid(lastDot+1).str())!=docExtensions.end()) ||
1662 getLanguageFromFileName(getFileNameExtension(name())) == SrcLangExt::Markdown;
1663}
int findRev(char c, int index=-1, bool cs=TRUE) const
Definition qcstring.cpp:91
QCString getFileNameExtension(const QCString &fn)
Definition util.cpp:5756

References QCString::findRev(), getFileNameExtension(), getLanguageFromFileName(), and name().

Referenced by generateSourceFile(), and writeSourceHeader().

◆ isIncluded()

bool FileDefImpl::isIncluded ( const QCString & name) const
overridevirtual

Implements FileDef.

Definition at line 1582 of file filedef.cpp.

1583{
1584 if (name.isEmpty()) return FALSE;
1585 return m_includeMap.find(name.str())!=m_includeMap.end();
1586}

References FALSE, m_includeMap, and name().

◆ isLinkable()

bool FileDefImpl::isLinkable ( ) const
inlineoverridevirtual

Returns TRUE iff it is possible to link to this item. This can be a link to another project imported via a tag file.

Implements Definition.

Definition at line 150 of file filedef.cpp.

150{ return isLinkableInProject() || isReference(); }
bool isLinkableInProject() const override
Definition filedef.cpp:1816

References isLinkableInProject(), and DefinitionMixin< FileDef >::isReference().

Referenced by writeSourceHeader().

◆ isLinkableInProject()

bool FileDefImpl::isLinkableInProject ( ) const
overridevirtual

Returns TRUE iff it is possible to link to this item within this project.

Implements Definition.

Definition at line 1816 of file filedef.cpp.

1817{
1818 bool showFiles = Config_getBool(SHOW_FILES);
1819 return hasDocumentation() && !isReference() && (showFiles || isLinkableViaGroup());
1820}
bool isLinkableViaGroup() const override
bool hasDocumentation() const override

References Config_getBool, DefinitionMixin< FileDef >::hasDocumentation(), DefinitionMixin< FileDef >::isLinkableViaGroup(), and DefinitionMixin< FileDef >::isReference().

Referenced by isLinkable().

◆ isSource()

bool FileDefImpl::isSource ( ) const
inlineoverridevirtual

Returns TRUE if this file is a source file.

Implements FileDef.

Definition at line 143 of file filedef.cpp.

143{ return m_isSource; }

References m_isSource.

◆ name()

◆ numDecMembers()

int FileDefImpl::numDecMembers ( ) const
overridevirtual

Implements FileDef.

Definition at line 1891 of file filedef.cpp.

1892{
1893 MemberList *ml = getMemberList(MemberListType::AllMembersList());
1894 return ml ? ml->numDecMembers() : 0;
1895}
int numDecMembers(const ClassDef *inheritedFrom) const
Definition memberlist.h:117

References getMemberList(), and MemberList::numDecMembers().

◆ numDocMembers()

int FileDefImpl::numDocMembers ( ) const
overridevirtual

Implements FileDef.

Definition at line 1885 of file filedef.cpp.

1886{
1887 MemberList *ml = getMemberList(MemberListType::AllMembersList());
1888 return ml ? ml->numDocMembers() : 0;
1889}
int numDocMembers() const
Definition memberlist.h:122

References getMemberList(), and MemberList::numDocMembers().

◆ overrideIncludedByGraph()

void FileDefImpl::overrideIncludedByGraph ( bool e)
overridevirtual

Implements FileDef.

Definition at line 1902 of file filedef.cpp.

1903{
1905}

References m_hasIncludedByGraph.

◆ overrideIncludeGraph()

void FileDefImpl::overrideIncludeGraph ( bool e)
overridevirtual

Implements FileDef.

Definition at line 1897 of file filedef.cpp.

1898{
1900}

References m_hasIncludeGraph.

◆ parseSource()

void FileDefImpl::parseSource ( ClangTUParser * clangParser)
overridevirtual

Implements FileDef.

Definition at line 1250 of file filedef.cpp.

1251{
1252 bool filterSourceFiles = Config_getBool(FILTER_SOURCE_FILES);
1253 OutputCodeList devNullList;
1254 devNullList.add<DevNullCodeGenerator>();
1255#if USE_LIBCLANG
1256 if (Doxygen::clangAssistedParsing && clangParser &&
1257 (getLanguage()==SrcLangExt::Cpp || getLanguage()==SrcLangExt::ObjC))
1258 {
1259 clangParser->switchToFile(this);
1260 clangParser->writeSources(devNullList,this);
1261 }
1262 else
1263#endif
1264 {
1266 intf->resetCodeParserState();
1267 intf->parseCode(
1268 devNullList,QCString(),
1269 fileToString(absFilePath(),filterSourceFiles,TRUE),
1270 getLanguage(),
1271 Config_getBool(STRIP_CODE_COMMENTS),
1272 FALSE,QCString(),this
1273 );
1274 }
1275}
void switchToFile(const FileDef *fd)
Switches to another file within the translation unit started with start().
void writeSources(OutputCodeList &ol, const FileDef *fd)
writes the syntax highlighted source code for a file
QCString getDefFileExtension() const override
SrcLangExt getLanguage() const override
static bool clangAssistedParsing
Definition doxygen.h:138
static ParserManager * parserManager
Definition doxygen.h:131
QCString absFilePath() const override
Definition filedef.cpp:141
void add(OutputCodeIntfPtr &&p)
Definition outputlist.h:194
std::unique_ptr< CodeParserInterface > getCodeParser(const QCString &extension)
Gets the interface to the parser associated with a given extension.
Definition parserintf.h:218
QCString fileToString(const QCString &name, bool filter, bool isSourceCode)
Definition util.cpp:1441

References absFilePath(), OutputCodeList::add(), Doxygen::clangAssistedParsing, Config_getBool, FALSE, fileToString(), DefinitionMixin< FileDef >::getDefFileExtension(), DefinitionMixin< FileDef >::getLanguage(), Doxygen::parserManager, and TRUE.

◆ removeMember()

void FileDefImpl::removeMember ( MemberDef * md)
overridevirtual

Implements FileDef.

Definition at line 1373 of file filedef.cpp.

1374{
1375 removeMemberFromList(MemberListType::AllMembersList(),md);
1376 switch(md->memberType())
1377 {
1379 if (md->getLanguage() == SrcLangExt::Python)
1380 {
1381 removeMemberFromList(MemberListType::PropertyMembers(),md);
1382 removeMemberFromList(MemberListType::Properties(),md);
1383 break;
1384 }
1385 // fallthrough, explicitly no break here
1387 removeMemberFromList(MemberListType::DecVarMembers(),md);
1388 removeMemberFromList(MemberListType::DocVarMembers(),md);
1389 break;
1391 removeMemberFromList(MemberListType::DecFuncMembers(),md);
1392 removeMemberFromList(MemberListType::DocFuncMembers(),md);
1393 break;
1395 removeMemberFromList(MemberListType::DecTypedefMembers(),md);
1396 removeMemberFromList(MemberListType::DocTypedefMembers(),md);
1397 break;
1399 removeMemberFromList(MemberListType::DecSequenceMembers(),md);
1400 removeMemberFromList(MemberListType::DocSequenceMembers(),md);
1401 break;
1403 removeMemberFromList(MemberListType::DecDictionaryMembers(),md);
1404 removeMemberFromList(MemberListType::DocDictionaryMembers(),md);
1405 break;
1407 removeMemberFromList(MemberListType::DecEnumMembers(),md);
1408 removeMemberFromList(MemberListType::DocEnumMembers(),md);
1409 break;
1410 case MemberType::EnumValue: // enum values are shown inside their enums
1411 break;
1412 case MemberType::Define:
1413 removeMemberFromList(MemberListType::DecDefineMembers(),md);
1414 removeMemberFromList(MemberListType::DocDefineMembers(),md);
1415 break;
1416 default:
1417 err("FileDefImpl::removeMember(): unexpected member remove in file!\n");
1418 }
1419}
void removeMemberFromList(MemberListType lt, MemberDef *md)
Definition filedef.cpp:1367

References Define, Dictionary, Enumeration, EnumValue, err, Function, Definition::getLanguage(), MemberDef::memberType(), Property, removeMemberFromList(), Sequence, Typedef, and Variable.

◆ removeMemberFromList()

void FileDefImpl::removeMemberFromList ( MemberListType lt,
MemberDef * md )
private

Definition at line 1367 of file filedef.cpp.

1368{
1369 MemberList *ml = getMemberList(lt);
1370 if (ml) ml->remove(md);
1371}
void remove(const MemberDef *md)
Definition memberlist.h:84

References getMemberList(), and MemberVector::remove().

Referenced by removeMember().

◆ setDirDef()

void FileDefImpl::setDirDef ( DirDef * dd)
inlineoverridevirtual

Implements FileDef.

Definition at line 189 of file filedef.cpp.

189{ m_dir=dd; }

References m_dir.

◆ setDiskName()

void FileDefImpl::setDiskName ( const QCString & name)
overridevirtual

Implements FileDef.

Definition at line 323 of file filedef.cpp.

324{
326}

References name(), and setDiskNameLocal().

◆ setDiskNameLocal()

void FileDefImpl::setDiskNameLocal ( const QCString & name)
private

Definition at line 307 of file filedef.cpp.

308{
309 if (isReference())
310 {
312 m_inclDepFileName = name+"_incl";
313 m_inclByDepFileName = name+"_dep_incl";
314 }
315 else
316 {
320 }
321}
QCString convertNameToFile(const QCString &name, bool allowDots, bool allowUnderscore)
Definition util.cpp:4013

References convertNameToFile(), DefinitionMixin< FileDef >::isReference(), m_inclByDepFileName, m_inclDepFileName, m_outputDiskName, and name().

Referenced by FileDefImpl(), and setDiskName().

◆ setModuleDef()

void FileDefImpl::setModuleDef ( ModuleDef * mod)
inlineoverridevirtual

Implements FileDef.

Definition at line 190 of file filedef.cpp.

190{ m_moduleDef=mod; }

References m_moduleDef.

◆ sortMemberLists()

void FileDefImpl::sortMemberLists ( )
overridevirtual

Implements FileDef.

Definition at line 1741 of file filedef.cpp.

1742{
1743 for (auto &ml : m_memberLists)
1744 {
1745 if (ml->needsSorting()) { ml->sort(); ml->setNeedsSorting(FALSE); }
1746 }
1747
1748 for (const auto &mg : m_memberGroups)
1749 {
1750 MemberList &mlg = const_cast<MemberList&>(mg->members());
1751 if (mlg.needsSorting()) { mlg.sort(); mlg.setNeedsSorting(FALSE); }
1752 }
1753
1754 std::stable_sort(m_includedByList.begin(),m_includedByList.end(),
1755 [](const auto &fi1,const auto &fi2) { return fi1.includeName < fi2.includeName; });
1756
1757 if (Config_getBool(SORT_BRIEF_DOCS))
1758 {
1759 auto classComp = [](const ClassLinkedRefMap::Ptr &c1,const ClassLinkedRefMap::Ptr &c2)
1760 {
1761 return Config_getBool(SORT_BY_SCOPE_NAME) ?
1762 qstricmp_sort(c1->name(), c2->name())<0 :
1763 qstricmp_sort(c1->className(), c2->className())<0;
1764 };
1765
1766 std::stable_sort(m_classes.begin(), m_classes.end(), classComp);
1767 std::stable_sort(m_interfaces.begin(),m_interfaces.end(),classComp);
1768 std::stable_sort(m_structs.begin(), m_structs.end(), classComp);
1769 std::stable_sort(m_exceptions.begin(),m_exceptions.end(),classComp);
1770
1771 auto namespaceComp = [](const NamespaceLinkedRefMap::Ptr &n1,const NamespaceLinkedRefMap::Ptr &n2)
1772 {
1773 return qstricmp_sort(n1->name(),n2->name())<0;
1774 };
1775
1776 std::stable_sort(m_namespaces.begin(),m_namespaces.end(),namespaceComp);
1777 }
1778}
virtual QCString className() const =0
Returns the name of the class including outer classes, but not including namespaces.
bool needsSorting() const
Definition memberlist.h:124
void setNeedsSorting(bool b)
void sort()
Definition memberlist.h:76
int qstricmp_sort(const char *str1, const char *str2)
Definition qcstring.h:86

References ClassDef::className(), Config_getBool, FALSE, m_classes, m_exceptions, m_includedByList, m_interfaces, m_memberGroups, m_memberLists, m_namespaces, m_structs, Definition::name(), MemberList::needsSorting(), qstricmp_sort(), MemberList::setNeedsSorting(), and MemberVector::sort().

◆ startMemberDeclarations()

void FileDefImpl::startMemberDeclarations ( OutputList & ol)
private

Definition at line 730 of file filedef.cpp.

731{
733}
void startMemberSections()
Definition outputlist.h:462

References OutputList::startMemberSections().

Referenced by writeDocumentation().

◆ startMemberDocumentation()

void FileDefImpl::startMemberDocumentation ( OutputList & ol)
private

Definition at line 740 of file filedef.cpp.

741{
742 if (Config_getBool(SEPARATE_MEMBER_PAGES))
743 {
746 }
747}
void disable(OutputType o)

References Config_getBool, OutputList::disable(), Html, Doxygen::suppressDocWarnings, and TRUE.

Referenced by writeDocumentation().

◆ subGrouping()

bool FileDefImpl::subGrouping ( ) const
inlineoverridevirtual

Implements FileDef.

Definition at line 168 of file filedef.cpp.

168{ return m_subGrouping; }

References m_subGrouping.

◆ title()

QCString FileDefImpl::title ( ) const
overridevirtual

Implements FileDef.

Definition at line 1844 of file filedef.cpp.

1845{
1846 if (Config_getBool(HIDE_COMPOUND_REFERENCE))
1847 {
1848 return name();
1849 }
1850 else
1851 {
1853 }
1854}
virtual QCString trFileReference(const QCString &fileName)=0

References Config_getBool, name(), and theTranslator.

Referenced by writeClassDeclarations(), writeConcepts(), writeDetailedDescription(), writeDocumentation(), writeMemberDeclarations(), writeMemberDocumentation(), writeNamespaceDeclarations(), and writeSourceHeader().

◆ writeAuthorSection()

void FileDefImpl::writeAuthorSection ( OutputList & ol)
private

Definition at line 770 of file filedef.cpp.

771{
772 // write Author section (Man only)
775 ol.startGroupHeader();
777 ol.endGroupHeader();
780}
void startGroupHeader(int extraLevels=0)
Definition outputlist.h:454
void pushGeneratorState()
void disableAllBut(OutputType o)
void popGeneratorState()
void endGroupHeader(int extraLevels=0)
Definition outputlist.h:456
void parseText(const QCString &textStr)
virtual QCString trGeneratedAutomatically(const QCString &s)=0
virtual QCString trAuthor(bool first_capital, bool singular)=0

References Config_getString, OutputList::disableAllBut(), OutputList::endGroupHeader(), Man, OutputList::parseText(), OutputList::popGeneratorState(), OutputList::pushGeneratorState(), OutputList::startGroupHeader(), theTranslator, and TRUE.

Referenced by writeDocumentation().

◆ writeBriefDescription()

void FileDefImpl::writeBriefDescription ( OutputList & ol)
private

Definition at line 533 of file filedef.cpp.

534{
536 {
537 auto parser { createDocParser() };
538 auto ast { validatingParseDoc(*parser.get(),
539 briefFile(),briefLine(),this,nullptr,
541 QCString(),TRUE,FALSE,Config_getBool(MARKDOWN_SUPPORT)) };
542 if (!ast->isEmpty())
543 {
544 ol.startParagraph();
547 ol.writeString(" - ");
549 ol.writeDoc(ast.get(),this,nullptr);
552 ol.writeString(" \n");
554
555 if (Config_getBool(REPEAT_BRIEF) ||
556 !documentation().stripWhiteSpace().isEmpty()
557 )
558 {
560 ol.startTextLink(QCString(),"details");
562 ol.endTextLink();
563 }
565 ol.endParagraph();
566 }
567 }
568 ol.writeSynopsis();
569}
virtual QCString briefFile() const =0
bool hasBriefDescription() const override
int briefLine() const override
void writeString(const QCString &text)
Definition outputlist.h:412
void writeDoc(const IDocNodeAST *ast, const Definition *ctx, const MemberDef *md)
Definition outputlist.h:384
void startParagraph(const QCString &classDef=QCString())
Definition outputlist.h:408
void endParagraph()
Definition outputlist.h:410
void endTextLink()
Definition outputlist.h:445
void writeSynopsis()
Definition outputlist.h:593
void startTextLink(const QCString &file, const QCString &anchor)
Definition outputlist.h:443
virtual QCString trMore()=0
IDocParserPtr createDocParser()
factory function to create a parser
Definition docparser.cpp:55
IDocNodeASTPtr 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)

References DefinitionMixin< FileDef >::briefDescription(), DefinitionMixin< FileDef >::briefFile(), DefinitionMixin< FileDef >::briefLine(), Config_getBool, createDocParser(), OutputList::disable(), OutputList::disableAllBut(), DefinitionMixin< FileDef >::documentation(), OutputList::enable(), OutputList::endParagraph(), OutputList::endTextLink(), FALSE, DefinitionMixin< FileDef >::hasBriefDescription(), Html, Man, OutputList::parseText(), OutputList::popGeneratorState(), OutputList::pushGeneratorState(), RTF, OutputList::startParagraph(), OutputList::startTextLink(), stripWhiteSpace(), theTranslator, TRUE, validatingParseDoc(), OutputList::writeDoc(), OutputList::writeString(), and OutputList::writeSynopsis().

Referenced by writeDocumentation().

◆ writeClassDeclarations()

void FileDefImpl::writeClassDeclarations ( OutputList & ol,
const QCString & title,
const ClassLinkedRefMap & list )
private

Definition at line 705 of file filedef.cpp.

706{
707 // write list of classes
708 list.writeDeclaration(ol,nullptr,title,FALSE);
709}
void writeDeclaration(OutputList &ol, const ClassDef::CompoundType *filter, const QCString &header, bool localNames) const
Definition classlist.cpp:53
QCString title() const override
Definition filedef.cpp:1844

References FALSE, title(), and ClassLinkedRefMap::writeDeclaration().

Referenced by writeDocumentation().

◆ writeClassesToTagFile()

void FileDefImpl::writeClassesToTagFile ( TextStream & t,
const ClassLinkedRefMap & list )
private

Definition at line 571 of file filedef.cpp.

572{
573 for (const auto &cd : list)
574 {
575 if (cd->isLinkableInProject())
576 {
577 tagFile << " <class kind=\"" << cd->compoundTypeString() <<
578 "\">" << convertToXML(cd->name()) << "</class>\n";
579 }
580 }
581}
QCString convertToXML(const QCString &s, bool keepEntities)
Definition util.cpp:4421

References convertToXML().

Referenced by writeTagFile().

◆ writeConcepts()

void FileDefImpl::writeConcepts ( OutputList & ol,
const QCString & title )
private

Definition at line 711 of file filedef.cpp.

712{
713 // write list of classes
714 m_concepts.writeDeclaration(ol,title,FALSE);
715}

References FALSE, m_concepts, and title().

Referenced by writeDocumentation().

◆ writeDetailedDescription()

void FileDefImpl::writeDetailedDescription ( OutputList & ol,
const QCString & title )
private

Definition at line 471 of file filedef.cpp.

472{
474 {
477 ol.writeRuler();
481 ol.writeAnchor(QCString(),"details");
483 ol.startGroupHeader();
484 ol.parseText(title);
485 ol.endGroupHeader();
486
487 ol.startTextBlock();
488 if (!briefDescription().isEmpty() && Config_getBool(REPEAT_BRIEF))
489 {
491 QCString(),FALSE,FALSE,Config_getBool(MARKDOWN_SUPPORT));
492 }
493 if (!briefDescription().isEmpty() && Config_getBool(REPEAT_BRIEF) &&
494 !documentation().isEmpty())
495 {
499 ol.enableAll();
502 ol.writeString("\n\n");
504 }
505 if (!documentation().isEmpty())
506 {
507 ol.generateDoc(docFile(),docLine(),this,nullptr,documentation()+"\n",TRUE,FALSE,
508 QCString(),FALSE,FALSE,Config_getBool(MARKDOWN_SUPPORT));
509 }
510 //printf("Writing source ref for file %s\n",qPrint(name()));
511 if (Config_getBool(SOURCE_BROWSER))
512 {
513 ol.startParagraph("definition");
514 QCString refText = theTranslator->trDefinedInSourceFile();
515 int fileMarkerPos = refText.find("@0");
516 if (fileMarkerPos!=-1) // should always pass this.
517 {
518 ol.parseText(refText.left(fileMarkerPos)); //text left from marker 1
519 ol.writeObjectLink(QCString(),getSourceFileBase(),QCString(),name());
520 ol.parseText(refText.right(
521 refText.length()-fileMarkerPos-2)); // text right from marker 2
522 }
523 else
524 {
525 err("translation error: invalid marker in trDefinedInSourceFile()\n");
526 }
527 ol.endParagraph();
528 }
529 ol.endTextBlock();
530 }
531}
QCString briefFile() const override
int docLine() const override
bool hasDetailedDescription() const override
Definition filedef.cpp:363
void endTextBlock(bool paraBreak=FALSE)
Definition outputlist.h:671
void writeRuler()
Definition outputlist.h:522
void writeObjectLink(const QCString &ref, const QCString &file, const QCString &anchor, const QCString &name)
Definition outputlist.h:440
void startTextBlock(bool dense=FALSE)
Definition outputlist.h:669
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)
void writeAnchor(const QCString &fileName, const QCString &name)
Definition outputlist.h:524
void enableAll()
int find(char c, int index=0, bool cs=TRUE) const
Definition qcstring.cpp:43
size_t length() const
Returns the length of the string, not counting the 0-terminator.
Definition qcstring.h:153
QCString right(size_t len) const
Definition qcstring.h:219
QCString left(size_t len) const
Definition qcstring.h:214
virtual QCString trDefinedInSourceFile()=0

References DefinitionMixin< FileDef >::briefDescription(), DefinitionMixin< FileDef >::briefFile(), DefinitionMixin< FileDef >::briefLine(), Config_getBool, OutputList::disable(), OutputList::disableAllBut(), DefinitionMixin< FileDef >::docFile(), DefinitionMixin< FileDef >::docLine(), DefinitionMixin< FileDef >::documentation(), OutputList::enable(), OutputList::enableAll(), OutputList::endGroupHeader(), OutputList::endParagraph(), OutputList::endTextBlock(), err, FALSE, QCString::find(), OutputList::generateDoc(), getSourceFileBase(), hasDetailedDescription(), Html, Latex, QCString::left(), QCString::length(), Man, name(), OutputList::parseText(), OutputList::popGeneratorState(), OutputList::pushGeneratorState(), QCString::right(), RTF, OutputList::startGroupHeader(), OutputList::startParagraph(), OutputList::startTextBlock(), theTranslator, title(), TRUE, OutputList::writeAnchor(), OutputList::writeObjectLink(), OutputList::writeRuler(), and OutputList::writeString().

Referenced by writeDocumentation().

◆ writeDocumentation()

void FileDefImpl::writeDocumentation ( OutputList & ol)
overridevirtual

Write the documentation page for this file to the file of output generators ol.

Implements FileDef.

Definition at line 851 of file filedef.cpp.

852{
853 bool generateTreeView = Config_getBool(GENERATE_TREEVIEW);
854 //funcList->countDecMembers();
855
856 //QCString fn = name();
857 //if (Config_getBool(FULL_PATH_NAMES))
858 //{
859 // fn.prepend(stripFromPath(getPath()));
860 //}
861
862 //printf("WriteDocumentation diskname=%s\n",qPrint(diskname));
863
864 QCString versionTitle;
865 if (!m_fileVersion.isEmpty())
866 {
867 versionTitle=("("+m_fileVersion+")");
868 }
869 QCString title = m_docname+versionTitle;
870 QCString pageTitle;
871 if (Config_getBool(HIDE_COMPOUND_REFERENCE))
872 {
873 pageTitle=m_docname;
874 }
875 else
876 {
878 }
879
880 if (getDirDef())
881 {
882 startFile(ol,getOutputFileBase(),name(),pageTitle,HighlightedItem::FileVisible,!generateTreeView);
883 if (!generateTreeView)
884 {
886 ol.endQuickIndices();
887 }
888 startTitle(ol,getOutputFileBase(),this);
891 if (Config_getBool(HIDE_COMPOUND_REFERENCE))
892 {
893 ol.parseText(displayName()); // Html only
894 }
895 else
896 {
898 }
899 ol.enableAll();
901 if (Config_getBool(HIDE_COMPOUND_REFERENCE))
902 {
903 ol.parseText(Config_getBool(FULL_PATH_NAMES) ? // other output formats
904 pageTitle :
905 name());
906 }
907 else
908 {
909 ol.parseText(Config_getBool(FULL_PATH_NAMES) ? // other output formats
910 pageTitle :
912 }
914 addGroupListToTitle(ol,this);
916 }
917 else
918 {
919 startFile(ol,getOutputFileBase(),name(),pageTitle,HighlightedItem::FileVisible,!generateTreeView);
920 if (!generateTreeView)
921 {
922 ol.endQuickIndices();
923 }
924 startTitle(ol,getOutputFileBase(),this);
925 ol.parseText(pageTitle);
926 addGroupListToTitle(ol,this);
928 }
929
930 ol.startContents();
931
932 if (!m_fileVersion.isEmpty())
933 {
936 ol.docify(versionTitle);
937 ol.endProjectNumber();
938 ol.enableAll();
939 }
940
941 //---------------------------------------- start flexible part -------------------------------
942
943 SrcLangExt lang = getLanguage();
944 for (const auto &lde : LayoutDocManager::instance().docEntries(LayoutDocManager::File))
945 {
946 const LayoutDocEntrySection *ls = dynamic_cast<const LayoutDocEntrySection*>(lde.get());
947 switch (lde->kind())
948 {
949 case LayoutDocEntry::BriefDesc:
951 break;
952 case LayoutDocEntry::MemberDeclStart:
954 break;
955 case LayoutDocEntry::FileIncludes:
957 break;
958 case LayoutDocEntry::FileIncludeGraph:
960 break;
961 case LayoutDocEntry::FileIncludedByGraph:
963 break;
964 case LayoutDocEntry::FileSourceLink:
965 writeSourceLink(ol);
966 break;
967 case LayoutDocEntry::FileClasses:
968 if (ls) writeClassDeclarations(ol,ls->title(lang),m_classes);
969 break;
970 case LayoutDocEntry::FileInterfaces:
971 if (ls) writeClassDeclarations(ol,ls->title(lang),m_interfaces);
972 break;
973 case LayoutDocEntry::FileStructs:
974 if (ls) writeClassDeclarations(ol,ls->title(lang),m_structs);
975 break;
976 case LayoutDocEntry::FileExceptions:
977 if (ls) writeClassDeclarations(ol,ls->title(lang),m_exceptions);
978 break;
979 case LayoutDocEntry::FileConcepts:
980 if (ls) writeConcepts(ol,ls->title(lang));
981 break;
982 case LayoutDocEntry::FileNamespaces:
983 if (ls) writeNamespaceDeclarations(ol,ls->title(lang),false);
984 break;
985 case LayoutDocEntry::FileConstantGroups:
986 if (ls) writeNamespaceDeclarations(ol,ls->title(lang),true);
987 break;
988 case LayoutDocEntry::MemberGroups:
990 break;
991 case LayoutDocEntry::MemberDecl:
992 {
993 const LayoutDocEntryMemberDecl *lmd = dynamic_cast<const LayoutDocEntryMemberDecl*>(lde.get());
994 if (lmd) writeMemberDeclarations(ol,lmd->type,lmd->title(lang));
995 }
996 break;
997 case LayoutDocEntry::MemberDeclEnd:
999 break;
1000 case LayoutDocEntry::DetailedDesc:
1001 if (ls) writeDetailedDescription(ol,ls->title(lang));
1002 break;
1003 case LayoutDocEntry::MemberDefStart:
1005 break;
1006 case LayoutDocEntry::FileInlineClasses:
1008 break;
1009 case LayoutDocEntry::MemberDef:
1010 {
1011 const LayoutDocEntryMemberDef *lmd = dynamic_cast<const LayoutDocEntryMemberDef*>(lde.get());
1012 if (lmd) writeMemberDocumentation(ol,lmd->type,lmd->title(lang));
1013 }
1014 break;
1015 case LayoutDocEntry::MemberDefEnd:
1017 break;
1018 case LayoutDocEntry::AuthorSection:
1020 break;
1021 case LayoutDocEntry::ClassIncludes:
1022 case LayoutDocEntry::ClassInheritanceGraph:
1023 case LayoutDocEntry::ClassNestedClasses:
1024 case LayoutDocEntry::ClassCollaborationGraph:
1025 case LayoutDocEntry::ClassAllMembersLink:
1026 case LayoutDocEntry::ClassUsedFiles:
1027 case LayoutDocEntry::ClassInlineClasses:
1028 case LayoutDocEntry::NamespaceNestedNamespaces:
1029 case LayoutDocEntry::NamespaceNestedConstantGroups:
1030 case LayoutDocEntry::NamespaceClasses:
1031 case LayoutDocEntry::NamespaceConcepts:
1032 case LayoutDocEntry::NamespaceInterfaces:
1033 case LayoutDocEntry::NamespaceStructs:
1034 case LayoutDocEntry::NamespaceExceptions:
1035 case LayoutDocEntry::NamespaceInlineClasses:
1036 case LayoutDocEntry::ConceptDefinition:
1037 case LayoutDocEntry::GroupClasses:
1038 case LayoutDocEntry::GroupConcepts:
1039 case LayoutDocEntry::GroupModules:
1040 case LayoutDocEntry::GroupInlineClasses:
1041 case LayoutDocEntry::GroupNamespaces:
1042 case LayoutDocEntry::GroupDirs:
1043 case LayoutDocEntry::GroupNestedGroups:
1044 case LayoutDocEntry::GroupFiles:
1045 case LayoutDocEntry::GroupGraph:
1046 case LayoutDocEntry::GroupPageDocs:
1047 case LayoutDocEntry::ModuleExports:
1048 case LayoutDocEntry::ModuleClasses:
1049 case LayoutDocEntry::ModuleConcepts:
1050 case LayoutDocEntry::ModuleUsedFiles:
1051 case LayoutDocEntry::DirSubDirs:
1052 case LayoutDocEntry::DirFiles:
1053 case LayoutDocEntry::DirGraph:
1054 err("Internal inconsistency: member '{}' should not be part of "
1055 "LayoutDocManager::File entry list\n",lde->entryToString());
1056 break;
1057 }
1058 }
1059
1060 //---------------------------------------- end flexible part -------------------------------
1061
1062 ol.endContents();
1063
1064 endFileWithNavPath(ol,this);
1065
1066 if (Config_getBool(SEPARATE_MEMBER_PAGES))
1067 {
1068 MemberList *ml = getMemberList(MemberListType::AllMembersList());
1069 if (ml) ml->sort();
1070 writeMemberPages(ol);
1071 }
1072}
virtual void writeNavigationPath(OutputList &ol) const =0
void writeBriefDescription(OutputList &ol)
Definition filedef.cpp:533
void writeSourceLink(OutputList &ol)
Definition filedef.cpp:683
void writeNamespaceDeclarations(OutputList &ol, const QCString &title, bool isConstantGroup)
Definition filedef.cpp:698
void writeClassDeclarations(OutputList &ol, const QCString &title, const ClassLinkedRefMap &list)
Definition filedef.cpp:705
void endMemberDeclarations(OutputList &ol)
Definition filedef.cpp:735
void writeMemberDeclarations(OutputList &ol, MemberListType lt, const QCString &title)
Definition filedef.cpp:1792
void writeInlineClasses(OutputList &ol)
Definition filedef.cpp:717
void writeIncludeFiles(OutputList &ol)
Definition filedef.cpp:583
void writeDetailedDescription(OutputList &ol, const QCString &title)
Definition filedef.cpp:471
void writeMemberPages(OutputList &ol) override
Definition filedef.cpp:1074
void writeConcepts(OutputList &ol, const QCString &title)
Definition filedef.cpp:711
void writeIncludedByGraph(OutputList &ol)
Definition filedef.cpp:657
void writeAuthorSection(OutputList &ol)
Definition filedef.cpp:770
DirDef * getDirDef() const override
Definition filedef.cpp:152
QCString displayName(bool=TRUE) const override
Definition filedef.cpp:133
void writeMemberDocumentation(OutputList &ol, MemberListType lt, const QCString &title)
Definition filedef.cpp:1810
void writeIncludeGraph(OutputList &ol)
Definition filedef.cpp:632
void startMemberDocumentation(OutputList &ol)
Definition filedef.cpp:740
void startMemberDeclarations(OutputList &ol)
Definition filedef.cpp:730
void endMemberDocumentation(OutputList &ol)
Definition filedef.cpp:749
void writeMemberGroups(OutputList &ol)
Definition filedef.cpp:758
static LayoutDocManager & instance()
Returns a reference to this singleton.
Definition layout.cpp:1435
void endContents()
Definition outputlist.h:619
void docify(const QCString &s)
Definition outputlist.h:438
void startProjectNumber()
Definition outputlist.h:392
void endQuickIndices()
Definition outputlist.h:605
void startContents()
Definition outputlist.h:617
void endProjectNumber()
Definition outputlist.h:394
void startTitle(OutputList &ol, const QCString &fileName, const DefinitionMutable *def)
Definition index.cpp:384
void endTitle(OutputList &ol, const QCString &fileName, const QCString &name)
Definition index.cpp:393
void startFile(OutputList &ol, const QCString &name, const QCString &manName, const QCString &title, HighlightedItem hli, bool additionalIndices, const QCString &altSidebarName, int hierarchyLevel)
Definition index.cpp:400
void endFileWithNavPath(OutputList &ol, const Definition *d)
Definition index.cpp:446
QCString title(SrcLangExt lang) const
Definition layout.cpp:1786
MemberListType type
Definition layout.h:118
MemberListType type
Definition layout.h:137
QCString title(SrcLangExt lang) const
Definition layout.cpp:1798
QCString title(SrcLangExt lang) const
Definition layout.cpp:1779
SrcLangExt
Definition types.h:207
void addGroupListToTitle(OutputList &ol, const Definition *d)
Definition util.cpp:5398

References addGroupListToTitle(), Config_getBool, OutputList::disable(), OutputList::disableAllBut(), displayName(), OutputList::docify(), OutputList::enableAll(), OutputList::endContents(), endFileWithNavPath(), endMemberDeclarations(), endMemberDocumentation(), OutputList::endProjectNumber(), OutputList::endQuickIndices(), endTitle(), err, FileVisible, getDirDef(), DefinitionMixin< FileDef >::getLanguage(), getMemberList(), getOutputFileBase(), Html, LayoutDocManager::instance(), m_classes, m_docname, m_exceptions, m_fileVersion, m_interfaces, m_structs, name(), OutputList::parseText(), OutputList::popGeneratorState(), OutputList::pushGeneratorState(), MemberVector::sort(), OutputList::startContents(), startFile(), startMemberDeclarations(), startMemberDocumentation(), OutputList::startProjectNumber(), startTitle(), theTranslator, title(), LayoutDocEntryMemberDecl::title(), LayoutDocEntryMemberDef::title(), LayoutDocEntrySection::title(), LayoutDocEntryMemberDecl::type, LayoutDocEntryMemberDef::type, writeAuthorSection(), writeBriefDescription(), writeClassDeclarations(), writeConcepts(), writeDetailedDescription(), writeIncludedByGraph(), writeIncludeFiles(), writeIncludeGraph(), writeInlineClasses(), writeMemberDeclarations(), writeMemberDocumentation(), writeMemberGroups(), writeMemberPages(), writeNamespaceDeclarations(), DefinitionMutable::writeNavigationPath(), and writeSourceLink().

◆ writeIncludedByGraph()

void FileDefImpl::writeIncludedByGraph ( OutputList & ol)
private

Definition at line 657 of file filedef.cpp.

658{
659 if (Config_getBool(HAVE_DOT) && m_hasIncludedByGraph /*&& Config_getBool(INCLUDED_BY_GRAPH)*/)
660 {
661 //printf("Graph for file %s\n",qPrint(name()));
662 DotInclDepGraph incDepGraph(this,TRUE);
663 if (incDepGraph.isTooBig())
664 {
665 warn_uncond("Included by graph for '{}' not generated, too many nodes ({}), threshold is {}. Consider increasing DOT_GRAPH_MAX_NODES.\n",
666 qPrint(name()), incDepGraph.numNodes(), Config_getInt(DOT_GRAPH_MAX_NODES));
667 }
668 else if (!incDepGraph.isTrivial())
669 {
670 ol.startTextBlock();
674 ol.endInclDepGraph(incDepGraph);
675 ol.enableAll();
676 ol.endTextBlock(TRUE);
677 }
678 //incDepGraph.writeGraph(Config_getString(HTML_OUTPUT),fd->getOutputFileBase());
679 }
680}
void startInclDepGraph()
Definition outputlist.h:651
void endInclDepGraph(DotInclDepGraph &g)
Definition outputlist.h:653
virtual QCString trInclByDepGraph()=0
#define Config_getInt(name)
Definition config.h:34
#define warn_uncond(fmt,...)
Definition message.h:122
const char * qPrint(const char *s)
Definition qcstring.h:672

References Config_getBool, Config_getInt, OutputList::disable(), OutputList::enableAll(), OutputList::endInclDepGraph(), OutputList::endTextBlock(), DotInclDepGraph::isTooBig(), DotInclDepGraph::isTrivial(), m_hasIncludedByGraph, Man, name(), DotInclDepGraph::numNodes(), OutputList::parseText(), qPrint(), OutputList::startInclDepGraph(), OutputList::startTextBlock(), theTranslator, TRUE, and warn_uncond.

Referenced by writeDocumentation().

◆ writeIncludeFiles()

void FileDefImpl::writeIncludeFiles ( OutputList & ol)
private

Definition at line 583 of file filedef.cpp.

584{
585 if (!m_includeList.empty())
586 {
588 for (const auto &ii : m_includeList)
589 {
590 const FileDef *fd=ii.fileDef;
591 ol.startTypewriter();
592 SrcLangExt lang = fd ? fd->getLanguage() : SrcLangExt::Cpp;
593 ol.docify(::includeStatement(lang,ii.kind));
594 ol.docify(::includeOpen(lang,ii.kind));
596 ol.docify(ii.includeName);
597 ol.enableAll();
599
600 // Here we use the include file name as it appears in the file.
601 // we could also we the name as it is used within doxygen,
602 // then we should have used fd->docName() instead of ii->includeName
603 if (fd && fd->isLinkable())
604 {
607 QCString(),ii.includeName);
608 }
609 else
610 {
611 ModuleDef *mod = ModuleManager::instance().getPrimaryInterface(ii.includeName);
612 if (ii.kind==IncludeKind::ImportModule && mod && mod->isLinkable())
613 {
615 QCString(),ii.includeName);
616 }
617 else
618 {
619 ol.docify(ii.includeName);
620 }
621 }
622
623 ol.enableAll();
624 ol.docify(::includeClose(lang,ii.kind));
625 ol.endTypewriter();
626 ol.lineBreak();
627 }
628 ol.endTextBlock();
629 }
630}
virtual bool isLinkable() const =0
virtual QCString getReference() const =0
virtual QCString getOutputFileBase() const =0
virtual QCString includeName() const =0
virtual bool generateSourceFile() const =0
static ModuleManager & instance()
ModuleDef * getPrimaryInterface(const QCString &moduleName) const
void startTypewriter()
Definition outputlist.h:450
void endTypewriter()
Definition outputlist.h:452
void lineBreak(const QCString &style=QCString())
Definition outputlist.h:560
QCString includeClose(SrcLangExt lang, IncludeKind kind)
Definition filedef.cpp:86
QCString includeStatement(SrcLangExt lang, IncludeKind kind)
Definition filedef.cpp:56
QCString includeOpen(SrcLangExt lang, IncludeKind kind)
Definition filedef.cpp:73
@ ImportModule
Definition filedef.h:55

References OutputList::disable(), OutputList::disableAllBut(), OutputList::docify(), OutputList::enableAll(), OutputList::endTextBlock(), OutputList::endTypewriter(), FileDef::generateSourceFile(), Definition::getLanguage(), Definition::getOutputFileBase(), ModuleManager::getPrimaryInterface(), Definition::getReference(), Html, ImportModule, includeClose(), FileDef::includeName(), includeOpen(), includeStatement(), ModuleManager::instance(), Definition::isLinkable(), OutputList::lineBreak(), m_includeList, OutputList::startTextBlock(), OutputList::startTypewriter(), TRUE, and OutputList::writeObjectLink().

Referenced by writeDocumentation().

◆ writeIncludeGraph()

void FileDefImpl::writeIncludeGraph ( OutputList & ol)
private

Definition at line 632 of file filedef.cpp.

633{
634 if (Config_getBool(HAVE_DOT) && m_hasIncludeGraph /*&& Config_getBool(INCLUDE_GRAPH)*/)
635 {
636 //printf("Graph for file %s\n",qPrint(name()));
637 DotInclDepGraph incDepGraph(this,FALSE);
638 if (incDepGraph.isTooBig())
639 {
640 warn_uncond("Include graph for '{}' not generated, too many nodes ({}), threshold is {}. Consider increasing DOT_GRAPH_MAX_NODES.\n",
641 qPrint(name()), incDepGraph.numNodes(), Config_getInt(DOT_GRAPH_MAX_NODES));
642 }
643 else if (!incDepGraph.isTrivial())
644 {
645 ol.startTextBlock();
649 ol.endInclDepGraph(incDepGraph);
650 ol.enableAll();
651 ol.endTextBlock(TRUE);
652 }
653 //incDepGraph.writeGraph(Config_getString(HTML_OUTPUT),fd->getOutputFileBase());
654 }
655}
virtual QCString trInclDepGraph(const QCString &fName)=0

References Config_getBool, Config_getInt, OutputList::disable(), OutputList::enableAll(), OutputList::endInclDepGraph(), OutputList::endTextBlock(), FALSE, DotInclDepGraph::isTooBig(), DotInclDepGraph::isTrivial(), m_hasIncludeGraph, Man, name(), DotInclDepGraph::numNodes(), OutputList::parseText(), qPrint(), OutputList::startInclDepGraph(), OutputList::startTextBlock(), theTranslator, TRUE, and warn_uncond.

Referenced by writeDocumentation().

◆ writeInlineClasses()

void FileDefImpl::writeInlineClasses ( OutputList & ol)
private

Definition at line 717 of file filedef.cpp.

718{
719 // temporarily undo the disabling could be done by startMemberDocumentation()
720 // as a result of setting SEPARATE_MEMBER_PAGES to YES; see bug730512
721 bool isEnabled = ol.isEnabled(OutputType::Html);
723
724 m_classes.writeDocumentation(ol,this);
725
726 // restore the initial state if needed
727 if (!isEnabled) ol.disable(OutputType::Html);
728}
bool isEnabled(OutputType o)

References OutputList::disable(), OutputList::enable(), Html, OutputList::isEnabled(), and m_classes.

Referenced by writeDocumentation().

◆ writeMemberDeclarations()

void FileDefImpl::writeMemberDeclarations ( OutputList & ol,
MemberListType lt,
const QCString & title )
private

Definition at line 1792 of file filedef.cpp.

1793{
1794 bool optVhdl = Config_getBool(OPTIMIZE_OUTPUT_VHDL);
1795 MemberList * ml = getMemberList(lt);
1796 if (ml)
1797 {
1798 if (optVhdl) // use specific declarations function
1799 {
1800
1801 VhdlDocGen::writeVhdlDeclarations(ml,ol,nullptr,nullptr,this,nullptr,nullptr);
1802 }
1803 else
1804 {
1805 ml->writeDeclarations(ol,nullptr,nullptr,this,nullptr,nullptr,title,QCString());
1806 }
1807 }
1808}
void writeDeclarations(OutputList &ol, const ClassDef *cd, const NamespaceDef *nd, const FileDef *fd, const GroupDef *gd, const ModuleDef *mod, const QCString &title, const QCString &subtitle, bool showEnumValues=FALSE, bool showInline=FALSE, const ClassDef *inheritedFrom=nullptr, MemberListType lt=MemberListType::PubMethods(), bool showSectionTitle=true) const
Writes the list of members to the output.
static void writeVhdlDeclarations(const MemberList *, OutputList &, const GroupDef *, const ClassDef *, const FileDef *, const NamespaceDef *, const ModuleDef *)

References Config_getBool, getMemberList(), title(), MemberList::writeDeclarations(), and VhdlDocGen::writeVhdlDeclarations().

Referenced by writeDocumentation().

◆ writeMemberDocumentation()

void FileDefImpl::writeMemberDocumentation ( OutputList & ol,
MemberListType lt,
const QCString & title )
private

Definition at line 1810 of file filedef.cpp.

1811{
1812 MemberList * ml = getMemberList(lt);
1813 if (ml) ml->writeDocumentation(ol,name(),this,title);
1814}
void writeDocumentation(OutputList &ol, const QCString &scopeName, const Definition *container, const QCString &title, bool showEnumValues=FALSE, bool showInline=FALSE) const

References getMemberList(), name(), title(), and MemberList::writeDocumentation().

Referenced by writeDocumentation().

◆ writeMemberGroups()

void FileDefImpl::writeMemberGroups ( OutputList & ol)
private

Definition at line 758 of file filedef.cpp.

759{
760 /* write user defined member groups */
761 for (const auto &mg : m_memberGroups)
762 {
763 if (!mg->allMembersInSameSection() || !m_subGrouping)
764 {
765 mg->writeDeclarations(ol,nullptr,nullptr,this,nullptr,nullptr);
766 }
767 }
768}

References m_memberGroups, and m_subGrouping.

Referenced by writeDocumentation().

◆ writeMemberPages()

void FileDefImpl::writeMemberPages ( OutputList & ol)
overridevirtual

Implements FileDef.

Definition at line 1074 of file filedef.cpp.

1075{
1076 ol.pushGeneratorState();
1078
1079 for (const auto &ml : m_memberLists)
1080 {
1081 if (ml->listType().isDocumentation())
1082 {
1083 ml->writeDocumentationPage(ol,name(),this);
1084 }
1085 }
1086
1087 ol.popGeneratorState();
1088}

References OutputList::disableAllBut(), Html, m_memberLists, name(), OutputList::popGeneratorState(), and OutputList::pushGeneratorState().

Referenced by writeDocumentation().

◆ writeNamespaceDeclarations()

void FileDefImpl::writeNamespaceDeclarations ( OutputList & ol,
const QCString & title,
bool isConstantGroup )
private

Definition at line 698 of file filedef.cpp.

700{
701 // write list of namespaces
702 m_namespaces.writeDeclaration(ol,title,isConstantGroup);
703}

References m_namespaces, and title().

Referenced by writeDocumentation().

◆ writeQuickMemberLinks()

void FileDefImpl::writeQuickMemberLinks ( OutputList & ol,
const MemberDef * currentMd ) const
overridevirtual

Reimplemented from DefinitionMixin< FileDef >.

Definition at line 1090 of file filedef.cpp.

1091{
1092 bool createSubDirs=Config_getBool(CREATE_SUBDIRS);
1093
1094 ol.writeString(" <div class=\"navtab\">\n");
1095 ol.writeString(" <table>\n");
1096
1097 MemberList *allMemberList = getMemberList(MemberListType::AllMembersList());
1098 if (allMemberList)
1099 {
1100 for (const auto &md : *allMemberList)
1101 {
1102 if (md->getFileDef()==this && md->getNamespaceDef()==nullptr && md->isLinkable() && !md->isEnumValue())
1103 {
1104 if (md->isLinkableInProject())
1105 {
1106 QCString fn=md->getOutputFileBase();
1108 if (md==currentMd) // selected item => highlight
1109 {
1110 ol.writeString(" <tr><td class=\"navtabHL\">");
1111 }
1112 else
1113 {
1114 ol.writeString(" <tr><td class=\"navtab\">");
1115 }
1116 ol.writeString("<span class=\"label\"><a ");
1117 ol.writeString("href=\"");
1118 if (createSubDirs) ol.writeString("../../");
1119 ol.writeString(fn+"#"+md->anchor());
1120 ol.writeString("\">");
1121 ol.writeString(convertToHtml(md->localName()));
1122 ol.writeString("</a></span>");
1123 ol.writeString("</td></tr>\n");
1124 }
1125 }
1126 }
1127 }
1128
1129 ol.writeString(" </table>\n");
1130 ol.writeString(" </div>\n");
1131}
QCString convertToHtml(const QCString &s, bool keepEntities)
Definition util.cpp:4472
void createSubDirs(const Dir &d)
Definition util.cpp:4149
void addHtmlExtensionIfMissing(QCString &fName)
Definition util.cpp:5408

References addHtmlExtensionIfMissing(), Config_getBool, convertToHtml(), createSubDirs(), getMemberList(), and OutputList::writeString().

◆ writeSourceBody()

void FileDefImpl::writeSourceBody ( OutputList & ol,
ClangTUParser * clangParser )
overridevirtual

Implements FileDef.

Definition at line 1187 of file filedef.cpp.

1188{
1189 bool filterSourceFiles = Config_getBool(FILTER_SOURCE_FILES);
1190 OutputCodeList devNullList;
1191 devNullList.add<DevNullCodeGenerator>();
1192#if USE_LIBCLANG
1193 if (Doxygen::clangAssistedParsing && clangParser &&
1194 (getLanguage()==SrcLangExt::Cpp || getLanguage()==SrcLangExt::ObjC))
1195 {
1196 auto &codeOL = ol.codeGenerators();
1197 codeOL.startCodeFragment("DoxyCode");
1198 clangParser->switchToFile(this);
1199 clangParser->writeSources(codeOL,this);
1200 codeOL.endCodeFragment("DoxyCode");
1201 }
1202 else
1203#endif
1204 {
1206 intf->resetCodeParserState();
1207 auto &codeOL = ol.codeGenerators();
1208 codeOL.startCodeFragment("DoxyCode");
1209 bool needs2PassParsing =
1210 Doxygen::parseSourcesNeeded && // we need to parse (filtered) sources for cross-references
1211 !filterSourceFiles && // but user wants to show sources as-is
1212 !getFileFilter(absFilePath(),TRUE).isEmpty(); // and there is a filter used while parsing
1213
1214 if (needs2PassParsing)
1215 {
1216 // parse code for cross-references only (see bug707641)
1217 intf->parseCode(devNullList,QCString(),
1219 getLanguage(),
1220 Config_getBool(STRIP_CODE_COMMENTS),
1221 FALSE,QCString(),this
1222 );
1223 }
1224 intf->parseCode(codeOL,QCString(),
1225 fileToString(absFilePath(),filterSourceFiles,TRUE),
1226 getLanguage(), // lang
1227 Config_getBool(STRIP_CODE_COMMENTS),
1228 FALSE, // isExampleBlock
1229 QCString(), // exampleName
1230 this, // fileDef
1231 -1, // startLine
1232 -1, // endLine
1233 FALSE, // inlineFragment
1234 nullptr, // memberDef
1235 TRUE, // showLineNumbers
1236 nullptr, // searchCtx
1237 !needs2PassParsing // collectXRefs
1238 );
1239 codeOL.endCodeFragment("DoxyCode");
1240 }
1241}
static bool parseSourcesNeeded
Definition doxygen.h:123
void startCodeFragment(const QCString &style)
Definition outputlist.h:278
const OutputCodeList & codeGenerators() const
Definition outputlist.h:357
QCString getFileFilter(const QCString &name, bool isSourceCode)
Definition util.cpp:1369

References absFilePath(), OutputCodeList::add(), Doxygen::clangAssistedParsing, OutputList::codeGenerators(), Config_getBool, FALSE, fileToString(), DefinitionMixin< FileDef >::getDefFileExtension(), getFileFilter(), DefinitionMixin< FileDef >::getLanguage(), QCString::isEmpty(), Doxygen::parserManager, Doxygen::parseSourcesNeeded, OutputCodeList::startCodeFragment(), and TRUE.

◆ writeSourceFooter()

void FileDefImpl::writeSourceFooter ( OutputList & ol)
overridevirtual

Implements FileDef.

Definition at line 1243 of file filedef.cpp.

1244{
1245 ol.endContents();
1246 endFileWithNavPath(ol,this);
1247 ol.enableAll();
1248}

References OutputList::enableAll(), OutputList::endContents(), and endFileWithNavPath().

◆ writeSourceHeader()

void FileDefImpl::writeSourceHeader ( OutputList & ol)
overridevirtual

Write a source listing of this file to the output

Implements FileDef.

Definition at line 1134 of file filedef.cpp.

1135{
1136 bool generateTreeView = Config_getBool(GENERATE_TREEVIEW);
1137 QCString title = m_docname;
1138 if (!m_fileVersion.isEmpty())
1139 {
1140 title+=(" ("+m_fileVersion+")");
1141 }
1142 QCString pageTitle = theTranslator->trSourceFile(title);
1144
1145 bool isDocFile = isDocumentationFile();
1146 bool genSourceFile = !isDocFile && generateSourceFile();
1147 if (getDirDef())
1148 {
1150 !generateTreeView,
1151 !isDocFile && genSourceFile ? QCString() : getOutputFileBase(),
1152 0);
1153 if (!generateTreeView)
1154 {
1156 ol.endQuickIndices();
1157 }
1159 ol.parseText(name());
1161 }
1162 else
1163 {
1164 startFile(ol,getSourceFileBase(),QCString(),pageTitle,HighlightedItem::FileVisible,false,
1165 !isDocFile && genSourceFile ? QCString() : getOutputFileBase(),
1166 0);
1168 ol.parseText(title);
1169 endTitle(ol,getSourceFileBase(),QCString());
1170 }
1171
1172 ol.startContents();
1173
1174 if (isLinkable())
1175 {
1176 ol.startTextLink(getOutputFileBase(),QCString());
1178 ol.endTextLink();
1179
1180 ol.pushGeneratorState();
1182 ol.writeString("\\par\n");
1183 ol.popGeneratorState();
1184 }
1185}
bool generateSourceFile() const override
Definition filedef.cpp:1588
bool isLinkable() const override
Definition filedef.cpp:150
virtual QCString trSourceFile(const QCString &filename)=0
virtual QCString trGotoDocumentation()=0

References Config_getBool, OutputList::disable(), OutputList::disableAllBut(), OutputList::endQuickIndices(), OutputList::endTextLink(), endTitle(), FileVisible, generateSourceFile(), getDirDef(), getOutputFileBase(), getSourceFileBase(), isDocumentationFile(), isLinkable(), m_docname, m_fileVersion, Man, name(), OutputList::parseText(), OutputList::popGeneratorState(), OutputList::pushGeneratorState(), RTF, OutputList::startContents(), startFile(), OutputList::startTextLink(), startTitle(), theTranslator, title(), DefinitionMutable::writeNavigationPath(), and OutputList::writeString().

◆ writeSourceLink()

void FileDefImpl::writeSourceLink ( OutputList & ol)
private

Definition at line 683 of file filedef.cpp.

684{
685 //printf("%s: generateSourceFile()=%d\n",qPrint(name()),generateSourceFile());
686 if (generateSourceFile())
687 {
689 ol.startParagraph();
690 ol.startTextLink(includeName(),QCString());
692 ol.endTextLink();
693 ol.endParagraph();
694 ol.enableAll();
695 }
696}
QCString includeName() const override
Definition filedef.cpp:1717
virtual QCString trGotoSourceCode()=0

References OutputList::disableAllBut(), OutputList::enableAll(), OutputList::endParagraph(), OutputList::endTextLink(), generateSourceFile(), Html, includeName(), OutputList::parseText(), OutputList::startParagraph(), OutputList::startTextLink(), and theTranslator.

Referenced by writeDocumentation().

◆ writeSummaryLinks()

void FileDefImpl::writeSummaryLinks ( OutputList & ol) const
overridevirtual

Reimplemented from DefinitionMixin< FileDef >.

Definition at line 782 of file filedef.cpp.

783{
786 bool first=TRUE;
787 SrcLangExt lang=getLanguage();
788 for (const auto &lde : LayoutDocManager::instance().docEntries(LayoutDocManager::File))
789 {
790 const LayoutDocEntrySection *ls = dynamic_cast<const LayoutDocEntrySection*>(lde.get());
791 if (lde->kind()==LayoutDocEntry::FileClasses && m_classes.declVisible() && ls)
792 {
793 QCString label = "nested-classes";
794 ol.writeSummaryLink(QCString(),label,ls->title(lang),first);
795 first=FALSE;
796 }
797 else if (lde->kind()==LayoutDocEntry::FileInterfaces && m_interfaces.declVisible() && ls)
798 {
799 QCString label = "interfaces";
800 ol.writeSummaryLink(QCString(),label,ls->title(lang),first);
801 first=FALSE;
802 }
803 else if (lde->kind()==LayoutDocEntry::FileStructs && m_structs.declVisible() && ls)
804 {
805 QCString label = "structs";
806 ol.writeSummaryLink(QCString(),label,ls->title(lang),first);
807 first=FALSE;
808 }
809 else if (lde->kind()==LayoutDocEntry::FileExceptions && m_exceptions.declVisible() && ls)
810 {
811 QCString label = "exceptions";
812 ol.writeSummaryLink(QCString(),label,ls->title(lang),first);
813 first=FALSE;
814 }
815 else if (lde->kind()==LayoutDocEntry::FileNamespaces && m_namespaces.declVisible(false) && ls)
816 {
817 QCString label = "namespaces";
818 ol.writeSummaryLink(QCString(),label,ls->title(lang),first);
819 first=FALSE;
820 }
821 else if (lde->kind()==LayoutDocEntry::FileConcepts && m_concepts.declVisible() && ls)
822 {
823 QCString label = "concepts";
824 ol.writeSummaryLink(QCString(),label,ls->title(lang),first);
825 first=FALSE;
826 }
827 else if (lde->kind()==LayoutDocEntry::MemberDecl)
828 {
829 const LayoutDocEntryMemberDecl *lmd = dynamic_cast<const LayoutDocEntryMemberDecl*>(lde.get());
830 if (lmd)
831 {
832 MemberList * ml = getMemberList(lmd->type);
833 if (ml && ml->declVisible())
834 {
835 ol.writeSummaryLink(QCString(),ml->listType().toLabel(),lmd->title(lang),first);
836 first=FALSE;
837 }
838 }
839 }
840 }
841 if (!first)
842 {
843 ol.writeString(" </div>\n");
844 }
846}
MemberListType listType() const
Definition memberlist.h:114
bool declVisible() const
constexpr const char * toLabel() const
Definition types.h:402
void writeSummaryLink(const QCString &file, const QCString &anchor, const QCString &title, bool first)
Definition outputlist.h:615

References MemberList::declVisible(), OutputList::disableAllBut(), FALSE, DefinitionMixin< FileDef >::getLanguage(), getMemberList(), Html, LayoutDocManager::instance(), MemberList::listType(), m_classes, m_concepts, m_exceptions, m_interfaces, m_namespaces, m_structs, OutputList::popGeneratorState(), OutputList::pushGeneratorState(), LayoutDocEntryMemberDecl::title(), LayoutDocEntrySection::title(), MemberListType::toLabel(), TRUE, LayoutDocEntryMemberDecl::type, OutputList::writeString(), and OutputList::writeSummaryLink().

◆ writeTagFile()

void FileDefImpl::writeTagFile ( TextStream & t)
overridevirtual

Implements FileDef.

Definition at line 373 of file filedef.cpp.

374{
375 QCString fn=getOutputFileBase();
377 tagFile << " <compound kind=\"file\">\n";
378 tagFile << " <name>" << convertToXML(name()) << "</name>\n";
379 tagFile << " <path>" << convertToXML(stripFromPath(getPath())) << "</path>\n";
380 tagFile << " <filename>" << fn << "</filename>\n";
381 for (const auto &ii : m_includeList)
382 {
383 const FileDef *fd=ii.fileDef;
384 if (fd && fd->isLinkable() && !fd->isReference())
385 {
386 QCString attr = includeTagFileAttributes(fd->getLanguage(),ii.kind);
387 tagFile << " <includes id=\""
388 << convertToXML(fd->getOutputFileBase()) << "\" "
389 << "name=\"" << convertToXML(fd->name()) << "\" "
390 << attr << ">"
391 << convertToXML(ii.includeName)
392 << "</includes>\n";
393 }
394 }
395 for (const auto &lde : LayoutDocManager::instance().docEntries(LayoutDocManager::File))
396 {
397 switch (lde->kind())
398 {
399 case LayoutDocEntry::FileClasses:
400 {
402 }
403 break;
404 case LayoutDocEntry::FileInterfaces:
405 {
407 }
408 break;
409 case LayoutDocEntry::FileStructs:
410 {
412 }
413 break;
414 case LayoutDocEntry::FileExceptions:
415 {
417 }
418 break;
419 case LayoutDocEntry::FileConcepts:
420 {
421 for (const auto *nd : m_concepts)
422 {
423 if (nd->isLinkableInProject())
424 {
425 tagFile << " <concept>" << convertToXML(nd->name()) << "</concept>\n";
426 }
427 }
428 }
429 break;
430 case LayoutDocEntry::FileNamespaces:
431 {
432 for (const auto *nd : m_namespaces)
433 {
434 if (nd->isLinkableInProject())
435 {
436 tagFile << " <namespace>" << convertToXML(nd->name()) << "</namespace>\n";
437 }
438 }
439 }
440 break;
441 case LayoutDocEntry::MemberDecl:
442 {
443 const LayoutDocEntryMemberDecl *lmd = dynamic_cast<const LayoutDocEntryMemberDecl*>(lde.get());
444 if (lmd)
445 {
446 MemberList * ml = getMemberList(lmd->type);
447 if (ml)
448 {
449 ml->writeTagFile(tagFile,false,false);
450 }
451 }
452 }
453 break;
454 case LayoutDocEntry::MemberGroups:
455 {
456 for (const auto &mg : m_memberGroups)
457 {
458 mg->writeTagFile(tagFile);
459 }
460 }
461 break;
462 default:
463 break;
464 }
465 }
466
468 tagFile << " </compound>\n";
469}
void writeDocAnchorsToTagFile(TextStream &fs) const override
QCString getPath() const override
Definition filedef.cpp:147
void writeClassesToTagFile(TextStream &t, const ClassLinkedRefMap &list)
Definition filedef.cpp:571
void writeTagFile(TextStream &, bool useQualifiedName=false, bool showNamespaceMembers=true)
QCString includeTagFileAttributes(SrcLangExt lang, IncludeKind kind)
Definition filedef.cpp:104

References addHtmlExtensionIfMissing(), convertToXML(), Definition::getLanguage(), getMemberList(), Definition::getOutputFileBase(), getOutputFileBase(), getPath(), includeTagFileAttributes(), LayoutDocManager::instance(), Definition::isLinkable(), Definition::isReference(), m_classes, m_concepts, m_exceptions, m_includeList, m_interfaces, m_memberGroups, m_namespaces, m_structs, Definition::name(), name(), stripFromPath(), LayoutDocEntryMemberDecl::type, writeClassesToTagFile(), DefinitionMixin< FileDef >::writeDocAnchorsToTagFile(), and MemberList::writeTagFile().

Member Data Documentation

◆ m_classes

◆ m_concepts

ConceptLinkedRefMap FileDefImpl::m_concepts
private

◆ m_dir

DirDef* FileDefImpl::m_dir = nullptr
private

Definition at line 252 of file filedef.cpp.

Referenced by FileDefImpl(), getDirDef(), and setDirDef().

◆ m_docname

QCString FileDefImpl::m_docname
private

Definition at line 247 of file filedef.cpp.

Referenced by docName(), FileDefImpl(), writeDocumentation(), and writeSourceHeader().

◆ m_exceptions

ClassLinkedRefMap FileDefImpl::m_exceptions
private

◆ m_fileName

QCString FileDefImpl::m_fileName
private

Definition at line 246 of file filedef.cpp.

Referenced by FileDefImpl(), fileName(), and name().

◆ m_filePath

QCString FileDefImpl::m_filePath
private

Definition at line 242 of file filedef.cpp.

Referenced by absFilePath(), acquireFileVersion(), FileDefImpl(), and getSourceFileBase().

◆ m_fileVersion

QCString FileDefImpl::m_fileVersion
private

◆ m_hasIncludedByGraph

bool FileDefImpl::m_hasIncludedByGraph = Config_getBool(INCLUDED_BY_GRAPH)
private

Definition at line 264 of file filedef.cpp.

Referenced by hasIncludedByGraph(), overrideIncludedByGraph(), and writeIncludedByGraph().

◆ m_hasIncludeGraph

bool FileDefImpl::m_hasIncludeGraph = Config_getBool(INCLUDE_GRAPH)
private

Definition at line 263 of file filedef.cpp.

Referenced by hasIncludeGraph(), overrideIncludeGraph(), and writeIncludeGraph().

◆ m_inclByDepFileName

QCString FileDefImpl::m_inclByDepFileName
private

Definition at line 244 of file filedef.cpp.

Referenced by includedByDependencyGraphFileName(), and setDiskNameLocal().

◆ m_inclDepFileName

QCString FileDefImpl::m_inclDepFileName
private

Definition at line 243 of file filedef.cpp.

Referenced by includeDependencyGraphFileName(), and setDiskNameLocal().

◆ m_includedByList

IncludeInfoList FileDefImpl::m_includedByList
private

Definition at line 238 of file filedef.cpp.

Referenced by addIncludedByDependency(), includedByFileList(), and sortMemberLists().

◆ m_includedByMap

IncludeInfoMap FileDefImpl::m_includedByMap
private

Definition at line 237 of file filedef.cpp.

Referenced by addIncludedByDependency(), and generateSourceFile().

◆ m_includeList

IncludeInfoList FileDefImpl::m_includeList
private

◆ m_includeMap

IncludeInfoMap FileDefImpl::m_includeMap
private

Definition at line 235 of file filedef.cpp.

Referenced by addIncludeDependency(), and isIncluded().

◆ m_interfaces

ClassLinkedRefMap FileDefImpl::m_interfaces
private

◆ m_isSource

bool FileDefImpl::m_isSource
private

Definition at line 250 of file filedef.cpp.

Referenced by FileDefImpl(), and isSource().

◆ m_memberGroups

◆ m_memberLists

◆ m_moduleDef

ModuleDef* FileDefImpl::m_moduleDef = nullptr
private

Definition at line 253 of file filedef.cpp.

Referenced by getModuleDef(), and setModuleDef().

◆ m_namespaces

◆ m_outputDiskName

QCString FileDefImpl::m_outputDiskName
private

Definition at line 245 of file filedef.cpp.

Referenced by getOutputFileBase(), getSourceFileBase(), and setDiskNameLocal().

◆ m_path

QCString FileDefImpl::m_path
private

Definition at line 241 of file filedef.cpp.

Referenced by FileDefImpl(), and getPath().

◆ m_srcDefMap

DefinitionLineMap FileDefImpl::m_srcDefMap
private

Definition at line 248 of file filedef.cpp.

Referenced by addSourceRef(), and getSourceDefinition().

◆ m_srcMemberMap

MemberDefLineMap FileDefImpl::m_srcMemberMap
private

Definition at line 249 of file filedef.cpp.

Referenced by addSourceRef(), and getSourceMember().

◆ m_structs

ClassLinkedRefMap FileDefImpl::m_structs
private

◆ m_subGrouping

bool FileDefImpl::m_subGrouping
private

Definition at line 262 of file filedef.cpp.

Referenced by addMembersToMemberGroup(), FileDefImpl(), subGrouping(), and writeMemberGroups().

◆ m_usingDeclList

LinkedRefMap<const Definition> FileDefImpl::m_usingDeclList
private

◆ m_usingDirList

LinkedRefMap<NamespaceDef> FileDefImpl::m_usingDirList
private

The documentation for this class was generated from the following file: