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

Public Member Functions

 FileDefImpl (const DString &p, const DString &n, const DString &ref=DString(), const DString &dn=DString())
 ~FileDefImpl () override
DefType definitionType () const override
CodeSymbolType codeSymbolType () const override
const DStringname () const override
DString displayName (bool=true) const override
DString fileName () const override
DString getOutputFileBase () const override
DString anchor () const override
DString getSourceFileBase () const override
DString includeName () const override
DString includeDependencyGraphFileName () const override
DString includedByDependencyGraphFileName () const override
DString absFilePath () const override
const DStringdocName () const override
bool isSource () const override
bool isDocumentationFile () const override
const DefinitiongetSourceDefinition (int lineNr) const override
const MemberDefgetSourceMember (int lineNr) const override
DString getPath () const override
DString getVersion () const override
bool isLinkableInProject () const override
bool isLinkable () const override
bool isIncluded (const DString &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
DString title () const override
bool hasDetailedDescription () const override
DString 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 writePageNavigation (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 DString &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 DString &incName, IncludeKind kind) override
void addIncludedByDependency (const FileDef *fd, const DString &incName, IncludeKind kind) override
void addMembersToMemberGroup () override
void distributeMemberGroupDocumentation () override
void findSectionsInDocumentation () override
void addIncludedUsingDirectives (FileDefSet &visitedFiles) override
void addListReferences () override
void addRequirementReferences () override
bool hasIncludeGraph () const override
bool hasIncludedByGraph () const override
void overrideIncludeGraph (bool e) override
void overrideIncludedByGraph (bool e) override
bool visibleInIndex (bool &genSourceFile) const override
 Returns true if this file is visible in the index.
Public Member Functions inherited from DefinitionMixin< FileDef >
 DefinitionMixin (const DString &defFileName, int defLine, size_t defColumn, const DString &name, const char *b=nullptr, const char *d=nullptr, bool isSymbol=true)
DefinitionMixinoperator= (const DefinitionMixin &other)
 ~DefinitionMixin () override=default
bool isAlias () const override
bool isAnonymous () const override
const DStringlocalName () const override
DString qualifiedName () const override
DString symbolName () const override
DString getSourceAnchor () const override
DString documentation () const override
int docLine () const override
DString docFile () const override
DString briefDescription (bool abbreviate=false) const override
DString briefDescriptionAsTooltip () const override
int briefLine () const override
DString inbodyDocumentation () const override
DString inbodyFile () const override
int inbodyLine () const override
DString briefFile () const override
DString getDefFileName () const override
DString getDefFileExtension () const override
int getDefLine () const override
size_t 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
DString getReference () const override
bool isReference () const override
DString externalReference (const DString &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 RequirementRefsrequirementReferences () const override
const DefinitionfindInnerCompound (const DString &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
DString id () const override
const SectionRefsgetSectionRefs () const override
void setName (const DString &name) override
void setId (const DString &name) override
void setDefFile (const DString &df, int defLine, size_t defColumn) override
void setDocumentation (const DString &doc, const DString &docFile, int docLine, bool stripWhiteSpace=true) override
void setBriefDescription (const DString &brief, const DString &briefFile, int briefLine) override
void setInbodyDocumentation (const DString &doc, const DString &docFile, int docLine) override
void setReference (const DString &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 DString &sourceRefName) override
void addSourceReferences (MemberDef *md, const DString &sourceRefName) override
void setRefItems (const RefItemVector &sli) override
void setRequirementReferences (const RequirementRefs &rqli) 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 DString &scopeName) const override
bool hasSourceRefs () const override
bool hasSourceReffedBy () const override
void writeSourceRefs (OutputList &ol, const DString &scopeName) const override
void writeSourceReffedBy (OutputList &ol, const DString &scopeName) const override
bool hasRequirementRefs () const override
void writeRequirementRefs (OutputList &ol) const override
void makePartOfGroup (GroupDef *gd) override
void writeNavigationPath (OutputList &ol) const override
DString navigationPathAsString () const override
DString pathFragment () const override
void writeDocAnchorsToTagFile (TextStream &fs) const override
void setLocalName (const DString &name) override
void writeToc (OutputList &ol, const LocalToc &lt) const override
void computeTooltip () override
void _setSymbolName (const DString &name) override
DString _symbolName () const override

Private Member Functions

void setDiskNameLocal (const DString &name)
void acquireFileVersion ()
void addMemberToList (MemberListType lt, MemberDef *md)
void writeMemberDeclarations (OutputList &ol, MemberListType lt, const DString &title)
void writeMemberDocumentation (OutputList &ol, MemberListType lt, const DString &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 DString &title, bool isConstantGroup)
void writeClassDeclarations (OutputList &ol, const DString &title, const ClassLinkedRefMap &list)
void writeConcepts (OutputList &ol, const DString &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 DString &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
DString m_path
DString m_filePath
DString m_inclDepFileName
DString m_inclByDepFileName
DString m_outputDiskName
DString m_fileName
DString m_docname
DefinitionLineMap m_srcDefMap
MemberDefLineMap m_srcMemberMap
bool m_isSource
DString 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 118 of file filedef.cpp.

Constructor & Destructor Documentation

◆ FileDefImpl()

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

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(p+nm,1,1,nm,nullptr,nullptr,!p.empty())
282{
284 m_filePath=p+nm;
285 m_fileName=nm;
286
287 setReference(lref);
288 setDiskNameLocal(!dn.empty() ? dn : nm);
289 m_isSource = EntryType::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}
bool empty() const
Returns true iff the string is empty (std::string compatible alias for isEmpty()).
Definition dstring.h:148
DString & prepend(const char *s)
Definition dstring.h:515
const DString & name() const override
void setLanguage(SrcLangExt lang) override
void setReference(const DString &r) override
DefinitionMixin(const DString &defFileName, int defLine, size_t defColumn, const DString &name, const char *b=nullptr, const char *d=nullptr, bool isSymbol=true)
static EntryType guessSection(const DString &name)
Definition types.cpp:22
DirDef * m_dir
Definition filedef.cpp:252
void setDiskNameLocal(const DString &name)
Definition filedef.cpp:307
void acquireFileVersion()
Definition filedef.cpp:1697
bool m_isSource
Definition filedef.cpp:250
DString m_path
Definition filedef.cpp:241
bool m_subGrouping
Definition filedef.cpp:262
DString m_fileName
Definition filedef.cpp:246
DString m_docname
Definition filedef.cpp:247
DString m_filePath
Definition filedef.cpp:242
#define Config_getBool(name)
Definition config.h:33
DString removeLongPathMarker(const DString &path)
Definition portable.cpp:656
SrcLangExt getLanguageFromFileName(const DString &fileName, SrcLangExt defLang)
Definition util.cpp:4168
DString stripFromPath(const DString &path)
Definition util.cpp:219

References acquireFileVersion(), Config_getBool, DefinitionMixin< FileDef >::DefinitionMixin(), DString::empty(), getLanguageFromFileName(), EntryType::guessSection(), m_dir, m_docname, m_fileName, m_filePath, m_isSource, m_path, m_subGrouping, DefinitionMixin< Base >::name(), DString::prepend(), Portable::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()

DString FileDefImpl::absFilePath ( ) const
inlineoverridevirtual

Returns the absolute path including the file name.

Implements FileDef.

Definition at line 137 of file filedef.cpp.

137{ return m_filePath; }

References m_filePath.

Referenced by parseSource(), and writeSourceBody().

◆ acquireFileVersion()

void FileDefImpl::acquireFileVersion ( )
private

Definition at line 1697 of file filedef.cpp.

1698{
1699 DString vercmd = Config_getString(FILE_VERSION_FILTER);
1700 if (!vercmd.empty() && !m_filePath.empty() && !isReference() &&
1701 m_filePath!="generated" && m_filePath!="graph_legend.dox")
1702 {
1703 msg("Version of {} : ",m_filePath);
1704 DString cmd = vercmd+" \""+m_filePath+"\"";
1705 Debug::print(Debug::ExtCmd,0,"Executing popen(`{}`)\n",cmd);
1706 FILE *f=Portable::popen(cmd,"r");
1707 if (!f)
1708 {
1709 err("could not execute {}\n",vercmd);
1710 return;
1711 }
1712 const int bufSize=1024;
1713 char buf[bufSize];
1714 int numRead = static_cast<int>(fread(buf,1,bufSize-1,f));
1716 if (numRead>0 && numRead<bufSize)
1717 {
1718 buf[numRead]='\0';
1719 m_fileVersion=DString(buf,numRead).stripWhiteSpace();
1720 if (!m_fileVersion.empty())
1721 {
1722 msg("{}\n",m_fileVersion);
1723 return;
1724 }
1725 }
1726 msg("no version available\n");
1727 }
1728}
DString stripWhiteSpace() const
returns a copy of this string with leading and trailing whitespace removed
Definition dstring.h:337
@ ExtCmd
Definition debug.h:37
static void print(DebugMask mask, int prio, fmt::format_string< Args... > fmt, Args &&... args)
Definition debug.h:78
virtual bool isReference() const =0
DString 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 DString &name, const DString &type)
Definition portable.cpp:495
int pclose(FILE *stream)
Definition portable.cpp:504

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

Referenced by FileDefImpl().

◆ addIncludedByDependency()

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

Implements FileDef.

Definition at line 1589 of file filedef.cpp.

1590{
1591 //printf("FileDefImpl::addIncludedByDependency(%p,%s,%d)\n",fd,incName,local);
1592 DString iName = fd ? fd->absFilePath() : incName;
1593 if (!iName.empty() && m_includedByMap.find(iName.str())==m_includedByMap.end())
1594 {
1595 m_includedByList.emplace_back(fd,incName,kind);
1596 m_includedByMap.emplace(iName.str(),&m_includedByList.back());
1597 }
1598}
const std::string & str() const
Definition dstring.h:645
virtual DString absFilePath() const =0
IncludeInfoList m_includedByList
Definition filedef.cpp:238
IncludeInfoMap m_includedByMap
Definition filedef.cpp:237

References FileDef::absFilePath(), DString::empty(), m_includedByList, m_includedByMap, and DString::str().

◆ addIncludeDependency()

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

Implements FileDef.

Definition at line 1530 of file filedef.cpp.

1531{
1532 //printf("FileDefImpl::addIncludeDependency(%p,%s,%d)\n",(void*)fd,qPrint(incName),kind);
1533 DString iName = fd ? fd->absFilePath() : incName;
1534 if (!iName.empty() && m_includeMap.find(iName.str())==m_includeMap.end())
1535 {
1536 m_includeList.emplace_back(fd,incName,kind);
1537 m_includeMap.emplace(iName.str(),&m_includeList.back());
1538 }
1539}
IncludeInfoMap m_includeMap
Definition filedef.cpp:235
IncludeInfoList m_includeList
Definition filedef.cpp:236

References FileDef::absFilePath(), DString::empty(), m_includeList, m_includeMap, and DString::str().

◆ addIncludedUsingDirectives()

void FileDefImpl::addIncludedUsingDirectives ( FileDefSet & visitedFiles)
overridevirtual

Implements FileDef.

Definition at line 1541 of file filedef.cpp.

1542{
1543 if (visitedFiles.find(this)!=visitedFiles.end()) return; // file already processed
1544 visitedFiles.insert(this);
1545 //printf("( FileDefImpl::addIncludedUsingDirectives for file %s\n",qPrint(name()));
1546
1547 if (!m_includeList.empty()) // file contains #includes
1548 {
1549 {
1550 for (const auto &ii : m_includeList) // foreach #include...
1551 {
1552 if (ii.fileDef) // ...that is a known file
1553 {
1554 // recurse into this file
1555 const_cast<FileDef*>(ii.fileDef)->addIncludedUsingDirectives(visitedFiles);
1556 }
1557 }
1558 }
1559 {
1560 // iterate through list from last to first
1561 for (auto ii_it = m_includeList.rbegin(); ii_it!=m_includeList.rend(); ++ii_it)
1562 {
1563 auto &ii = *ii_it;
1564 if (ii.fileDef && ii.fileDef!=this)
1565 {
1566 // add using directives
1567 auto unl = ii.fileDef->getUsedNamespaces();
1568 for (auto it = unl.rbegin(); it!=unl.rend(); ++it)
1569 {
1570 auto *nd = *it;
1571 //printf(" adding using directive for %s\n",qPrint(nd->qualifiedName()));
1572 m_usingDirList.prepend(nd->qualifiedName(),nd);
1573 }
1574 // add using declarations
1575 auto udl = ii.fileDef->getUsedDefinitions();
1576 for (auto it = udl.rbegin(); it!=udl.rend(); ++it)
1577 {
1578 auto *d = *it;
1579 m_usingDeclList.prepend(d->qualifiedName(),d);
1580 }
1581 }
1582 }
1583 }
1584 }
1585 //printf(") end FileDefImpl::addIncludedUsingDirectives for file %s\n",qPrint(name()));
1586}
void addIncludedUsingDirectives(FileDefSet &visitedFiles) override
Definition filedef.cpp:1541
LinkedRefMap< const Definition > m_usingDeclList
Definition filedef.cpp:240
LinkedRefMap< NamespaceDef > m_usingDirList
Definition filedef.cpp:239
bool prepend(const char *k, T *obj)
Definition linkedmap.h:317

References addIncludedUsingDirectives(), DString::insert(), m_includeList, m_usingDeclList, m_usingDirList, and LinkedRefMap< T, Hash, KeyEqual, Map >::prepend().

Referenced by addIncludedUsingDirectives().

◆ addListReferences()

void FileDefImpl::addListReferences ( )
overridevirtual

Implements FileDef.

Definition at line 1618 of file filedef.cpp.

1619{
1622 theTranslator->trFile(true,true),
1624 DString(),
1625 nullptr
1626 );
1627 for (const auto &mg : m_memberGroups)
1628 {
1629 mg->addListReferences(this);
1630 }
1631 for (auto &ml : m_memberLists)
1632 {
1633 if (ml->listType().isDocumentation())
1634 {
1635 ml->addListReferences(this);
1636 }
1637 }
1638}
const RefItemVector & xrefListItems() const override
const DString & name() const override
Definition filedef.cpp:1478
MemberGroupList m_memberGroups
Definition filedef.cpp:255
DString getOutputFileBase() const override
Definition filedef.cpp:1743
MemberLists m_memberLists
Definition filedef.cpp:254
virtual DString trFile(bool first_capital, bool singular)=0
Translator * theTranslator
Definition language.cpp:76
void addRefItem(const RefItemVector &sli, const DString &key, const DString &prefix, const DString &name, const DString &title, const DString &args, const Definition *scope)
Definition reflist.h:134

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

◆ addMembersToMemberGroup()

void FileDefImpl::addMembersToMemberGroup ( )
overridevirtual

Implements FileDef.

Definition at line 1295 of file filedef.cpp.

1296{
1297 for (auto &ml : m_memberLists)
1298 {
1299 if (ml->listType().isDeclaration())
1300 {
1302 }
1303 }
1304
1305 // add members inside sections to their groups
1306 for (const auto &mg : m_memberGroups)
1307 {
1308 if (mg->allMembersInSameSection() && m_subGrouping)
1309 {
1310 //printf("----> addToDeclarationSection(%s)\n",qPrint(mg->header()));
1311 mg->addToDeclarationSection();
1312 }
1313 }
1314}
void addMembersToMemberGroup() override
Definition filedef.cpp:1295

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

Referenced by addMembersToMemberGroup().

◆ addMemberToList()

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

Definition at line 1754 of file filedef.cpp.

1755{
1756 bool sortBriefDocs = Config_getBool(SORT_BRIEF_DOCS);
1757 bool sortMemberDocs = Config_getBool(SORT_MEMBER_DOCS);
1758 const auto &ml = m_memberLists.get(lt,MemberListContainer::File);
1759 ml->setNeedsSorting(
1760 (ml->listType().isDeclaration() && sortBriefDocs) ||
1761 (ml->listType().isDocumentation() && sortMemberDocs));
1762 ml->push_back(md);
1763 if (ml->listType().isDeclaration())
1764 {
1765 MemberDefMutable *mdm = toMemberDefMutable(md);
1766 if (mdm)
1767 {
1768 mdm->setSectionList(this,ml.get());
1769 }
1770 }
1771}
virtual void setSectionList(const Definition *container, const MemberList *sl)=0
const std::unique_ptr< MemberList > & get(MemberListType lt, MemberListContainer con)
Definition memberlist.h:192
MemberDefMutable * toMemberDefMutable(Definition *d)

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

Referenced by insertMember().

◆ addRequirementReferences()

void FileDefImpl::addRequirementReferences ( )
overridevirtual

Implements FileDef.

Definition at line 1640 of file filedef.cpp.

1641{
1643 for (const auto &mg : m_memberGroups)
1644 {
1645 mg->addRequirementReferences(this);
1646 }
1647 for (auto &ml : m_memberLists)
1648 {
1649 if (ml->listType().isDocumentation())
1650 {
1651 ml->addRequirementReferences(this);
1652 }
1653 }
1654}
static RequirementManager & instance()
void addRequirementRefsForSymbol(const Definition *symbol)

References RequirementManager::addRequirementRefsForSymbol(), RequirementManager::instance(), m_memberGroups, and m_memberLists.

◆ addSourceRef()

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

Implements FileDef.

Definition at line 1486 of file filedef.cpp.

1487{
1488 //printf("FileDefImpl::addSourceRef(%d,%s,%s)\n",line,qPrint(d?d->name():"nullptr"),qPrint(md?md->name():"nullptr"));
1489 if (d)
1490 {
1491 m_srcDefMap.emplace(line,d);
1492 if (md) m_srcMemberMap.emplace(line,md);
1493 //printf("Adding member %s with anchor %s at line %d to file %s\n",
1494 // md?qPrint(md->name()):"<none>",md?qPrint(md->anchor()):"<none>",line,qPrint(name()));
1495 }
1496}
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 1525 of file filedef.cpp.

1526{
1528}
virtual DString qualifiedName() const =0
bool add(const char *k, T *obj)
Definition linkedmap.h:284

References LinkedRefMap< T, Hash, KeyEqual, Map >::add(), m_usingDeclList, and Definition::qualifiedName().

Referenced by combineUsingRelations().

◆ addUsingDirective()

void FileDefImpl::addUsingDirective ( NamespaceDef * nd)
overridevirtual

Implements FileDef.

Definition at line 1513 of file filedef.cpp.

1514{
1516 //printf("%p: FileDefImpl::addUsingDirective: %s:%d\n",this,qPrint(name()),usingDirList->count());
1517}

References LinkedRefMap< T, Hash, KeyEqual, Map >::add(), m_usingDirList, and Definition::qualifiedName().

Referenced by combineUsingRelations().

◆ anchor()

DString FileDefImpl::anchor ( ) const
inlineoverridevirtual

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

Implements Definition.

Definition at line 132 of file filedef.cpp.

132{ return DString(); }

◆ codeSymbolType()

CodeSymbolType FileDefImpl::codeSymbolType ( ) const
inlineoverridevirtual

Used for syntax highlighting symbol class

Implements Definition.

Definition at line 126 of file filedef.cpp.

126{ return CodeSymbolType::Default; }

References Default.

◆ combineUsingRelations()

void FileDefImpl::combineUsingRelations ( )
overridevirtual

Implements FileDef.

Definition at line 1658 of file filedef.cpp.

1659{
1660 LinkedRefMap<NamespaceDef> usingDirList = m_usingDirList;
1661 NamespaceDefSet visitedNamespaces;
1662 for (auto &nd : usingDirList)
1663 {
1664 NamespaceDefMutable *ndm = toNamespaceDefMutable(nd);
1665 if (ndm)
1666 {
1667 ndm->combineUsingRelations(visitedNamespaces);
1668 }
1669 }
1670
1671 for (auto &nd : usingDirList)
1672 {
1673 // add used namespaces of namespace nd to this namespace
1674 for (const auto &und : nd->getUsedNamespaces())
1675 {
1676 addUsingDirective(und);
1677 }
1678 // add used classes of namespace nd to this namespace
1679 for (const auto &ud : nd->getUsedDefinitions())
1680 {
1682 }
1683 }
1684}
void addUsingDirective(NamespaceDef *nd) override
Definition filedef.cpp:1513
void addUsingDeclaration(const Definition *d) override
Definition filedef.cpp:1525
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:1819
void setAnchors()

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

◆ countMembers()

void FileDefImpl::countMembers ( )
overridevirtual

Implements FileDef.

Definition at line 1910 of file filedef.cpp.

1911{
1912 for (auto &ml : m_memberLists)
1913 {
1914 ml->countDecMembers();
1915 ml->countDocMembers();
1916 }
1917 for (const auto &mg : m_memberGroups)
1918 {
1919 mg->countDecMembers();
1920 mg->countDocMembers();
1921 }
1922}

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 125 of file filedef.cpp.

125{ return TypeFile; }

References definitionType(), and Definition::TypeFile.

Referenced by definitionType().

◆ displayName()

DString FileDefImpl::displayName ( bool includeScope = true) const
inlineoverridevirtual

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

Implements Definition.

Definition at line 129 of file filedef.cpp.

129{ return localName(); }
const DString & localName() const override

References DefinitionMixin< FileDef >::localName().

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 DString & FileDefImpl::docName ( ) const
inlineoverridevirtual

Returns the name as it is used in the documentation

Implements FileDef.

Definition at line 138 of file filedef.cpp.

138{ return m_docname; }

References m_docname.

◆ endMemberDeclarations()

void FileDefImpl::endMemberDeclarations ( OutputList & ol)
private

Definition at line 751 of file filedef.cpp.

752{
754}
void endMemberSections()
Definition outputlist.h:459

References OutputList::endMemberSections().

Referenced by writeDocumentation().

◆ endMemberDocumentation()

void FileDefImpl::endMemberDocumentation ( OutputList & ol)
private

Definition at line 765 of file filedef.cpp.

766{
767 if (Config_getBool(SEPARATE_MEMBER_PAGES))
768 {
771 }
772}
static bool suppressDocWarnings
Definition doxygen.h:123
void enable(OutputType o)

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

Referenced by writeDocumentation().

◆ fileName()

DString FileDefImpl::fileName ( ) const
inlineoverridevirtual

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

Implements FileDef.

Definition at line 130 of file filedef.cpp.

130{ return m_fileName; }

References m_fileName.

◆ fileVersion()

DString FileDefImpl::fileVersion ( ) const
overridevirtual

Implements FileDef.

Definition at line 1895 of file filedef.cpp.

1896{
1897 return m_fileVersion;
1898}

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}
DString docFile() const override
DString briefDescription(bool abbreviate=false) const override
DString documentation() const override
DString inbodyDocumentation() const override
void docFindSections(const DString &input, const Definition *d, const DString &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 1606 of file filedef.cpp.

1607{
1608 bool sourceBrowser = Config_getBool(SOURCE_BROWSER);
1609 bool verbatimHeaders = Config_getBool(VERBATIM_HEADERS);
1610 return !isReference() &&
1611 (sourceBrowser ||
1612 (verbatimHeaders && (EntryType::guessSection(name()).isHeader() || !m_includedByMap.empty()))
1613 ) &&
1615}
bool isReference() const override
bool isDocumentationFile() const override
Definition filedef.cpp:1686

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

Referenced by visibleInIndex(), writeSourceHeader(), and writeSourceLink().

◆ getAllIncludeFilesRecursively()

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

Implements FileDef.

Definition at line 1877 of file filedef.cpp.

1878{
1879 StringUnorderedSet includes;
1880 ::getAllIncludeFilesRecursively(includes,this,incFiles);
1881}
void getAllIncludeFilesRecursively(StringVector &incFiles) const override
Definition filedef.cpp:1877
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 160 of file filedef.cpp.

160{ 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 159 of file filedef.cpp.

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

References m_concepts.

◆ getDirDef()

DirDef * FileDefImpl::getDirDef ( ) const
inlineoverridevirtual

Implements FileDef.

Definition at line 148 of file filedef.cpp.

148{ return m_dir; }

References m_dir.

Referenced by writeDocumentation(), and writeSourceHeader().

◆ getMemberGroups()

const MemberGroupList & FileDefImpl::getMemberGroups ( ) const
inlineoverridevirtual

Implements FileDef.

Definition at line 157 of file filedef.cpp.

157{ return m_memberGroups; }

References m_memberGroups.

◆ getMemberList()

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

Implements FileDef.

Definition at line 1819 of file filedef.cpp.

1820{
1821 for (auto &ml : m_memberLists)
1822 {
1823 if (ml->listType()==lt)
1824 {
1825 return ml.get();
1826 }
1827 }
1828 return nullptr;
1829}

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 156 of file filedef.cpp.

156{ return m_memberLists; }

References m_memberLists.

◆ getModuleDef()

ModuleDef * FileDefImpl::getModuleDef ( ) const
inlineoverridevirtual

Implements FileDef.

Definition at line 149 of file filedef.cpp.

149{ 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 158 of file filedef.cpp.

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

References m_namespaces.

◆ getOutputFileBase()

DString 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 1743 of file filedef.cpp.

1744{
1745 return m_outputDiskName;
1746}
DString m_outputDiskName
Definition filedef.cpp:245

References m_outputDiskName.

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

◆ getPath()

DString FileDefImpl::getPath ( ) const
inlineoverridevirtual

Returns the absolute path of this file.

Implements FileDef.

Definition at line 143 of file filedef.cpp.

143{ return m_path; }

References m_path.

Referenced by writeTagFile().

◆ getSourceDefinition()

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

Implements FileDef.

Definition at line 1498 of file filedef.cpp.

1499{
1500 auto it = m_srcDefMap.find(lineNr);
1501 //printf("%s::getSourceDefinition(%d)=%s\n",qPrint(name()),lineNr,it!=m_srcDefMap.end()?qPrint(it->second->name()):"none");
1502 return it!=m_srcDefMap.end() ? it->second : nullptr;
1503}

References m_srcDefMap.

◆ getSourceFileBase()

DString FileDefImpl::getSourceFileBase ( ) const
overridevirtual

Returns the name of the source listing of this definition.

Reimplemented from DefinitionMixin< FileDef >.

Definition at line 1731 of file filedef.cpp.

1732{
1733 if (Htags::useHtags)
1734 {
1736 }
1737 else
1738 {
1739 return m_outputDiskName+"_source";
1740 }
1741}
static DString path2URL(const DString &path)
Definition htags.cpp:159
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 1505 of file filedef.cpp.

1506{
1507 auto it = m_srcMemberMap.find(lineNr);
1508 //printf("%s::getSourceMember(%d)=%s\n",qPrint(name()),lineNr,it!=m_srcMemberMap.end()?qPrint(it->second->name()):"none");
1509 return it!=m_srcMemberMap.end() ? it->second : nullptr;
1510}

References m_srcMemberMap.

◆ getUsedDefinitions()

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

Implements FileDef.

Definition at line 151 of file filedef.cpp.

151{ return m_usingDeclList; }

References m_usingDeclList.

◆ getUsedNamespaces()

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

Implements FileDef.

Definition at line 1519 of file filedef.cpp.

1520{
1521 //printf("%p: FileDefImpl::getUsedNamespace: %s:%d\n",this,qPrint(name()),usingDirList?usingDirList->count():0);
1522 return m_usingDirList;
1523}

References m_usingDirList.

◆ getVersion()

DString FileDefImpl::getVersion ( ) const
inlineoverridevirtual

Returns version of this file.

Implements FileDef.

Definition at line 144 of file filedef.cpp.

144{ 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().empty() && repeatBrief) ||
368 !documentation().stripWhiteSpace().empty() || // avail empty section
369 (sourceBrowser && getStartBodyLine()!=-1 && getBodyDef()) ||
371 );
372}
bool hasRequirementRefs() const override
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:75

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

Referenced by writeDetailedDescription().

◆ hasIncludedByGraph()

bool FileDefImpl::hasIncludedByGraph ( ) const
overridevirtual

Implements FileDef.

Definition at line 1951 of file filedef.cpp.

1952{
1953 return m_hasIncludedByGraph;
1954}
bool m_hasIncludedByGraph
Definition filedef.cpp:264

References m_hasIncludedByGraph.

◆ hasIncludeGraph()

bool FileDefImpl::hasIncludeGraph ( ) const
overridevirtual

Implements FileDef.

Definition at line 1946 of file filedef.cpp.

1947{
1948 return m_hasIncludeGraph;
1949}
bool m_hasIncludeGraph
Definition filedef.cpp:263

References m_hasIncludeGraph.

◆ includedByDependencyGraphFileName()

DString FileDefImpl::includedByDependencyGraphFileName ( ) const
overridevirtual

Implements FileDef.

Definition at line 1905 of file filedef.cpp.

1906{
1907 return m_inclByDepFileName;
1908}
DString m_inclByDepFileName
Definition filedef.cpp:244

References m_inclByDepFileName.

◆ includedByFileList()

const IncludeInfoList & FileDefImpl::includedByFileList ( ) const
inlineoverridevirtual

Implements FileDef.

Definition at line 153 of file filedef.cpp.

153{ return m_includedByList; }

References m_includedByList.

◆ includeDependencyGraphFileName()

DString FileDefImpl::includeDependencyGraphFileName ( ) const
overridevirtual

Implements FileDef.

Definition at line 1900 of file filedef.cpp.

1901{
1902 return m_inclDepFileName;
1903}
DString m_inclDepFileName
Definition filedef.cpp:243

References m_inclDepFileName.

◆ includeFileList()

const IncludeInfoList & FileDefImpl::includeFileList ( ) const
inlineoverridevirtual

Implements FileDef.

Definition at line 152 of file filedef.cpp.

152{ return m_includeList; }

References m_includeList.

◆ includeName()

DString FileDefImpl::includeName ( ) const
overridevirtual

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

Implements FileDef.

Definition at line 1749 of file filedef.cpp.

1750{
1751 return getSourceFileBase();
1752}
DString getSourceFileBase() const override
Definition filedef.cpp:1731

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 1440 of file filedef.cpp.

1441{
1442 if (cd->isHidden()) return;
1443
1444 ClassLinkedRefMap *list = &m_classes;
1445
1446 if (Config_getBool(OPTIMIZE_OUTPUT_SLICE))
1447 {
1449 {
1450 list = &m_interfaces;
1451 }
1452 else if (cd->compoundType()==ClassDef::Struct)
1453 {
1454 list = &m_structs;
1455 }
1456 else if (cd->compoundType()==ClassDef::Exception)
1457 {
1458 list = &m_exceptions;
1459 }
1460 }
1461
1462 list->add(cd->name(),cd);
1463}
@ Interface
Definition classdef.h:108
@ Exception
Definition classdef.h:111
virtual CompoundType compoundType() const =0
Returns the type of compound this is, i.e. class/struct/union/...
virtual const DString & name() const =0
virtual bool isHidden() const =0
ClassLinkedRefMap m_interfaces
Definition filedef.cpp:258
ClassLinkedRefMap m_structs
Definition filedef.cpp:259
ClassLinkedRefMap m_exceptions
Definition filedef.cpp:260

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 1465 of file filedef.cpp.

1466{
1467 if (cd->isHidden()) return;
1468 m_concepts.add(cd->name(),cd);
1469}

References LinkedRefMap< T, Hash, KeyEqual, Map >::add(), 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 1317 of file filedef.cpp.

1318{
1319 if (md->isHidden()) return;
1320 MemberList *allMemberList = getMemberList(MemberListType::AllMembersList());
1321 //printf("%s:FileDefImpl::insertMember(%s (=%p) list has %zu elements)\n",
1322 // qPrint(name()),qPrint(md->name()),(void*)md,allMemberList ? allMemberList->size() : 0);
1323 if (allMemberList && allMemberList->contains(md))
1324 {
1325 //printf("already added\n");
1326 return;
1327 }
1328
1329 if (allMemberList==nullptr)
1330 {
1331 m_memberLists.emplace_back(std::make_unique<MemberList>(MemberListType::AllMembersList(),MemberListContainer::File));
1332 allMemberList = m_memberLists.back().get();
1333 }
1334 allMemberList->push_back(md);
1335 switch (md->memberType())
1336 {
1337 case MemberType::Property:
1338 if (md->getLanguage() == SrcLangExt::Python)
1339 {
1340 addMemberToList(MemberListType::PropertyMembers(),md);
1341 addMemberToList(MemberListType::Properties(),md);
1342 break;
1343 }
1344 // fallthrough, explicitly no break here
1345 case MemberType::Variable:
1346 addMemberToList(MemberListType::DecVarMembers(),md);
1347 addMemberToList(MemberListType::DocVarMembers(),md);
1348 break;
1349 case MemberType::Function:
1350 addMemberToList(MemberListType::DecFuncMembers(),md);
1351 addMemberToList(MemberListType::DocFuncMembers(),md);
1352 break;
1353 case MemberType::Typedef:
1354 addMemberToList(MemberListType::DecTypedefMembers(),md);
1355 addMemberToList(MemberListType::DocTypedefMembers(),md);
1356 break;
1357 case MemberType::Sequence:
1358 addMemberToList(MemberListType::DecSequenceMembers(),md);
1359 addMemberToList(MemberListType::DocSequenceMembers(),md);
1360 break;
1361 case MemberType::Dictionary:
1362 addMemberToList(MemberListType::DecDictionaryMembers(),md);
1363 addMemberToList(MemberListType::DocDictionaryMembers(),md);
1364 break;
1365 case MemberType::Enumeration:
1366 addMemberToList(MemberListType::DecEnumMembers(),md);
1367 addMemberToList(MemberListType::DocEnumMembers(),md);
1368 break;
1369 case MemberType::EnumValue: // enum values are shown inside their enums
1370 break;
1371 case MemberType::Define:
1372 addMemberToList(MemberListType::DecDefineMembers(),md);
1373 addMemberToList(MemberListType::DocDefineMembers(),md);
1374 break;
1375 default:
1376 err("FileDefImpl::insertMembers(): "
1377 "member '{}' with class scope '{}' inserted in file scope '{}'!\n",
1378 md->name(),
1379 md->getClassDef() ? md->getClassDef()->name() : "<global>",
1380 name());
1381 }
1382 //addMemberToGroup(md,groupId);
1383}
virtual SrcLangExt getLanguage() const =0
Returns the programming language this definition was written in.
void addMemberToList(MemberListType lt, MemberDef *md)
Definition filedef.cpp:1754
virtual const ClassDef * getClassDef() const =0
virtual MemberType memberType() const =0
bool contains(const MemberDef *md) const
Definition memberlist.h:90
void push_back(const T &value)
Definition memberlist.h:49

References addMemberToList(), MemberVector::contains(), err, File, MemberLists::get(), MemberDef::getClassDef(), Definition::getLanguage(), getMemberList(), Definition::isHidden(), m_memberLists, MemberDef::memberType(), Definition::name(), name(), and MemberVector::push_back().

◆ 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 1472 of file filedef.cpp.

1473{
1474 if (nd->isHidden()) return;
1475 m_namespaces.add(nd->name(),nd);
1476}

References LinkedRefMap< T, Hash, KeyEqual, Map >::add(), Definition::isHidden(), m_namespaces, and Definition::name().

◆ isDocumentationFile()

bool FileDefImpl::isDocumentationFile ( ) const
overridevirtual

Implements FileDef.

Definition at line 1686 of file filedef.cpp.

1687{
1688 static const std::unordered_set<std::string> docExtensions =
1689 { "doc", "txt", "dox", "md", "markdown" };
1690
1691 size_t lastDot = name().rfind('.');
1692 return (lastDot!=DString::npos &&
1693 docExtensions.find(name().mid(lastDot+1).str())!=docExtensions.end()) ||
1694 getLanguageFromFileName(getFileNameExtension(name())) == SrcLangExt::Markdown;
1695}
size_t rfind(char c, size_t pos=npos) const
Definition dstring.h:244
static constexpr size_t npos
value used to indicate 'not found' or 'to the end of the string', matching std::string::npos
Definition dstring.h:178
DString getFileNameExtension(const DString &fn)
Definition util.cpp:4210

References getFileNameExtension(), getLanguageFromFileName(), name(), DString::npos, and DString::rfind().

Referenced by generateSourceFile(), visibleInIndex(), and writeSourceHeader().

◆ isIncluded()

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

Implements FileDef.

Definition at line 1600 of file filedef.cpp.

1601{
1602 if (name.empty()) return false;
1603 return m_includeMap.find(name.str())!=m_includeMap.end();
1604}

References DString::empty(), m_includeMap, name(), and DString::str().

◆ 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 146 of file filedef.cpp.

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

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

Referenced by visibleInIndex(), and 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 1855 of file filedef.cpp.

1856{
1857 bool showFiles = Config_getBool(SHOW_FILES);
1858 return hasDocumentation() && !isReference() && (showFiles || isLinkableViaGroup());
1859}
bool isLinkableViaGroup() const override
bool hasDocumentation() const override

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

Referenced by isLinkable(), and visibleInIndex().

◆ isSource()

bool FileDefImpl::isSource ( ) const
inlineoverridevirtual

Returns true if this file is a source file.

Implements FileDef.

Definition at line 139 of file filedef.cpp.

139{ return m_isSource; }

References m_isSource.

◆ name()

const DString & FileDefImpl::name ( ) const
overridevirtual

◆ numDecMembers()

int FileDefImpl::numDecMembers ( ) const
overridevirtual

Implements FileDef.

Definition at line 1930 of file filedef.cpp.

1931{
1932 MemberList *ml = getMemberList(MemberListType::AllMembersList());
1933 return ml ? ml->numDecMembers() : 0;
1934}
int numDecMembers(const ClassDef *inheritedFrom) const
Definition memberlist.h:134

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

◆ numDocMembers()

int FileDefImpl::numDocMembers ( ) const
overridevirtual

Implements FileDef.

Definition at line 1924 of file filedef.cpp.

1925{
1926 MemberList *ml = getMemberList(MemberListType::AllMembersList());
1927 return ml ? ml->numDocMembers() : 0;
1928}
int numDocMembers() const
Definition memberlist.h:139

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

◆ overrideIncludedByGraph()

void FileDefImpl::overrideIncludedByGraph ( bool e)
overridevirtual

Implements FileDef.

Definition at line 1941 of file filedef.cpp.

1942{
1944}

References m_hasIncludedByGraph.

◆ overrideIncludeGraph()

void FileDefImpl::overrideIncludeGraph ( bool e)
overridevirtual

Implements FileDef.

Definition at line 1936 of file filedef.cpp.

1937{
1939}

References m_hasIncludeGraph.

◆ parseSource()

void FileDefImpl::parseSource ( ClangTUParser * clangParser)
overridevirtual

Implements FileDef.

Definition at line 1266 of file filedef.cpp.

1267{
1268 bool filterSourceFiles = Config_getBool(FILTER_SOURCE_FILES);
1269 OutputCodeList devNullList;
1270 devNullList.add<DevNullCodeGenerator>();
1271#if USE_LIBCLANG
1272 if (Doxygen::clangAssistedParsing && clangParser &&
1273 (getLanguage()==SrcLangExt::Cpp || getLanguage()==SrcLangExt::ObjC))
1274 {
1275 clangParser->switchToFile(this);
1276 clangParser->writeSources(devNullList,this);
1277 }
1278 else
1279#endif
1280 {
1282 intf->resetCodeParserState();
1283 size_t indent = 0;
1284 intf->parseCode(
1285 devNullList,DString(),
1286 detab(fileToString(absFilePath(),filterSourceFiles,true),indent),
1287 getLanguage(),
1288 Config_getBool(STRIP_CODE_COMMENTS),
1289 CodeParserOptions()
1290 .setFileDef(this)
1291 );
1292 }
1293}
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
DString getDefFileExtension() const override
SrcLangExt getLanguage() const override
static bool clangAssistedParsing
Definition doxygen.h:129
static ParserManager * parserManager
Definition doxygen.h:122
DString absFilePath() const override
Definition filedef.cpp:137
void add(OutputCodeIntfPtr &&p)
Definition outputlist.h:192
std::unique_ptr< CodeParserInterface > getCodeParser(const DString &extension)
Gets the interface to the parser associated with a given extension.
Definition parserintf.h:253
DString detab(const DString &s, size_t &refIndent)
Definition util.cpp:5179
DString fileToString(const DString &name, bool filter, bool isSourceCode)
Definition util.cpp:1053

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

◆ removeMember()

void FileDefImpl::removeMember ( MemberDef * md)
overridevirtual

Implements FileDef.

Definition at line 1391 of file filedef.cpp.

1392{
1393 removeMemberFromList(MemberListType::AllMembersList(),md);
1394 switch(md->memberType())
1395 {
1396 case MemberType::Property:
1397 if (md->getLanguage() == SrcLangExt::Python)
1398 {
1399 removeMemberFromList(MemberListType::PropertyMembers(),md);
1400 removeMemberFromList(MemberListType::Properties(),md);
1401 break;
1402 }
1403 // fallthrough, explicitly no break here
1404 case MemberType::Variable:
1405 removeMemberFromList(MemberListType::DecVarMembers(),md);
1406 removeMemberFromList(MemberListType::DocVarMembers(),md);
1407 break;
1408 case MemberType::Function:
1409 removeMemberFromList(MemberListType::DecFuncMembers(),md);
1410 removeMemberFromList(MemberListType::DocFuncMembers(),md);
1411 break;
1412 case MemberType::Typedef:
1413 removeMemberFromList(MemberListType::DecTypedefMembers(),md);
1414 removeMemberFromList(MemberListType::DocTypedefMembers(),md);
1415 break;
1416 case MemberType::Sequence:
1417 removeMemberFromList(MemberListType::DecSequenceMembers(),md);
1418 removeMemberFromList(MemberListType::DocSequenceMembers(),md);
1419 break;
1420 case MemberType::Dictionary:
1421 removeMemberFromList(MemberListType::DecDictionaryMembers(),md);
1422 removeMemberFromList(MemberListType::DocDictionaryMembers(),md);
1423 break;
1424 case MemberType::Enumeration:
1425 removeMemberFromList(MemberListType::DecEnumMembers(),md);
1426 removeMemberFromList(MemberListType::DocEnumMembers(),md);
1427 break;
1428 case MemberType::EnumValue: // enum values are shown inside their enums
1429 break;
1430 case MemberType::Define:
1431 removeMemberFromList(MemberListType::DecDefineMembers(),md);
1432 removeMemberFromList(MemberListType::DocDefineMembers(),md);
1433 break;
1434 default:
1435 err("FileDefImpl::removeMember(): unexpected member remove in file!\n");
1436 }
1437}
void removeMemberFromList(MemberListType lt, MemberDef *md)
Definition filedef.cpp:1385

References err, Definition::getLanguage(), MemberDef::memberType(), and removeMemberFromList().

◆ removeMemberFromList()

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

Definition at line 1385 of file filedef.cpp.

1386{
1387 MemberList *ml = getMemberList(lt);
1388 if (ml) ml->remove(md);
1389}
void remove(const MemberDef *md)
Definition memberlist.h:85

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

Referenced by removeMember().

◆ setDirDef()

void FileDefImpl::setDirDef ( DirDef * dd)
inlineoverridevirtual

Implements FileDef.

Definition at line 186 of file filedef.cpp.

186{ m_dir=dd; }

References m_dir.

◆ setDiskName()

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

Implements FileDef.

Definition at line 323 of file filedef.cpp.

324{
326}

References name(), and setDiskNameLocal().

◆ setDiskNameLocal()

void FileDefImpl::setDiskNameLocal ( const DString & 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}
DString convertNameToFile(const DString &name, bool allowDots, bool allowUnderscore)
Definition util.cpp:2863

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 187 of file filedef.cpp.

187{ m_moduleDef=mod; }

References m_moduleDef.

◆ sortMemberLists()

void FileDefImpl::sortMemberLists ( )
overridevirtual

Implements FileDef.

Definition at line 1773 of file filedef.cpp.

1774{
1775 for (auto &ml : m_memberLists)
1776 {
1777 if (ml->needsSorting()) { ml->sort(); ml->setNeedsSorting(false); }
1778 }
1779
1780 for (const auto &mg : m_memberGroups)
1781 {
1782 MemberList &mlg = const_cast<MemberList&>(mg->members());
1783 if (mlg.needsSorting()) { mlg.sort(); mlg.setNeedsSorting(false); }
1784 }
1785
1786 std::stable_sort(m_includedByList.begin(),m_includedByList.end(),
1787 [](const auto &fi1,const auto &fi2) { return fi1.includeName < fi2.includeName; });
1788
1789 if (Config_getBool(SORT_BRIEF_DOCS))
1790 {
1791 auto classComp = [](const ClassLinkedRefMap::Ptr &c1,const ClassLinkedRefMap::Ptr &c2)
1792 {
1793 return Config_getBool(SORT_BY_SCOPE_NAME) ?
1794 dstricmp_sort(c1->displayName(), c2->displayName())<0 :
1795 dstricmp_sort(c1->className(), c2->className())<0;
1796 };
1797
1798 std::stable_sort(m_classes.begin(), m_classes.end(), classComp);
1799 std::stable_sort(m_interfaces.begin(),m_interfaces.end(),classComp);
1800 std::stable_sort(m_structs.begin(), m_structs.end(), classComp);
1801 std::stable_sort(m_exceptions.begin(),m_exceptions.end(),classComp);
1802
1803 auto conceptComp = [](const ConceptLinkedRefMap::Ptr &c1,const ConceptLinkedRefMap::Ptr &c2)
1804 {
1805 return dstricmp_sort(c1->name(),c2->name())<0;
1806 };
1807
1808 std::stable_sort(m_concepts.begin(), m_concepts.end(), conceptComp);
1809
1810 auto namespaceComp = [](const NamespaceLinkedRefMap::Ptr &n1,const NamespaceLinkedRefMap::Ptr &n2)
1811 {
1812 return dstricmp_sort(n1->name(),n2->name())<0;
1813 };
1814
1815 std::stable_sort(m_namespaces.begin(),m_namespaces.end(),namespaceComp);
1816 }
1817}
virtual DString className() const =0
Returns the name of the class including outer classes, but not including namespaces.
virtual DString displayName(bool includeScope=true) const =0
iterator end()
Definition linkedmap.h:367
iterator begin()
Definition linkedmap.h:366
bool needsSorting() const
Definition memberlist.h:141
void setNeedsSorting(bool b)
void sort()
Definition memberlist.h:77
int dstricmp_sort(const char *str1, const char *str2)
Definition dstring.h:67

References LinkedRefMap< T, Hash, KeyEqual, Map >::begin(), ClassDef::className(), Config_getBool, Definition::displayName(), dstricmp_sort(), LinkedRefMap< T, Hash, KeyEqual, Map >::end(), m_classes, m_concepts, m_exceptions, m_includedByList, m_interfaces, m_memberGroups, m_memberLists, m_namespaces, m_structs, Definition::name(), MemberList::needsSorting(), MemberList::setNeedsSorting(), and MemberVector::sort().

◆ startMemberDeclarations()

void FileDefImpl::startMemberDeclarations ( OutputList & ol)
private

Definition at line 746 of file filedef.cpp.

747{
749}
void startMemberSections()
Definition outputlist.h:457

References OutputList::startMemberSections().

Referenced by writeDocumentation().

◆ startMemberDocumentation()

void FileDefImpl::startMemberDocumentation ( OutputList & ol)
private

Definition at line 756 of file filedef.cpp.

757{
758 if (Config_getBool(SEPARATE_MEMBER_PAGES))
759 {
762 }
763}
void disable(OutputType o)

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

Referenced by writeDocumentation().

◆ subGrouping()

bool FileDefImpl::subGrouping ( ) const
inlineoverridevirtual

Implements FileDef.

Definition at line 164 of file filedef.cpp.

164{ return m_subGrouping; }

References m_subGrouping.

◆ title()

DString FileDefImpl::title ( ) const
overridevirtual

Implements FileDef.

Definition at line 1883 of file filedef.cpp.

1884{
1885 if (Config_getBool(HIDE_COMPOUND_REFERENCE))
1886 {
1887 return name();
1888 }
1889 else
1890 {
1892 }
1893}
virtual DString trFileReference(const DString &fileName)=0

References Config_getBool, name(), theTranslator, and Translator::trFileReference().

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

◆ visibleInIndex()

bool FileDefImpl::visibleInIndex ( bool & genSourceFile) const
overridevirtual

Returns true if this file is visible in the index.

The parameter genSourceFile is set to true if this file is only linkable as a source file.

Implements FileDef.

Definition at line 1956 of file filedef.cpp.

1957{
1958 bool allExternals = Config_getBool(ALLEXTERNALS);
1959 bool isDocFile = isDocumentationFile();
1960 genSourceFile = !isDocFile && generateSourceFile();
1961 return ((allExternals && isLinkable()) || isLinkableInProject()) && !isDocFile;
1962}
bool generateSourceFile() const override
Definition filedef.cpp:1606
bool isLinkable() const override
Definition filedef.cpp:146

References Config_getBool, generateSourceFile(), isDocumentationFile(), isLinkable(), and isLinkableInProject().

◆ writeAuthorSection()

void FileDefImpl::writeAuthorSection ( OutputList & ol)
private

Definition at line 786 of file filedef.cpp.

787{
788 // write Author section (Man only)
791 ol.startGroupHeader();
792 ol.parseText(theTranslator->trAuthor(true,true));
793 ol.endGroupHeader();
796}
void parseText(const DString &textStr)
void pushGeneratorState()
void disableAllBut(OutputType o)
void popGeneratorState()
void endGroupHeader(int extraLevels=0)
Definition outputlist.h:451
void startGroupHeader(const DString &id=DString(), int extraLevels=0)
Definition outputlist.h:449
virtual DString trAuthor(bool first_capital, bool singular)=0
virtual DString trGeneratedAutomatically(const DString &s)=0

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

Referenced by writeDocumentation().

◆ writeBriefDescription()

void FileDefImpl::writeBriefDescription ( OutputList & ol)
private

Definition at line 543 of file filedef.cpp.

544{
546 {
547 auto parser { createDocParser() };
548 auto ast { validatingParseDoc(*parser.get(),
549 briefFile(),
550 briefLine(),
551 this,
552 nullptr,
554 DocOptions()
555 .setIndexWords(true)
556 .setSingleLine(true))
557 };
558 if (!ast->empty())
559 {
560 ol.startParagraph();
563 ol.writeString(" - ");
565 ol.writeDoc(ast.get(),this,nullptr);
568 ol.writeString(" \n");
570
571 if (Config_getBool(REPEAT_BRIEF) ||
572 !documentation().stripWhiteSpace().empty()
573 )
574 {
576 ol.startTextLink(DString(),"details");
578 ol.endTextLink();
579 }
581 ol.endParagraph();
582 }
583 }
584 ol.writeSynopsis();
585}
virtual DString briefFile() const =0
bool hasBriefDescription() const override
int briefLine() const override
void writeDoc(const IDocNodeAST *ast, const Definition *ctx, const MemberDef *md, int sectionLevel=-1)
Definition outputlist.h:379
void startParagraph(const DString &classDef=DString())
Definition outputlist.h:403
void writeString(const DString &text)
Definition outputlist.h:407
void endParagraph()
Definition outputlist.h:405
void endTextLink()
Definition outputlist.h:440
void writeSynopsis()
Definition outputlist.h:588
void startTextLink(const DString &file, const DString &anchor)
Definition outputlist.h:438
virtual DString trMore()=0
IDocParserPtr createDocParser()
factory function to create a parser
Definition docparser.cpp:59
IDocNodeASTPtr validatingParseDoc(IDocParser &parserIntf, const DString &fileName, int startLine, const Definition *ctx, const MemberDef *md, const DString &input, const DocOptions &options)

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(), DefinitionMixin< FileDef >::hasBriefDescription(), Html, Man, OutputList::parseText(), OutputList::popGeneratorState(), OutputList::pushGeneratorState(), RTF, OutputList::startParagraph(), OutputList::startTextLink(), stripWhiteSpace(), theTranslator, Translator::trMore(), validatingParseDoc(), OutputList::writeDoc(), OutputList::writeString(), and OutputList::writeSynopsis().

Referenced by writeDocumentation().

◆ writeClassDeclarations()

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

Definition at line 721 of file filedef.cpp.

722{
723 // write list of classes
724 list.writeDeclaration(ol,nullptr,title,false);
725}
void writeDeclaration(OutputList &ol, const ClassDef::CompoundType *filter, const DString &header, bool localNames) const
Definition classlist.cpp:51
DString title() const override
Definition filedef.cpp:1883

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

Referenced by writeDocumentation().

◆ writeClassesToTagFile()

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

Definition at line 587 of file filedef.cpp.

588{
589 for (const auto &cd : list)
590 {
591 if (cd->isLinkableInProject())
592 {
593 tagFile << " <class kind=\"" << cd->compoundTypeString() <<
594 "\">" << convertToXML(cd->name()) << "</class>\n";
595 }
596 }
597}
DString convertToXML(const DString &s, bool keepEntities, const bool citeEntry)
Definition util.cpp:3232

References convertToXML().

Referenced by writeTagFile().

◆ writeConcepts()

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

Definition at line 727 of file filedef.cpp.

728{
729 // write list of classes
731}
void writeDeclaration(OutputList &ol, const DString &header, bool localNames) const

References m_concepts, title(), and ConceptLinkedRefMap::writeDeclaration().

Referenced by writeDocumentation().

◆ writeDetailedDescription()

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

Definition at line 472 of file filedef.cpp.

473{
475 {
478 ol.writeRuler();
482 ol.writeAnchor(DString(),"details");
484 ol.startGroupHeader("details");
485 ol.parseText(title);
486 ol.endGroupHeader();
487
488 ol.startTextBlock();
489 if (!briefDescription().empty() && Config_getBool(REPEAT_BRIEF))
490 {
492 briefLine(),
493 this,
494 nullptr,
496 DocOptions());
497 }
498 if (!briefDescription().empty() && Config_getBool(REPEAT_BRIEF) &&
499 !documentation().empty())
500 {
504 ol.enableAll();
507 ol.writeString("\n\n");
509 }
510 if (!documentation().empty())
511 {
512 ol.generateDoc(docFile(),
513 docLine(),
514 this,
515 nullptr,
516 documentation()+"\n",
517 DocOptions()
518 .setIndexWords(true));
519 }
520 //printf("Writing source ref for file %s\n",qPrint(name()));
521 if (Config_getBool(SOURCE_BROWSER))
522 {
523 ol.startParagraph("definition");
524 DString refText = theTranslator->trDefinedInSourceFile();
525 if (size_t fileMarkerPos = refText.find("@0"); fileMarkerPos!=DString::npos) // should always pass this.
526 {
527 ol.parseText(refText.left(fileMarkerPos)); //text left from marker 1
528 ol.writeObjectLink(DString(),getSourceFileBase(),DString(),name());
529 ol.parseText(refText.right(
530 refText.length()-fileMarkerPos-2)); // text right from marker 2
531 }
532 else
533 {
534 err("translation error: invalid marker in trDefinedInSourceFile()\n");
535 }
536 ol.endParagraph();
537 }
539 ol.endTextBlock();
540 }
541}
DString right(size_t len) const
Definition dstring.h:311
size_t find(char c, size_t pos=0) const
Definition dstring.h:239
DString left(size_t len) const
Definition dstring.h:306
size_t length() const
Returns the length of the string, not counting the 0-terminator.
Definition dstring.h:151
DString briefFile() const override
void writeRequirementRefs(OutputList &ol) const override
int docLine() const override
bool hasDetailedDescription() const override
Definition filedef.cpp:363
void writeObjectLink(const DString &ref, const DString &file, const DString &anchor, const DString &name)
Definition outputlist.h:435
void writeRuler()
Definition outputlist.h:517
void endTextBlock(bool paraBreak=false)
Definition outputlist.h:668
void writeAnchor(const DString &fileName, const DString &name)
Definition outputlist.h:519
void startTextBlock(bool dense=false)
Definition outputlist.h:666
void generateDoc(const DString &fileName, int startLine, const Definition *ctx, const MemberDef *md, const DString &docStr, const DocOptions &options)
void enableAll()
virtual DString 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, DString::find(), OutputList::generateDoc(), getSourceFileBase(), hasDetailedDescription(), DefinitionMixin< FileDef >::hasRequirementRefs(), Html, Latex, DString::left(), DString::length(), Man, name(), DString::npos, OutputList::parseText(), OutputList::popGeneratorState(), OutputList::pushGeneratorState(), DString::right(), RTF, OutputList::startGroupHeader(), OutputList::startParagraph(), OutputList::startTextBlock(), theTranslator, title(), Translator::trDefinedInSourceFile(), OutputList::writeAnchor(), OutputList::writeObjectLink(), DefinitionMixin< FileDef >::writeRequirementRefs(), 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 872 of file filedef.cpp.

873{
874 bool generateTreeView = Config_getBool(GENERATE_TREEVIEW);
875 //funcList->countDecMembers();
876
877 //DString fn = name();
878 //if (Config_getBool(FULL_PATH_NAMES))
879 //{
880 // fn.prepend(stripFromPath(getPath()));
881 //}
882
883 //printf("WriteDocumentation diskname=%s\n",qPrint(diskname));
884
885 DString versionTitle;
886 if (!m_fileVersion.empty())
887 {
888 versionTitle=" ("+m_fileVersion+")";
889 }
890 DString title = m_docname+versionTitle;
891 DString pageTitle;
892 if (Config_getBool(HIDE_COMPOUND_REFERENCE))
893 {
894 pageTitle=m_docname;
895 }
896 else
897 {
899 }
900
901 if (getDirDef())
902 {
903 startFile(ol,getOutputFileBase(),false,name(),pageTitle,HighlightedItem::FileVisible,!generateTreeView);
904 if (!generateTreeView)
905 {
907 ol.endQuickIndices();
908 }
909 startTitle(ol,getOutputFileBase(),this);
912 if (Config_getBool(HIDE_COMPOUND_REFERENCE))
913 {
914 ol.parseText(displayName()); // Html only
915 }
916 else
917 {
919 }
920 ol.enableAll();
922 if (Config_getBool(HIDE_COMPOUND_REFERENCE))
923 {
924 ol.parseText(Config_getBool(FULL_PATH_NAMES) ? // other output formats
925 pageTitle :
926 name());
927 }
928 else
929 {
930 ol.parseText(Config_getBool(FULL_PATH_NAMES) ? // other output formats
931 pageTitle :
933 }
935 addGroupListToTitle(ol,this);
937 }
938 else
939 {
940 startFile(ol,getOutputFileBase(),false,name(),pageTitle,HighlightedItem::FileVisible,!generateTreeView);
941 if (!generateTreeView)
942 {
943 ol.endQuickIndices();
944 }
945 startTitle(ol,getOutputFileBase(),this);
946 ol.parseText(pageTitle);
947 addGroupListToTitle(ol,this);
949 }
950
951 ol.startContents();
952
953 if (!m_fileVersion.empty())
954 {
957 ol.docify(versionTitle);
958 ol.endProjectNumber();
959 ol.enableAll();
960 }
961
962 //---------------------------------------- start flexible part -------------------------------
963
964 SrcLangExt lang = getLanguage();
965 for (const auto &lde : LayoutDocManager::instance().docEntries(LayoutDocManager::File))
966 {
967 const LayoutDocEntrySection *ls = dynamic_cast<const LayoutDocEntrySection*>(lde.get());
968 switch (lde->kind())
969 {
970 case LayoutDocEntry::BriefDesc:
972 break;
973 case LayoutDocEntry::MemberDeclStart:
975 break;
976 case LayoutDocEntry::FileIncludes:
978 break;
979 case LayoutDocEntry::FileIncludeGraph:
981 break;
982 case LayoutDocEntry::FileIncludedByGraph:
984 break;
985 case LayoutDocEntry::FileSourceLink:
986 writeSourceLink(ol);
987 break;
988 case LayoutDocEntry::FileClasses:
989 if (ls) writeClassDeclarations(ol,ls->title(lang),m_classes);
990 break;
991 case LayoutDocEntry::FileInterfaces:
992 if (ls) writeClassDeclarations(ol,ls->title(lang),m_interfaces);
993 break;
994 case LayoutDocEntry::FileStructs:
995 if (ls) writeClassDeclarations(ol,ls->title(lang),m_structs);
996 break;
997 case LayoutDocEntry::FileExceptions:
998 if (ls) writeClassDeclarations(ol,ls->title(lang),m_exceptions);
999 break;
1000 case LayoutDocEntry::FileConcepts:
1001 if (ls) writeConcepts(ol,ls->title(lang));
1002 break;
1003 case LayoutDocEntry::FileNamespaces:
1004 if (ls) writeNamespaceDeclarations(ol,ls->title(lang),false);
1005 break;
1006 case LayoutDocEntry::FileConstantGroups:
1007 if (ls) writeNamespaceDeclarations(ol,ls->title(lang),true);
1008 break;
1009 case LayoutDocEntry::MemberGroups:
1011 break;
1012 case LayoutDocEntry::MemberDecl:
1013 {
1014 const LayoutDocEntryMemberDecl *lmd = dynamic_cast<const LayoutDocEntryMemberDecl*>(lde.get());
1015 if (lmd) writeMemberDeclarations(ol,lmd->type,lmd->title(lang));
1016 }
1017 break;
1018 case LayoutDocEntry::MemberDeclEnd:
1020 break;
1021 case LayoutDocEntry::DetailedDesc:
1022 if (ls) writeDetailedDescription(ol,ls->title(lang));
1023 break;
1024 case LayoutDocEntry::MemberDefStart:
1026 break;
1027 case LayoutDocEntry::FileInlineClasses:
1029 break;
1030 case LayoutDocEntry::MemberDef:
1031 {
1032 const LayoutDocEntryMemberDef *lmd = dynamic_cast<const LayoutDocEntryMemberDef*>(lde.get());
1033 if (lmd) writeMemberDocumentation(ol,lmd->type,lmd->title(lang));
1034 }
1035 break;
1036 case LayoutDocEntry::MemberDefEnd:
1038 break;
1039 case LayoutDocEntry::AuthorSection:
1041 break;
1042 case LayoutDocEntry::ClassIncludes:
1043 case LayoutDocEntry::ClassInheritanceGraph:
1044 case LayoutDocEntry::ClassNestedClasses:
1045 case LayoutDocEntry::ClassCollaborationGraph:
1046 case LayoutDocEntry::ClassAllMembersLink:
1047 case LayoutDocEntry::ClassUsedFiles:
1048 case LayoutDocEntry::ClassInlineClasses:
1049 case LayoutDocEntry::NamespaceNestedNamespaces:
1050 case LayoutDocEntry::NamespaceNestedConstantGroups:
1051 case LayoutDocEntry::NamespaceClasses:
1052 case LayoutDocEntry::NamespaceConcepts:
1053 case LayoutDocEntry::NamespaceInterfaces:
1054 case LayoutDocEntry::NamespaceStructs:
1055 case LayoutDocEntry::NamespaceExceptions:
1056 case LayoutDocEntry::NamespaceInlineClasses:
1057 case LayoutDocEntry::ConceptDefinition:
1058 case LayoutDocEntry::GroupClasses:
1059 case LayoutDocEntry::GroupConcepts:
1060 case LayoutDocEntry::GroupModules:
1061 case LayoutDocEntry::GroupInlineClasses:
1062 case LayoutDocEntry::GroupNamespaces:
1063 case LayoutDocEntry::GroupDirs:
1064 case LayoutDocEntry::GroupNestedGroups:
1065 case LayoutDocEntry::GroupFiles:
1066 case LayoutDocEntry::GroupGraph:
1067 case LayoutDocEntry::GroupPageDocs:
1068 case LayoutDocEntry::ModuleExports:
1069 case LayoutDocEntry::ModuleClasses:
1070 case LayoutDocEntry::ModuleConcepts:
1071 case LayoutDocEntry::ModuleUsedFiles:
1072 case LayoutDocEntry::DirSubDirs:
1073 case LayoutDocEntry::DirFiles:
1074 case LayoutDocEntry::DirGraph:
1075 err("Internal inconsistency: member '{}' should not be part of "
1076 "LayoutDocManager::File entry list\n",lde->entryToString());
1077 break;
1078 }
1079 }
1080
1081 //---------------------------------------- end flexible part -------------------------------
1082
1083 ol.endContents();
1084
1085 endFileWithNavPath(ol,this);
1086
1087 if (Config_getBool(SEPARATE_MEMBER_PAGES))
1088 {
1089 MemberList *ml = getMemberList(MemberListType::AllMembersList());
1090 if (ml) ml->sort();
1091 writeMemberPages(ol);
1092 }
1093}
virtual void writeNavigationPath(OutputList &ol) const =0
void writeBriefDescription(OutputList &ol)
Definition filedef.cpp:543
void writeSourceLink(OutputList &ol)
Definition filedef.cpp:699
void writeMemberDocumentation(OutputList &ol, MemberListType lt, const DString &title)
Definition filedef.cpp:1849
DString displayName(bool=true) const override
Definition filedef.cpp:129
void endMemberDeclarations(OutputList &ol)
Definition filedef.cpp:751
void writeConcepts(OutputList &ol, const DString &title)
Definition filedef.cpp:727
void writeInlineClasses(OutputList &ol)
Definition filedef.cpp:733
void writeIncludeFiles(OutputList &ol)
Definition filedef.cpp:599
void writeNamespaceDeclarations(OutputList &ol, const DString &title, bool isConstantGroup)
Definition filedef.cpp:714
void writeMemberPages(OutputList &ol) override
Definition filedef.cpp:1095
void writeIncludedByGraph(OutputList &ol)
Definition filedef.cpp:673
void writeClassDeclarations(OutputList &ol, const DString &title, const ClassLinkedRefMap &list)
Definition filedef.cpp:721
void writeAuthorSection(OutputList &ol)
Definition filedef.cpp:786
void writeDetailedDescription(OutputList &ol, const DString &title)
Definition filedef.cpp:472
DirDef * getDirDef() const override
Definition filedef.cpp:148
void writeIncludeGraph(OutputList &ol)
Definition filedef.cpp:648
void startMemberDocumentation(OutputList &ol)
Definition filedef.cpp:756
void startMemberDeclarations(OutputList &ol)
Definition filedef.cpp:746
void endMemberDocumentation(OutputList &ol)
Definition filedef.cpp:765
void writeMemberDeclarations(OutputList &ol, MemberListType lt, const DString &title)
Definition filedef.cpp:1831
void writeMemberGroups(OutputList &ol)
Definition filedef.cpp:774
static LayoutDocManager & instance()
Returns a reference to this singleton.
Definition layout.cpp:1437
void endContents()
Definition outputlist.h:616
void docify(const DString &s)
Definition outputlist.h:433
void startProjectNumber()
Definition outputlist.h:387
void endQuickIndices()
Definition outputlist.h:600
void startContents()
Definition outputlist.h:614
void endProjectNumber()
Definition outputlist.h:389
void endTitle(OutputList &ol, const DString &fileName, const DString &name)
Definition index.cpp:398
void endFileWithNavPath(OutputList &ol, const DefinitionMutable *d, bool showPageNavigation)
Definition index.cpp:452
void startTitle(OutputList &ol, const DString &fileName, const DefinitionMutable *def)
Definition index.cpp:388
void startFile(OutputList &ol, const DString &name, bool isSource, const DString &manName, const DString &title, HighlightedItem hli, bool additionalIndices, const DString &altSidebarName, int hierarchyLevel, const DString &allMembersFile)
Definition index.cpp:405
MemberListType type
Definition layout.h:117
DString title(SrcLangExt lang) const
Definition layout.cpp:1788
MemberListType type
Definition layout.h:136
DString title(SrcLangExt lang) const
Definition layout.cpp:1800
DString title(SrcLangExt lang) const
Definition layout.cpp:1781
SrcLangExt
Definition types.h:207
void addGroupListToTitle(OutputList &ol, const Definition *d)
Definition util.cpp:3921

References addGroupListToTitle(), Config_getBool, OutputList::disable(), OutputList::disableAllBut(), displayName(), OutputList::docify(), DString::empty(), 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(), Translator::trFileReference(), 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 673 of file filedef.cpp.

674{
675 if (Config_getBool(HAVE_DOT) && m_hasIncludedByGraph /*&& Config_getBool(INCLUDED_BY_GRAPH)*/)
676 {
677 //printf("Graph for file %s\n",qPrint(name()));
678 DotInclDepGraph incDepGraph(this,true);
679 if (incDepGraph.isTooBig())
680 {
681 warn_uncond("Included by graph for '{}' not generated, too many nodes ({}), threshold is {}. Consider increasing DOT_GRAPH_MAX_NODES.\n",
682 qPrint(name()), incDepGraph.numNodes(), Config_getInt(DOT_GRAPH_MAX_NODES));
683 }
684 else if (!incDepGraph.isTrivial())
685 {
686 ol.startTextBlock();
690 ol.endInclDepGraph(incDepGraph);
691 ol.enableAll();
692 ol.endTextBlock(true);
693 }
694 //incDepGraph.writeGraph(Config_getString(HTML_OUTPUT),fd->getOutputFileBase());
695 }
696}
void startInclDepGraph()
Definition outputlist.h:648
void endInclDepGraph(DotInclDepGraph &g)
Definition outputlist.h:650
virtual DString trInclByDepGraph()=0
#define Config_getInt(name)
Definition config.h:34
const char * qPrint(const char *s)
Definition dstring.h:783
#define warn_uncond(fmt,...)
Definition message.h:122

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, Translator::trInclByDepGraph(), and warn_uncond.

Referenced by writeDocumentation().

◆ writeIncludeFiles()

void FileDefImpl::writeIncludeFiles ( OutputList & ol)
private

Definition at line 599 of file filedef.cpp.

600{
601 if (!m_includeList.empty())
602 {
603 ol.startTextBlock(true);
604 for (const auto &ii : m_includeList)
605 {
606 const FileDef *fd=ii.fileDef;
607 ol.startTypewriter();
608 SrcLangExt lang = fd ? fd->getLanguage() : SrcLangExt::Cpp;
609 ol.docify(::includeStatement(lang,ii.kind));
610 ol.docify(::includeOpen(lang,ii.kind));
612 ol.docify(ii.includeName);
613 ol.enableAll();
615
616 // Here we use the include file name as it appears in the file.
617 // we could also we the name as it is used within doxygen,
618 // then we should have used fd->docName() instead of ii->includeName
619 if (fd && fd->isLinkable())
620 {
623 DString(),ii.includeName);
624 }
625 else
626 {
627 ModuleDef *mod = ModuleManager::instance().getPrimaryInterface(ii.includeName);
628 if (ii.kind==IncludeKind::ImportModule && mod && mod->isLinkable())
629 {
631 DString(),ii.includeName);
632 }
633 else
634 {
635 ol.docify(ii.includeName);
636 }
637 }
638
639 ol.enableAll();
640 ol.docify(::includeClose(lang,ii.kind));
641 ol.endTypewriter();
642 ol.lineBreak();
643 }
644 ol.endTextBlock();
645 }
646}
virtual bool isLinkable() const =0
virtual DString getReference() const =0
virtual DString getOutputFileBase() const =0
virtual DString includeName() const =0
virtual bool generateSourceFile() const =0
static ModuleManager & instance()
ModuleDef * getPrimaryInterface(const DString &moduleName) const
void lineBreak(const DString &style=DString())
Definition outputlist.h:555
void startTypewriter()
Definition outputlist.h:445
void endTypewriter()
Definition outputlist.h:447
DString includeClose(SrcLangExt lang, IncludeKind kind)
Definition filedef.cpp:82
DString includeOpen(SrcLangExt lang, IncludeKind kind)
Definition filedef.cpp:69
DString includeStatement(SrcLangExt lang, IncludeKind kind)
Definition filedef.cpp:52
@ ImportModule
Definition filedef.h:52

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(), and OutputList::writeObjectLink().

Referenced by writeDocumentation().

◆ writeIncludeGraph()

void FileDefImpl::writeIncludeGraph ( OutputList & ol)
private

Definition at line 648 of file filedef.cpp.

649{
650 if (Config_getBool(HAVE_DOT) && m_hasIncludeGraph /*&& Config_getBool(INCLUDE_GRAPH)*/)
651 {
652 //printf("Graph for file %s\n",qPrint(name()));
653 DotInclDepGraph incDepGraph(this,false);
654 if (incDepGraph.isTooBig())
655 {
656 warn_uncond("Include graph for '{}' not generated, too many nodes ({}), threshold is {}. Consider increasing DOT_GRAPH_MAX_NODES.\n",
657 qPrint(name()), incDepGraph.numNodes(), Config_getInt(DOT_GRAPH_MAX_NODES));
658 }
659 else if (!incDepGraph.isTrivial())
660 {
661 ol.startTextBlock();
665 ol.endInclDepGraph(incDepGraph);
666 ol.enableAll();
667 ol.endTextBlock(true);
668 }
669 //incDepGraph.writeGraph(Config_getString(HTML_OUTPUT),fd->getOutputFileBase());
670 }
671}
virtual DString trInclDepGraph(const DString &fName)=0

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

Referenced by writeDocumentation().

◆ writeInlineClasses()

void FileDefImpl::writeInlineClasses ( OutputList & ol)
private

Definition at line 733 of file filedef.cpp.

734{
735 // temporarily undo the disabling could be done by startMemberDocumentation()
736 // as a result of setting SEPARATE_MEMBER_PAGES to YES; see bug730512
737 bool isEnabled = ol.isEnabled(OutputType::Html);
739
741
742 // restore the initial state if needed
743 if (!isEnabled) ol.disable(OutputType::Html);
744}
void writeDocumentation(OutputList &ol, const Definition *container=nullptr) const
Definition classlist.cpp:72
bool isEnabled(OutputType o)

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

Referenced by writeDocumentation().

◆ writeMemberDeclarations()

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

Definition at line 1831 of file filedef.cpp.

1832{
1833 bool optVhdl = Config_getBool(OPTIMIZE_OUTPUT_VHDL);
1834 MemberList * ml = getMemberList(lt);
1835 if (ml)
1836 {
1837 if (optVhdl) // use specific declarations function
1838 {
1839
1840 VhdlDocGen::writeVhdlDeclarations(ml,ol,nullptr,nullptr,this,nullptr,nullptr);
1841 }
1842 else
1843 {
1844 ml->writeDeclarations(ol,nullptr,nullptr,this,nullptr,nullptr,title,DString());
1845 }
1846 }
1847}
void writeDeclarations(OutputList &ol, const ClassDef *cd, const NamespaceDef *nd, const FileDef *fd, const GroupDef *gd, const ModuleDef *mod, const DString &title, const DString &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 DString & title )
private

Definition at line 1849 of file filedef.cpp.

1850{
1851 MemberList * ml = getMemberList(lt);
1852 if (ml) ml->writeDocumentation(ol,name(),this,title,ml->listType().toLabel());
1853}
void writeDocumentation(OutputList &ol, const DString &scopeName, const Definition *container, const DString &title, const DString &anchor, bool showEnumValues=false, bool showInline=false) const
MemberListType listType() const
Definition memberlist.h:131
constexpr const char * toLabel() const noexcept
Definition types.h:402

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

Referenced by writeDocumentation().

◆ writeMemberGroups()

void FileDefImpl::writeMemberGroups ( OutputList & ol)
private

Definition at line 774 of file filedef.cpp.

775{
776 /* write user defined member groups */
777 for (const auto &mg : m_memberGroups)
778 {
779 if (!mg->allMembersInSameSection() || !m_subGrouping)
780 {
781 mg->writeDeclarations(ol,nullptr,nullptr,this,nullptr,nullptr);
782 }
783 }
784}

References m_memberGroups, and m_subGrouping.

Referenced by writeDocumentation().

◆ writeMemberPages()

void FileDefImpl::writeMemberPages ( OutputList & ol)
overridevirtual

Implements FileDef.

Definition at line 1095 of file filedef.cpp.

1096{
1097 ol.pushGeneratorState();
1099
1100 for (const auto &ml : m_memberLists)
1101 {
1102 if (ml->listType().isDocumentation())
1103 {
1104 ml->writeDocumentationPage(ol,name(),this);
1105 }
1106 }
1107
1108 ol.popGeneratorState();
1109}

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

Referenced by writeDocumentation().

◆ writeNamespaceDeclarations()

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

Definition at line 714 of file filedef.cpp.

716{
717 // write list of namespaces
718 m_namespaces.writeDeclaration(ol,title,isConstantGroup);
719}
void writeDeclaration(OutputList &ol, const DString &title, bool isConstantGroup=false, bool localName=false)

References m_namespaces, title(), and NamespaceLinkedRefMap::writeDeclaration().

Referenced by writeDocumentation().

◆ writePageNavigation()

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

Reimplemented from DefinitionMixin< FileDef >.

Definition at line 864 of file filedef.cpp.

865{
866 ol.writePageOutline();
867}
void writePageOutline()
Definition outputlist.h:612

References OutputList::writePageOutline().

◆ writeQuickMemberLinks()

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

Reimplemented from DefinitionMixin< FileDef >.

Definition at line 1111 of file filedef.cpp.

1112{
1113 bool createSubDirs=Config_getBool(CREATE_SUBDIRS);
1114
1115 ol.writeString(" <div class=\"navtab\">\n");
1116 ol.writeString(" <table>\n");
1117
1118 MemberList *allMemberList = getMemberList(MemberListType::AllMembersList());
1119 if (allMemberList)
1120 {
1121 for (const auto &md : *allMemberList)
1122 {
1123 if (md->getFileDef()==this && md->getNamespaceDef()==nullptr && md->isLinkable() && !md->isEnumValue())
1124 {
1125 if (md->isLinkableInProject())
1126 {
1127 DString fn=md->getOutputFileBase();
1129 if (md==currentMd) // selected item => highlight
1130 {
1131 ol.writeString(" <tr><td class=\"navtabHL\">");
1132 }
1133 else
1134 {
1135 ol.writeString(" <tr><td class=\"navtab\">");
1136 }
1137 ol.writeString("<span class=\"label\"><a ");
1138 ol.writeString("href=\"");
1139 if (createSubDirs) ol.writeString("../../");
1140 ol.writeString(fn+"#"+md->anchor());
1141 ol.writeString("\">");
1142 ol.writeString(convertToHtml(md->localName()));
1143 ol.writeString("</a></span>");
1144 ol.writeString("</td></tr>\n");
1145 }
1146 }
1147 }
1148 }
1149
1150 ol.writeString(" </table>\n");
1151 ol.writeString(" </div>\n");
1152}
void createSubDirs(const Dir &d)
Definition util.cpp:2969
DString convertToHtml(const DString &s, bool keepEntities)
Definition util.cpp:3291
void addHtmlExtensionIfMissing(DString &fName)
Definition util.cpp:3931

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

◆ writeSourceBody()

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

Implements FileDef.

Definition at line 1208 of file filedef.cpp.

1209{
1210 bool filterSourceFiles = Config_getBool(FILTER_SOURCE_FILES);
1211 OutputCodeList devNullList;
1212 devNullList.add<DevNullCodeGenerator>();
1213#if USE_LIBCLANG
1214 if (Doxygen::clangAssistedParsing && clangParser &&
1215 (getLanguage()==SrcLangExt::Cpp || getLanguage()==SrcLangExt::ObjC))
1216 {
1217 auto &codeOL = ol.codeGenerators();
1218 codeOL.startCodeFragment("DoxyCode");
1219 clangParser->switchToFile(this);
1220 clangParser->writeSources(codeOL,this);
1221 codeOL.endCodeFragment("DoxyCode");
1222 }
1223 else
1224#endif
1225 {
1227 intf->resetCodeParserState();
1228 auto &codeOL = ol.codeGenerators();
1229 codeOL.startCodeFragment("DoxyCode");
1230 bool needs2PassParsing =
1231 Doxygen::parseSourcesNeeded && // we need to parse (filtered) sources for cross-references
1232 !filterSourceFiles && // but user wants to show sources as-is
1233 !getFileFilter(absFilePath(),true).empty(); // and there is a filter used while parsing
1234
1235 if (needs2PassParsing)
1236 {
1237 // parse code for cross-references only (see bug707641)
1238 intf->parseCode(devNullList,DString(),
1239 fileToString(absFilePath(),true,true),
1240 getLanguage(),
1241 Config_getBool(STRIP_CODE_COMMENTS),
1242 CodeParserOptions()
1243 .setFileDef(this)
1244 );
1245 }
1246 size_t indent = 0;
1247 intf->parseCode(codeOL,DString(),
1248 detab(fileToString(absFilePath(),filterSourceFiles,true),indent),
1249 getLanguage(), // lang
1250 Config_getBool(STRIP_CODE_COMMENTS),
1251 CodeParserOptions()
1252 .setFileDef(this)
1253 .setCollectXRefs(!needs2PassParsing)
1254 );
1255 codeOL.endCodeFragment("DoxyCode");
1256 }
1257}
static bool parseSourcesNeeded
Definition doxygen.h:116
void startCodeFragment(const DString &style)
Definition outputlist.h:276
const OutputCodeList & codeGenerators() const
Definition outputlist.h:354
DString getFileFilter(const DString &name, bool isSourceCode)
Definition util.cpp:1020

References absFilePath(), OutputCodeList::add(), Doxygen::clangAssistedParsing, OutputList::codeGenerators(), Config_getBool, detab(), DString::empty(), fileToString(), ParserManager::getCodeParser(), DefinitionMixin< FileDef >::getDefFileExtension(), getFileFilter(), DefinitionMixin< FileDef >::getLanguage(), Doxygen::parserManager, Doxygen::parseSourcesNeeded, and OutputCodeList::startCodeFragment().

◆ writeSourceFooter()

void FileDefImpl::writeSourceFooter ( OutputList & ol)
overridevirtual

Implements FileDef.

Definition at line 1259 of file filedef.cpp.

1260{
1261 ol.endContents();
1262 endFileWithNavPath(ol,this,false);
1263 ol.enableAll();
1264}

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 1155 of file filedef.cpp.

1156{
1157 bool generateTreeView = Config_getBool(GENERATE_TREEVIEW);
1158 DString title = m_docname;
1159 if (!m_fileVersion.empty())
1160 {
1161 title+=" ("+m_fileVersion+")";
1162 }
1163 DString pageTitle = theTranslator->trSourceFile(title);
1165
1166 bool isDocFile = isDocumentationFile();
1167 bool genSourceFile = !isDocFile && generateSourceFile();
1168 if (getDirDef())
1169 {
1170 startFile(ol,getSourceFileBase(),true,DString(),pageTitle,HighlightedItem::FileVisible,
1171 !generateTreeView,
1172 !isDocFile && genSourceFile ? DString() : getOutputFileBase(),
1173 0);
1174 if (!generateTreeView)
1175 {
1177 ol.endQuickIndices();
1178 }
1180 ol.parseText(name());
1182 }
1183 else
1184 {
1185 startFile(ol,getSourceFileBase(),true,DString(),pageTitle,HighlightedItem::FileVisible,false,
1186 !isDocFile && genSourceFile ? DString() : getOutputFileBase(),
1187 0);
1189 ol.parseText(title);
1190 endTitle(ol,getSourceFileBase(),DString());
1191 }
1192
1193 ol.startContents();
1194
1195 if (isLinkable())
1196 {
1197 ol.startTextLink(getOutputFileBase(),DString());
1199 ol.endTextLink();
1200
1201 ol.pushGeneratorState();
1203 ol.writeString("\\par\n");
1204 ol.popGeneratorState();
1205 }
1206}
virtual DString trGotoDocumentation()=0
virtual DString trSourceFile(const DString &filename)=0

References Config_getBool, OutputList::disable(), OutputList::disableAllBut(), DString::empty(), 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(), Translator::trGotoDocumentation(), Translator::trSourceFile(), DefinitionMutable::writeNavigationPath(), and OutputList::writeString().

◆ writeSourceLink()

void FileDefImpl::writeSourceLink ( OutputList & ol)
private

Definition at line 699 of file filedef.cpp.

700{
701 //printf("%s: generateSourceFile()=%d\n",qPrint(name()),generateSourceFile());
702 if (generateSourceFile())
703 {
705 ol.startParagraph();
706 ol.startTextLink(includeName(),DString());
708 ol.endTextLink();
709 ol.endParagraph();
710 ol.enableAll();
711 }
712}
DString includeName() const override
Definition filedef.cpp:1749
virtual DString trGotoSourceCode()=0

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

Referenced by writeDocumentation().

◆ writeSummaryLinks()

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

Reimplemented from DefinitionMixin< FileDef >.

Definition at line 798 of file filedef.cpp.

799{
802 bool first=true;
803 SrcLangExt lang=getLanguage();
804 for (const auto &lde : LayoutDocManager::instance().docEntries(LayoutDocManager::File))
805 {
806 const LayoutDocEntrySection *ls = dynamic_cast<const LayoutDocEntrySection*>(lde.get());
807 if (lde->kind()==LayoutDocEntry::FileClasses && m_classes.declVisible() && ls)
808 {
809 DString label = "nested-classes";
810 ol.writeSummaryLink(DString(),label,ls->title(lang),first);
811 first=false;
812 }
813 else if (lde->kind()==LayoutDocEntry::FileInterfaces && m_interfaces.declVisible() && ls)
814 {
815 DString label = "interfaces";
816 ol.writeSummaryLink(DString(),label,ls->title(lang),first);
817 first=false;
818 }
819 else if (lde->kind()==LayoutDocEntry::FileStructs && m_structs.declVisible() && ls)
820 {
821 DString label = "structs";
822 ol.writeSummaryLink(DString(),label,ls->title(lang),first);
823 first=false;
824 }
825 else if (lde->kind()==LayoutDocEntry::FileExceptions && m_exceptions.declVisible() && ls)
826 {
827 DString label = "exceptions";
828 ol.writeSummaryLink(DString(),label,ls->title(lang),first);
829 first=false;
830 }
831 else if (lde->kind()==LayoutDocEntry::FileNamespaces && m_namespaces.declVisible(false) && ls)
832 {
833 DString label = "namespaces";
834 ol.writeSummaryLink(DString(),label,ls->title(lang),first);
835 first=false;
836 }
837 else if (lde->kind()==LayoutDocEntry::FileConcepts && m_concepts.declVisible() && ls)
838 {
839 DString label = "concepts";
840 ol.writeSummaryLink(DString(),label,ls->title(lang),first);
841 first=false;
842 }
843 else if (lde->kind()==LayoutDocEntry::MemberDecl)
844 {
845 const LayoutDocEntryMemberDecl *lmd = dynamic_cast<const LayoutDocEntryMemberDecl*>(lde.get());
846 if (lmd)
847 {
848 MemberList * ml = getMemberList(lmd->type);
849 if (ml && ml->declVisible())
850 {
851 ol.writeSummaryLink(DString(),ml->listType().toLabel(),lmd->title(lang),first);
852 first=false;
853 }
854 }
855 }
856 }
857 if (!first)
858 {
859 ol.writeString(" </div>\n");
860 }
862}
bool declVisible(const ClassDef::CompoundType *filter=nullptr) const
Definition classlist.cpp:27
bool declVisible() const
bool declVisible() const
bool declVisible(bool isContantGroup) const
void writeSummaryLink(const DString &file, const DString &anchor, const DString &title, bool first)
Definition outputlist.h:610

References ClassLinkedRefMap::declVisible(), ConceptLinkedRefMap::declVisible(), MemberList::declVisible(), NamespaceLinkedRefMap::declVisible(), OutputList::disableAllBut(), 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(), LayoutDocEntryMemberDecl::type, OutputList::writeString(), and OutputList::writeSummaryLink().

◆ writeTagFile()

void FileDefImpl::writeTagFile ( TextStream & t)
overridevirtual

Implements FileDef.

Definition at line 374 of file filedef.cpp.

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

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

DString 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

DString FileDefImpl::m_fileName
private

Definition at line 246 of file filedef.cpp.

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

◆ m_filePath

DString FileDefImpl::m_filePath
private

Definition at line 242 of file filedef.cpp.

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

◆ m_fileVersion

DString 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

DString FileDefImpl::m_inclByDepFileName
private

Definition at line 244 of file filedef.cpp.

Referenced by includedByDependencyGraphFileName(), and setDiskNameLocal().

◆ m_inclDepFileName

DString 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

DString FileDefImpl::m_outputDiskName
private

Definition at line 245 of file filedef.cpp.

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

◆ m_path

DString 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: