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

Public Member Functions

 ModuleDefImpl (const DString &fileName, int startLine, size_t startColumn, const DString &name, Type type, const DString &partitionName)
DefType definitionType () const override
CodeSymbolType codeSymbolType () const override
DString displayName (bool=true) const override
DString getOutputFileBase () const override
DString anchor () const override
bool isLinkableInProject () const override
bool isLinkable () const override
DString qualifiedName () const override
void writeSummaryLinks (OutputList &ol) const override
void writePageNavigation (OutputList &ol) const override
Type moduleType () const override
DString partitionName () const override
void writeDocumentation (OutputList &ol) override
bool isPrimaryInterface () const override
MemberListgetMemberList (MemberListType lt) const override
const MemberListsgetMemberLists () const override
const MemberGroupListgetMemberGroups () const override
const ClassLinkedRefMapgetClasses () const override
const ConceptLinkedRefMapgetConcepts () const override
int countVisibleMembers () const override
FileDefgetFileDef () const override
const ImportInfoMapgetImports () const override
const ImportInfoMapgetExports () const override
const ModuleMappartitions () const override
void writeTagFile (TextStream &t) const override
FileList getUsedFiles () const override
void writeExports (OutputList &ol, const DString &title)
void writeClassDeclarations (OutputList &ol, const DString &title)
void writeConcepts (OutputList &ol, const DString &title)
void writeFiles (OutputList &ol, const DString &title)
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 writeMemberGroups (OutputList &ol)
void writeMemberDeclarations (OutputList &ol, MemberListType lt, const DString &title)
void writeMemberDocumentation (OutputList &ol, MemberListType lt, const DString &title)
void writeAuthorSection (OutputList &ol)
void writeDeclarationLink (OutputList &ol, bool &found, const DString &header, bool localNames) const
void addHeader (int line, const DString &headerName, bool isSystem)
void addImport (int line, const DString &moduleName, const DString &partitionName, bool isExported)
void addClassToModule (const Entry *root, ClassDef *cd)
void addConceptToModule (const Entry *root, ConceptDef *cd)
void addMemberToModule (const Entry *root, MemberDef *md)
void addPartition (ModuleDefImpl *mod)
void addContributingModule (ModuleDefImpl *mod)
void setPrimaryInterface (const ModuleDef *mod)
void setFileDef (FileDef *fd)
void addMemberToList (MemberListType lt, MemberDef *md)
void addExportedModule (const DString &moduleName, const ImportInfo &info)
void addListReferences ()
void addRequirementReferences ()
void addMembersToMemberGroup ()
void distributeMemberGroupDocumentation ()
void findSectionsInDocumentation ()
void sortMemberLists ()
void mergeSymbolsFrom (ModuleDefImpl *other)
bool hasDetailedDescription () const
void countMembers ()
Public Member Functions inherited from DefinitionMixin< ModuleDef >
 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
const DStringname () const override
bool isAnonymous () const override
const DStringlocalName () const override
DString symbolName () const override
DString getSourceFileBase () 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
void writeQuickMemberLinks (OutputList &ol, const MemberDef *md) 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 Attributes

Type m_type
DString m_partitionName
ImportInfoMap m_imports
ImportInfoMap m_exportedModules
ClassLinkedRefMap m_classes
ConceptLinkedRefMap m_concepts
MemberLists m_memberLists
ModuleMap m_partitions
ModuleList m_contributing
MemberGroupList m_memberGroups
const ModuleDefm_primaryInterface = nullptr
FileDefm_fileDef = nullptr

Additional Inherited Members

Public Types inherited from ModuleDef
enum class  Type { Interface , Implementation }
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 55 of file moduledef.cpp.

Constructor & Destructor Documentation

◆ ModuleDefImpl()

ModuleDefImpl::ModuleDefImpl ( const DString & fileName,
int startLine,
size_t startColumn,
const DString & name,
Type type,
const DString & partitionName )
inline

Definition at line 58 of file moduledef.cpp.

60 : DefinitionMixin<ModuleDef>(fileName,startLine,startColumn,name,nullptr,nullptr,true),
virtual const DString & name() const =0
DefinitionMixin(const DString &defFileName, int defLine, size_t defColumn, const DString &name, const char *b=nullptr, const char *d=nullptr, bool isSymbol=true)
DString partitionName() const override
Definition moduledef.cpp:81
DString m_partitionName

References DefinitionMixin< ModuleDef >::DefinitionMixin(), m_partitionName, m_type, DefinitionMixin< ModuleDef >::name(), and partitionName().

Referenced by addContributingModule(), addPartition(), and mergeSymbolsFrom().

Member Function Documentation

◆ addClassToModule()

void ModuleDefImpl::addClassToModule ( const Entry * root,
ClassDef * cd )

Definition at line 209 of file moduledef.cpp.

210{
211 DString className = cd->qualifiedName();
212 AUTO_TRACE("{}:{} class {} of module {} exported={}",
213 root->fileName,root->startLine, className, name(), root->exported);
214 bool isExported = m_classes.find(className)!=nullptr;
215 if (root->exported && !isExported)
216 {
217 m_classes.add(className,cd);
218 }
219 auto cdm = toClassDefMutable(cd);
220 if (cdm && root->exported && !cd->isExported())
221 {
222 cdm->setExported(true);
223 }
224}
virtual bool isExported() const =0
virtual DString qualifiedName() const =0
bool exported
is the symbol exported from a C++20 module
Definition entry.h:188
DString fileName
file this entry was extracted from
Definition entry.h:223
int startLine
start line of entry in the source
Definition entry.h:224
bool add(const char *k, T *obj)
Definition linkedmap.h:284
const T * find(const std::string &key) const
Definition linkedmap.h:243
ClassLinkedRefMap m_classes
ClassDefMutable * toClassDefMutable(Definition *d)
#define AUTO_TRACE(...)
Definition docnode.cpp:53

References LinkedRefMap< T, Hash, KeyEqual, Map >::add(), AUTO_TRACE, Entry::exported, Entry::fileName, LinkedRefMap< T, Hash, KeyEqual, Map >::find(), Definition::isExported(), DefinitionMixin< ModuleDef >::isExported(), m_classes, DefinitionMixin< ModuleDef >::name(), Definition::qualifiedName(), Entry::startLine, and toClassDefMutable().

Referenced by ModuleManager::addClassToModule().

◆ addConceptToModule()

void ModuleDefImpl::addConceptToModule ( const Entry * root,
ConceptDef * cd )

Definition at line 226 of file moduledef.cpp.

227{
228 DString conceptName = cd->qualifiedName();
229 AUTO_TRACE("{}:{} concept {} of module {} exported={}",
230 root->fileName,root->startLine,
231 cd->qualifiedName(),name(),
232 root->exported);
233 bool isExported = m_classes.find(conceptName)!=nullptr;
234 if (root->exported && !isExported)
235 {
236 m_concepts.add(conceptName,cd);
237 }
238 auto cdm = toConceptDefMutable(cd);
239 if (cdm && root->exported && !cd->isExported())
240 {
241 cdm->setExported(true);
242 }
243}
ConceptLinkedRefMap m_concepts
ConceptDefMutable * toConceptDefMutable(Definition *d)

References LinkedRefMap< T, Hash, KeyEqual, Map >::add(), AUTO_TRACE, Entry::exported, Entry::fileName, LinkedRefMap< T, Hash, KeyEqual, Map >::find(), Definition::isExported(), DefinitionMixin< ModuleDef >::isExported(), m_classes, m_concepts, DefinitionMixin< ModuleDef >::name(), Definition::qualifiedName(), Entry::startLine, and toConceptDefMutable().

Referenced by ModuleManager::addConceptToModule().

◆ addContributingModule()

void ModuleDefImpl::addContributingModule ( ModuleDefImpl * mod)

Definition at line 174 of file moduledef.cpp.

175{
176 if (std::find(m_contributing.begin(),m_contributing.end(),mod)==m_contributing.end())
177 {
178 m_contributing.push_back(mod);
179 }
180}
ModuleList m_contributing

References m_contributing, and ModuleDefImpl().

Referenced by ModuleManager::collectExportedSymbols().

◆ addExportedModule()

void ModuleDefImpl::addExportedModule ( const DString & moduleName,
const ImportInfo & info )

Definition at line 203 of file moduledef.cpp.

204{
205 AUTO_TRACE("name={}:moduleName={},import={}",name(),moduleName,info.importName);
206 m_exportedModules[moduleName.str()].push_back(info);
207}
const std::string & str() const
Definition dstring.h:645
const DString & name() const override
ImportInfoMap m_exportedModules
DString importName
Definition moduledef.h:44

References AUTO_TRACE, ImportInfo::importName, m_exportedModules, DefinitionMixin< ModuleDef >::name(), and DString::str().

Referenced by ModuleManager::resolvePartitions(), and ModuleManager::resolvePartitionsRecursively().

◆ addHeader()

void ModuleDefImpl::addHeader ( int line,
const DString & headerName,
bool isSystem )

Definition at line 192 of file moduledef.cpp.

193{
194 AUTO_TRACE("name={}:line={},header={},isSystem={}",name(),line,headerName,isSystem);
195}

References AUTO_TRACE, and DefinitionMixin< ModuleDef >::name().

Referenced by ModuleManager::addHeader().

◆ addImport()

void ModuleDefImpl::addImport ( int line,
const DString & moduleName,
const DString & partitionName,
bool isExported )

Definition at line 197 of file moduledef.cpp.

198{
199 AUTO_TRACE("name={}:line={},module={},partition={}",name(),line,moduleName,partitionName);
200 m_imports[getDefFileName().str()+":"+std::to_string(line)].push_back(ImportInfo(this,moduleName,line,partitionName,isExported));
201}
DString getDefFileName() const override
ImportInfoMap m_imports

References AUTO_TRACE, DefinitionMixin< ModuleDef >::getDefFileName(), DefinitionMixin< ModuleDef >::isExported(), m_imports, DefinitionMixin< ModuleDef >::name(), partitionName(), and DString::str().

Referenced by ModuleManager::addImport().

◆ addListReferences()

void ModuleDefImpl::addListReferences ( )

Definition at line 694 of file moduledef.cpp.

695{
698 getLanguage()==SrcLangExt::Fortran ?
699 theTranslator->trModule(true,true) :
700 theTranslator->trNamespace(true,true),
702 DString(),
703 this
704 );
705 for (const auto &mg : m_memberGroups)
706 {
707 mg->addListReferences(this);
708 }
709 for (auto &ml : m_memberLists)
710 {
711 if (ml->listType().isDocumentation())
712 {
713 ml->addListReferences(this);
714 }
715 }
716}
const RefItemVector & xrefListItems() const override
SrcLangExt getLanguage() const override
DString getOutputFileBase() const override
DString displayName(bool=true) const override
Definition moduledef.cpp:66
MemberLists m_memberLists
DString qualifiedName() const override
MemberGroupList m_memberGroups
virtual DString trNamespace(bool first_capital, bool singular)=0
virtual DString trModule(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(), displayName(), DefinitionMixin< ModuleDef >::getLanguage(), getOutputFileBase(), m_memberGroups, m_memberLists, qualifiedName(), theTranslator, Translator::trModule(), Translator::trNamespace(), and DefinitionMixin< ModuleDef >::xrefListItems().

Referenced by ModuleManager::addListReferences().

◆ addMembersToMemberGroup()

void ModuleDefImpl::addMembersToMemberGroup ( )

Definition at line 734 of file moduledef.cpp.

735{
736 for (auto &ml : m_memberLists)
737 {
738 if (ml->listType().isDeclaration())
739 {
741 }
742 }
743
744 // add members inside sections to their groups
745 for (const auto &mg : m_memberGroups)
746 {
747 if (mg->allMembersInSameSection() && Config_getBool(SUBGROUPING))
748 {
749 //printf("----> addToDeclarationSection(%s)\n",qPrint(mg->header()));
750 mg->addToDeclarationSection();
751 }
752 }
753}
void addMembersToMemberGroup()
#define Config_getBool(name)
Definition config.h:33

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

Referenced by addMembersToMemberGroup(), and ModuleManager::addMembersToMemberGroup().

◆ addMemberToList()

void ModuleDefImpl::addMemberToList ( MemberListType lt,
MemberDef * md )

Definition at line 257 of file moduledef.cpp.

258{
259 bool sortBriefDocs = Config_getBool(SORT_BRIEF_DOCS);
260 bool sortMemberDocs = Config_getBool(SORT_MEMBER_DOCS);
262 ml->setNeedsSorting(
263 (ml->listType().isDeclaration() && sortBriefDocs) ||
264 (ml->listType().isDocumentation() && sortMemberDocs));
265 ml->push_back(md);
266 if (ml->listType().isDeclaration())
267 {
268 MemberDefMutable *mdm = toMemberDefMutable(md);
269 if (mdm)
270 {
271 mdm->setSectionList(this,ml.get());
272 }
273 }
274}
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, MemberLists::get(), m_memberLists, Module, MemberDefMutable::setSectionList(), and toMemberDefMutable().

Referenced by addMemberToModule().

◆ addMemberToModule()

void ModuleDefImpl::addMemberToModule ( const Entry * root,
MemberDef * md )

Definition at line 276 of file moduledef.cpp.

277{
278 AUTO_TRACE("{}:{} member {} of module {} exported={}",
279 qPrint(root->fileName),root->startLine,
281 root->exported);
282 MemberList *allMemberList = getMemberList(MemberListType::AllMembersList());
283 if (allMemberList==nullptr)
284 {
285 m_memberLists.emplace_back(std::make_unique<MemberList>(MemberListType::AllMembersList(),MemberListContainer::Module));
286 allMemberList = m_memberLists.back().get();
287 }
288 if (allMemberList->contains(md))
289 {
290 return;
291 }
292 allMemberList->push_back(md);
293 switch (md->memberType())
294 {
295 case MemberType::Variable:
296 addMemberToList(MemberListType::DecVarMembers(),md);
297 break;
298 case MemberType::Function:
299 addMemberToList(MemberListType::DecFuncMembers(),md);
300 break;
301 case MemberType::Typedef:
302 addMemberToList(MemberListType::DecTypedefMembers(),md);
303 break;
304 case MemberType::Enumeration:
305 addMemberToList(MemberListType::DecEnumMembers(),md);
306 break;
307 default:
308 break;
309 }
310 auto mdm = toMemberDefMutable(md);
311 if (mdm && root->exported && !md->isExported())
312 {
313 mdm->setExported(true);
314 }
315}
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
MemberList * getMemberList(MemberListType lt) const override
void addMemberToList(MemberListType lt, MemberDef *md)
const char * qPrint(const char *s)
Definition dstring.h:783

References addMemberToList(), AUTO_TRACE, MemberVector::contains(), Entry::exported, Entry::fileName, MemberLists::get(), getMemberList(), Definition::isExported(), m_memberLists, MemberDef::memberType(), Module, DefinitionMixin< ModuleDef >::name(), MemberVector::push_back(), qPrint(), Definition::qualifiedName(), Entry::startLine, and toMemberDefMutable().

Referenced by ModuleManager::addMemberToModule().

◆ addPartition()

void ModuleDefImpl::addPartition ( ModuleDefImpl * mod)

Definition at line 165 of file moduledef.cpp.

166{
167 std::string qName = mod->qualifiedName().str();
168 if (m_partitions.find(qName)==m_partitions.end())
169 {
170 m_partitions.emplace(qName,mod);
171 }
172}
ModuleMap m_partitions

References m_partitions, ModuleDefImpl(), qualifiedName(), and DString::str().

Referenced by ModuleManager::resolvePartitionsRecursively().

◆ addRequirementReferences()

void ModuleDefImpl::addRequirementReferences ( )

Definition at line 718 of file moduledef.cpp.

719{
721 for (const auto &mg : m_memberGroups)
722 {
723 mg->addRequirementReferences(this);
724 }
725 for (auto &ml : m_memberLists)
726 {
727 if (ml->listType().isDocumentation())
728 {
729 ml->addRequirementReferences(this);
730 }
731 }
732}
static RequirementManager & instance()
void addRequirementRefsForSymbol(const Definition *symbol)

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

Referenced by ModuleManager::addRequirementReferences().

◆ anchor()

DString ModuleDefImpl::anchor ( ) const
inlineoverridevirtual

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

Implements Definition.

Definition at line 68 of file moduledef.cpp.

68{ return ""; }

Referenced by writeDeclarationLink().

◆ codeSymbolType()

CodeSymbolType ModuleDefImpl::codeSymbolType ( ) const
inlineoverridevirtual

Used for syntax highlighting symbol class

Implements Definition.

Definition at line 65 of file moduledef.cpp.

References Module.

◆ countMembers()

void ModuleDefImpl::countMembers ( )

Definition at line 680 of file moduledef.cpp.

681{
682 for (auto &ml : m_memberLists)
683 {
684 ml->countDecMembers();
685 ml->countDocMembers();
686 }
687 for (const auto &mg : m_memberGroups)
688 {
689 mg->countDecMembers();
690 mg->countDocMembers();
691 }
692}

References m_memberGroups, and m_memberLists.

Referenced by ModuleManager::countMembers().

◆ countVisibleMembers()

int ModuleDefImpl::countVisibleMembers ( ) const
overridevirtual

Implements ModuleDef.

Definition at line 1069 of file moduledef.cpp.

1070{
1071 int count=0;
1072 for (const auto &lde : LayoutDocManager::instance().docEntries(LayoutDocManager::Module))
1073 {
1074 if (lde->kind()==LayoutDocEntry::MemberDecl)
1075 {
1076 const LayoutDocEntryMemberDecl *lmd = dynamic_cast<const LayoutDocEntryMemberDecl*>(lde.get());
1077 if (lmd)
1078 {
1079 MemberList *ml = getMemberList(lmd->type);
1080 if (ml)
1081 {
1082 for (const auto &md : *ml)
1083 {
1084 if (md->visibleInIndex())
1085 {
1086 count++;
1087 }
1088 }
1089 }
1090 }
1091 }
1092 else if (lde->kind()==LayoutDocEntry::ModuleClasses)
1093 {
1094 for (const auto &cd : getClasses())
1095 {
1096 if (cd->isLinkableInProject())
1097 {
1098 count++;
1099 }
1100 }
1101 }
1102 else if (lde->kind()==LayoutDocEntry::ModuleConcepts)
1103 {
1104 for (const auto &cd : getConcepts())
1105 {
1106 if (cd->isLinkableInProject())
1107 {
1108 count++;
1109 }
1110 }
1111 }
1112 }
1113 return count;
1114}
static LayoutDocManager & instance()
Returns a reference to this singleton.
Definition layout.cpp:1437
const ClassLinkedRefMap & getClasses() const override
Definition moduledef.cpp:87
const ConceptLinkedRefMap & getConcepts() const override
Definition moduledef.cpp:88
MemberListType type
Definition layout.h:117

References getClasses(), getConcepts(), getMemberList(), LayoutDocManager::instance(), and LayoutDocEntryMemberDecl::type.

◆ definitionType()

DefType ModuleDefImpl::definitionType ( ) const
inlineoverridevirtual

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

Implements Definition.

Definition at line 64 of file moduledef.cpp.

64{ return TypeModule; }

References Definition::TypeModule.

◆ displayName()

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

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

Implements Definition.

Definition at line 66 of file moduledef.cpp.

66{ return name(); }

References DefinitionMixin< ModuleDef >::name().

Referenced by addListReferences(), writeDeclarationLink(), and writeDocumentation().

◆ distributeMemberGroupDocumentation()

void ModuleDefImpl::distributeMemberGroupDocumentation ( )

Definition at line 755 of file moduledef.cpp.

756{
757 for (const auto &mg : m_memberGroups)
758 {
759 mg->distributeMemberGroupDocumentation();
760 }
761}

References m_memberGroups.

Referenced by ModuleManager::distributeMemberGroupDocumentation().

◆ endMemberDeclarations()

void ModuleDefImpl::endMemberDeclarations ( OutputList & ol)

Definition at line 525 of file moduledef.cpp.

526{
528}
void endMemberSections()
Definition outputlist.h:459

References OutputList::endMemberSections().

Referenced by writeDocumentation().

◆ endMemberDocumentation()

void ModuleDefImpl::endMemberDocumentation ( OutputList & ol)

Definition at line 539 of file moduledef.cpp.

540{
541 if (Config_getBool(SEPARATE_MEMBER_PAGES))
542 {
545 }
546}
static bool suppressDocWarnings
Definition doxygen.h:123
void enable(OutputType o)

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

Referenced by writeDocumentation().

◆ findSectionsInDocumentation()

void ModuleDefImpl::findSectionsInDocumentation ( )

Definition at line 763 of file moduledef.cpp.

764{
768 for (const auto &mg : m_memberGroups)
769 {
770 mg->findSectionsInDocumentation(this);
771 }
772 for (auto &ml : m_memberLists)
773 {
774 if (ml->listType().isDeclaration())
775 {
776 ml->findSectionsInDocumentation(this);
777 }
778 }
779}
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< ModuleDef >::briefDescription(), DefinitionMixin< ModuleDef >::docFile(), docFindSections(), DefinitionMixin< ModuleDef >::documentation(), DefinitionMixin< ModuleDef >::inbodyDocumentation(), m_memberGroups, and m_memberLists.

Referenced by ModuleManager::findSectionsInDocumentation().

◆ getClasses()

const ClassLinkedRefMap & ModuleDefImpl::getClasses ( ) const
inlineoverridevirtual

Implements ModuleDef.

Definition at line 87 of file moduledef.cpp.

87{ return m_classes; }

References m_classes.

Referenced by countVisibleMembers(), and mergeSymbolsFrom().

◆ getConcepts()

const ConceptLinkedRefMap & ModuleDefImpl::getConcepts ( ) const
inlineoverridevirtual

Implements ModuleDef.

Definition at line 88 of file moduledef.cpp.

88{ return m_concepts; }

References m_concepts.

Referenced by countVisibleMembers(), and mergeSymbolsFrom().

◆ getExports()

const ImportInfoMap & ModuleDefImpl::getExports ( ) const
inlineoverridevirtual

Implements ModuleDef.

Definition at line 92 of file moduledef.cpp.

92{ return m_exportedModules; }

References m_exportedModules.

◆ getFileDef()

FileDef * ModuleDefImpl::getFileDef ( ) const
inlineoverridevirtual

Implements ModuleDef.

Definition at line 90 of file moduledef.cpp.

90{ return m_fileDef; }
FileDef * m_fileDef

References m_fileDef.

Referenced by writeTagFile().

◆ getImports()

const ImportInfoMap & ModuleDefImpl::getImports ( ) const
inlineoverridevirtual

Implements ModuleDef.

Definition at line 91 of file moduledef.cpp.

91{ return m_imports; }

References m_imports.

◆ getMemberGroups()

const MemberGroupList & ModuleDefImpl::getMemberGroups ( ) const
inlineoverridevirtual

Implements ModuleDef.

Definition at line 86 of file moduledef.cpp.

86{ return m_memberGroups; }

References m_memberGroups.

◆ getMemberList()

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

Implements ModuleDef.

Definition at line 245 of file moduledef.cpp.

246{
247 for (auto &ml : m_memberLists)
248 {
249 if (ml->listType()==lt)
250 {
251 return ml.get();
252 }
253 }
254 return nullptr;
255}

References m_memberLists.

Referenced by addMemberToModule(), countVisibleMembers(), mergeSymbolsFrom(), writeMemberDeclarations(), writeMemberDocumentation(), writeSummaryLinks(), and writeTagFile().

◆ getMemberLists()

const MemberLists & ModuleDefImpl::getMemberLists ( ) const
inlineoverridevirtual

Implements ModuleDef.

Definition at line 85 of file moduledef.cpp.

85{ return m_memberLists; }

References m_memberLists.

◆ getOutputFileBase()

DString ModuleDefImpl::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 150 of file moduledef.cpp.

151{
152 return convertNameToFile("module_" + name());
153}
DString convertNameToFile(const DString &name, bool allowDots, bool allowUnderscore)
Definition util.cpp:2863

References convertNameToFile(), and DefinitionMixin< ModuleDef >::name().

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

◆ getUsedFiles()

FileList ModuleDefImpl::getUsedFiles ( ) const
overridevirtual

Implements ModuleDef.

Definition at line 1058 of file moduledef.cpp.

1059{
1060 FileList result;
1061 for (const auto &mod : m_contributing)
1062 {
1063 FileDef *fd = mod->getFileDef();
1064 if (fd) result.push_back(fd);
1065 }
1066 return result;
1067}

References m_contributing.

Referenced by writeTagFile().

◆ hasDetailedDescription()

bool ModuleDefImpl::hasDetailedDescription ( ) const

Definition at line 674 of file moduledef.cpp.

675{
676 bool repeatBrief = Config_getBool(REPEAT_BRIEF);
677 return (!briefDescription().empty() && repeatBrief) || !documentation().empty();
678}
bool empty() const
Returns true iff the string is empty (std::string compatible alias for isEmpty()).
Definition dstring.h:148

References DefinitionMixin< ModuleDef >::briefDescription(), Config_getBool, DefinitionMixin< ModuleDef >::documentation(), and DString::empty().

Referenced by writeBriefDescription(), and writeDetailedDescription().

◆ isLinkable()

bool ModuleDefImpl::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 72 of file moduledef.cpp.

72 {
74 else return hasDocumentation(); }
virtual bool isLinkable() const =0
bool hasDocumentation() const override
const ModuleDef * m_primaryInterface

References DefinitionMixin< ModuleDef >::hasDocumentation(), Definition::isLinkable(), and m_primaryInterface.

Referenced by isLinkableInProject(), and writeDeclarationLink().

◆ isLinkableInProject()

bool ModuleDefImpl::isLinkableInProject ( ) const
inlineoverridevirtual

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

Implements Definition.

Definition at line 69 of file moduledef.cpp.

69 {
71 else return isLinkable() && !isHidden() && !isReference(); }
virtual bool isLinkableInProject() const =0
bool isReference() const override
bool isHidden() const override
bool isLinkable() const override
Definition moduledef.cpp:72

References DefinitionMixin< ModuleDef >::isHidden(), isLinkable(), Definition::isLinkableInProject(), DefinitionMixin< ModuleDef >::isReference(), and m_primaryInterface.

Referenced by writeTagFile().

◆ isPrimaryInterface()

bool ModuleDefImpl::isPrimaryInterface ( ) const
inlineoverridevirtual

Implements ModuleDef.

Definition at line 83 of file moduledef.cpp.

References DString::empty(), ModuleDef::Interface, m_partitionName, and m_type.

Referenced by writeTagFile().

◆ mergeSymbolsFrom()

void ModuleDefImpl::mergeSymbolsFrom ( ModuleDefImpl * other)

Definition at line 317 of file moduledef.cpp.

318{
319 AUTO_TRACE("{} merging symbols of {} ({}:{})",
320 name(),other->qualifiedName(),other->getDefFileName(),other->getDefLine());
321 for (const auto &cd : other->getClasses())
322 {
323 m_classes.add(cd->qualifiedName(),cd);
324 }
325 for (const auto &cd : other->getConcepts())
326 {
327 m_concepts.add(cd->qualifiedName(),cd);
328 }
329 auto mergeMemberList = [this,other](MemberListType lt)
330 {
331 const auto &srcMl = other->getMemberList(lt);
332 if (srcMl)
333 {
334 auto &dstMl = m_memberLists.get(lt,srcMl->container());
335 for (const auto &md : *srcMl)
336 {
337 dstMl->push_back(md);
338 }
339 }
340 };
341 mergeMemberList(MemberListType::DecVarMembers());
342 mergeMemberList(MemberListType::DecFuncMembers());
343 mergeMemberList(MemberListType::DecTypedefMembers());
344 mergeMemberList(MemberListType::DecEnumMembers());
345}
int getDefLine() const override

References LinkedRefMap< T, Hash, KeyEqual, Map >::add(), AUTO_TRACE, MemberLists::get(), getClasses(), getConcepts(), DefinitionMixin< Base >::getDefFileName(), DefinitionMixin< Base >::getDefLine(), getMemberList(), m_classes, m_concepts, m_memberLists, ModuleDefImpl(), DefinitionMixin< ModuleDef >::name(), and qualifiedName().

◆ moduleType()

Type ModuleDefImpl::moduleType ( ) const
inlineoverridevirtual

Implements ModuleDef.

Definition at line 80 of file moduledef.cpp.

80{ return m_type; }

References m_type.

◆ partitionName()

DString ModuleDefImpl::partitionName ( ) const
inlineoverridevirtual

Implements ModuleDef.

Definition at line 81 of file moduledef.cpp.

81{ return m_partitionName; }

References m_partitionName.

Referenced by addImport(), and ModuleDefImpl().

◆ partitions()

const ModuleMap & ModuleDefImpl::partitions ( ) const
inlineoverridevirtual

Implements ModuleDef.

Definition at line 93 of file moduledef.cpp.

93{ return m_partitions; }

References m_partitions.

◆ qualifiedName()

DString ModuleDefImpl::qualifiedName ( ) const
overridevirtual

Returns the fully qualified name of this definition

Reimplemented from DefinitionMixin< ModuleDef >.

Definition at line 155 of file moduledef.cpp.

156{
157 DString result=name();
158 if (!m_partitionName.empty())
159 {
160 result+=":"+m_partitionName;
161 }
162 return result;
163}

References DString::empty(), m_partitionName, and DefinitionMixin< ModuleDef >::name().

Referenced by addListReferences(), addPartition(), and mergeSymbolsFrom().

◆ setFileDef()

void ModuleDefImpl::setFileDef ( FileDef * fd)

Definition at line 187 of file moduledef.cpp.

188{
189 m_fileDef = fd;
190}

References m_fileDef.

Referenced by ModuleManager::resolvePartitions().

◆ setPrimaryInterface()

void ModuleDefImpl::setPrimaryInterface ( const ModuleDef * mod)

Definition at line 182 of file moduledef.cpp.

183{
184 m_primaryInterface = mod;
185}

References m_primaryInterface.

Referenced by ModuleManager::resolvePartitionsRecursively().

◆ sortMemberLists()

void ModuleDefImpl::sortMemberLists ( )

Definition at line 781 of file moduledef.cpp.

782{
783 for (auto &ml : m_memberLists)
784 {
785 if (ml->needsSorting()) { ml->sort(); ml->setNeedsSorting(false); }
786 }
787
788 if (Config_getBool(SORT_BRIEF_DOCS))
789 {
790 auto classComp = [](const ClassLinkedRefMap::Ptr &c1,const ClassLinkedRefMap::Ptr &c2)
791 {
792 return Config_getBool(SORT_BY_SCOPE_NAME) ?
793 dstricmp_sort(c1->name(), c2->name())<0 :
794 dstricmp_sort(c1->className(), c2->className())<0;
795 };
796 std::stable_sort(m_classes.begin(), m_classes.end(), classComp);
797
798 auto conceptComp = [](const ConceptLinkedRefMap::Ptr &c1,const ConceptLinkedRefMap::Ptr &c2)
799 {
800 return Config_getBool(SORT_BY_SCOPE_NAME) ?
801 dstricmp_sort(c1->qualifiedName(), c2->qualifiedName())<0 :
802 dstricmp_sort(c1->name(), c2->name())<0;
803 };
804 std::stable_sort(m_concepts.begin(), m_concepts.end(), conceptComp);
805 }
806
807 static auto contrComp = [](const ModuleDef *m1, const ModuleDef *m2)
808 {
809 FileDef *f1 = m1->getFileDef();
810 FileDef *f2 = m2->getFileDef();
811 DString fn1 = f1 ? f1->name() : m1->name();
812 DString fn2 = f2 ? f2->name() : m2->name();
813 static auto typeRank = [](const ModuleDef *m) -> int
814 {
815 if (m->moduleType()==ModuleDef::Type::Interface)
816 {
817 if (m->partitionName().empty()) return 0; // primary interface unit
818 return 1; // partition interface unit
819 }
820 else
821 {
822 if (!m->partitionName().empty()) return 2; // partition implementation unit
823 return 3; // implementation unit
824 }
825 };
826 auto tr1 = typeRank(m1);
827 auto tr2 = typeRank(m2);
828 int diff = dstricmp_sort(fn1,fn2);
829 return tr1<tr2 || (tr1==tr2 && diff<0);
830 };
831
832 std::stable_sort(m_contributing.begin(), m_contributing.end(), contrComp);
833}
virtual DString className() const =0
Returns the name of the class including outer classes, but not including namespaces.
iterator end()
Definition linkedmap.h:367
iterator begin()
Definition linkedmap.h:366
virtual FileDef * getFileDef() const =0
int dstricmp_sort(const char *str1, const char *str2)
Definition dstring.h:67

References LinkedRefMap< T, Hash, KeyEqual, Map >::begin(), ClassDef::className(), Config_getBool, dstricmp_sort(), LinkedRefMap< T, Hash, KeyEqual, Map >::end(), ModuleDef::getFileDef(), ModuleDef::Interface, m_classes, m_concepts, m_contributing, m_memberLists, Definition::name(), and Definition::qualifiedName().

Referenced by ModuleManager::sortMemberLists().

◆ startMemberDeclarations()

void ModuleDefImpl::startMemberDeclarations ( OutputList & ol)

Definition at line 520 of file moduledef.cpp.

521{
523}
void startMemberSections()
Definition outputlist.h:457

References OutputList::startMemberSections().

Referenced by writeDocumentation().

◆ startMemberDocumentation()

void ModuleDefImpl::startMemberDocumentation ( OutputList & ol)

Definition at line 530 of file moduledef.cpp.

531{
532 if (Config_getBool(SEPARATE_MEMBER_PAGES))
533 {
536 }
537}
void disable(OutputType o)

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

Referenced by writeDocumentation().

◆ writeAuthorSection()

void ModuleDefImpl::writeAuthorSection ( OutputList & ol)

Definition at line 662 of file moduledef.cpp.

663{
664 // write Author section (Man only)
667 ol.startGroupHeader();
668 ol.parseText(theTranslator->trAuthor(true,true));
669 ol.endGroupHeader();
672}
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
#define Config_getString(name)
Definition config.h:32

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 ModuleDefImpl::writeBriefDescription ( OutputList & ol)

Definition at line 600 of file moduledef.cpp.

601{
603 {
604 auto parser { createDocParser() };
605 auto ast { validatingParseDoc(*parser.get(),
606 briefFile(),
607 briefLine(),
608 this,
609 nullptr,
611 DocOptions()
612 .setIndexWords(true)
613 .setSingleLine(true))
614 };
615 if (!ast->empty())
616 {
617 ol.startParagraph();
620 ol.writeString(" - ");
622 ol.writeDoc(ast.get(),this,nullptr);
625 ol.writeString(" \n");
627
629 {
631 ol.startTextLink(DString(),"details");
633 ol.endTextLink();
634 }
636 ol.endParagraph();
637 }
638 }
639 ol.writeSynopsis();
640}
virtual DString briefFile() const =0
bool hasBriefDescription() const override
int briefLine() const override
bool hasDetailedDescription() const
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< ModuleDef >::briefDescription(), DefinitionMixin< ModuleDef >::briefFile(), DefinitionMixin< ModuleDef >::briefLine(), createDocParser(), OutputList::disable(), OutputList::disableAllBut(), OutputList::enable(), OutputList::endParagraph(), OutputList::endTextLink(), DefinitionMixin< ModuleDef >::hasBriefDescription(), hasDetailedDescription(), Html, Man, OutputList::parseText(), OutputList::popGeneratorState(), OutputList::pushGeneratorState(), RTF, OutputList::startParagraph(), OutputList::startTextLink(), theTranslator, Translator::trMore(), validatingParseDoc(), OutputList::writeDoc(), OutputList::writeString(), and OutputList::writeSynopsis().

Referenced by writeDocumentation().

◆ writeClassDeclarations()

void ModuleDefImpl::writeClassDeclarations ( OutputList & ol,
const DString & title )

Definition at line 510 of file moduledef.cpp.

511{
512 m_classes.writeDeclaration(ol,nullptr,title,false);
513}
void writeDeclaration(OutputList &ol, const ClassDef::CompoundType *filter, const DString &header, bool localNames) const
Definition classlist.cpp:51

References m_classes, and ClassLinkedRefMap::writeDeclaration().

Referenced by writeDocumentation().

◆ writeConcepts()

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

Definition at line 515 of file moduledef.cpp.

516{
517 m_concepts.writeDeclaration(ol,title,false);
518}
void writeDeclaration(OutputList &ol, const DString &header, bool localNames) const

References m_concepts, and ConceptLinkedRefMap::writeDeclaration().

Referenced by writeDocumentation().

◆ writeDeclarationLink()

void ModuleDefImpl::writeDeclarationLink ( OutputList & ol,
bool & found,
const DString & header,
bool localNames ) const

Definition at line 888 of file moduledef.cpp.

889{
890 if (isLinkable())
891 {
892 if (!found) // first module
893 {
894 ol.startMemberHeader("modules");
895 if (!header.empty())
896 {
897 ol.parseText(header);
898 }
899 else
900 {
901 theTranslator->trModule(true,false);
902 }
903 ol.endMemberHeader();
904 ol.startMemberList();
905 found=true;
906 }
908 DString cname = displayName(!localNames);
909 DString anc = anchor();
910 if (anc.empty()) anc=cname; else anc.prepend(cname+"_");
912 ol.writeString("module ");
914 if (isLinkable())
915 {
918 anchor(),
919 cname
920 );
921 }
922 else
923 {
924 ol.startBold();
925 ol.docify(cname);
926 ol.endBold();
927 }
929 // add the brief description if available
930 if (!briefDescription().empty() && Config_getBool(BRIEF_MEMBER_DESC))
931 {
932 auto parser { createDocParser() };
933 auto ast { validatingParseDoc(*parser.get(),
934 briefFile(),
935 briefLine(),
936 this,
937 nullptr,
939 DocOptions()
940 .setSingleLine(true))
941 };
942 if (!ast->empty())
943 {
945 ol.writeDoc(ast.get(),this,nullptr);
947 }
948 }
949 ol.endMemberDeclaration(anchor(),DString());
950 }
951}
DString & prepend(const char *s)
Definition dstring.h:515
DString getReference() const override
DString anchor() const override
Definition moduledef.cpp:68
void startMemberDeclaration()
Definition outputlist.h:565
void writeObjectLink(const DString &ref, const DString &file, const DString &anchor, const DString &name)
Definition outputlist.h:435
void endMemberDescription()
Definition outputlist.h:563
void endMemberDeclaration(const DString &anchor, const DString &inheritId)
Definition outputlist.h:567
void docify(const DString &s)
Definition outputlist.h:433
void startMemberHeader(const DString &anchor, int typ=2)
Definition outputlist.h:465
void insertMemberAlign(bool templ=false)
Definition outputlist.h:513
void startMemberList()
Definition outputlist.h:477
void startBold()
Definition outputlist.h:557
void endMemberItem(OutputGenerator::MemberItemType type)
Definition outputlist.h:491
void endBold()
Definition outputlist.h:559
void startMemberItem(const DString &anchor, OutputGenerator::MemberItemType type, const DString &id=DString())
Definition outputlist.h:489
void startMemberDescription(const DString &anchor, const DString &inheritId=DString(), bool typ=false)
Definition outputlist.h:561
void endMemberHeader()
Definition outputlist.h:467

References anchor(), DefinitionMixin< ModuleDef >::briefDescription(), DefinitionMixin< ModuleDef >::briefFile(), DefinitionMixin< ModuleDef >::briefLine(), Config_getBool, createDocParser(), displayName(), OutputList::docify(), DString::empty(), OutputList::endBold(), OutputList::endMemberDeclaration(), OutputList::endMemberDescription(), OutputList::endMemberHeader(), OutputList::endMemberItem(), getOutputFileBase(), DefinitionMixin< ModuleDef >::getReference(), OutputList::insertMemberAlign(), isLinkable(), OutputGenerator::Normal, OutputList::parseText(), DString::prepend(), OutputList::startBold(), OutputList::startMemberDeclaration(), OutputList::startMemberDescription(), OutputList::startMemberHeader(), OutputList::startMemberItem(), OutputList::startMemberList(), theTranslator, Translator::trModule(), validatingParseDoc(), OutputList::writeDoc(), OutputList::writeObjectLink(), and OutputList::writeString().

Referenced by ModuleLinkedRefMap::writeDeclaration().

◆ writeDetailedDescription()

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

Definition at line 548 of file moduledef.cpp.

549{
551 {
554 ol.writeRuler();
558 ol.writeAnchor(DString(),"details");
560 ol.startGroupHeader("details");
561 ol.parseText(title);
562 ol.endGroupHeader();
563
564 ol.startTextBlock();
565 if (!briefDescription().empty() && Config_getBool(REPEAT_BRIEF))
566 {
568 briefLine(),
569 this,
570 nullptr,
572 DocOptions());
573 }
574 if (!briefDescription().empty() && Config_getBool(REPEAT_BRIEF) &&
575 !documentation().empty())
576 {
580 ol.enableAll();
583 ol.writeString("\n\n");
585 }
586 if (!documentation().empty())
587 {
588 ol.generateDoc(docFile(),
589 docLine(),
590 this,
591 nullptr,
592 documentation()+"\n",
593 DocOptions()
594 .setIndexWords(true));
595 }
596 ol.endTextBlock();
597 }
598}
DString briefFile() const override
int docLine() const override
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()

References DefinitionMixin< ModuleDef >::briefDescription(), DefinitionMixin< ModuleDef >::briefFile(), DefinitionMixin< ModuleDef >::briefLine(), Config_getBool, OutputList::disable(), OutputList::disableAllBut(), DefinitionMixin< ModuleDef >::docFile(), DefinitionMixin< ModuleDef >::docLine(), DefinitionMixin< ModuleDef >::documentation(), OutputList::enable(), OutputList::enableAll(), OutputList::endGroupHeader(), OutputList::endTextBlock(), OutputList::generateDoc(), hasDetailedDescription(), Html, Latex, Man, OutputList::parseText(), OutputList::popGeneratorState(), OutputList::pushGeneratorState(), RTF, OutputList::startGroupHeader(), OutputList::startTextBlock(), OutputList::writeAnchor(), OutputList::writeRuler(), and OutputList::writeString().

Referenced by writeDocumentation().

◆ writeDocumentation()

void ModuleDefImpl::writeDocumentation ( OutputList & ol)
overridevirtual

Implements ModuleDef.

Definition at line 347 of file moduledef.cpp.

348{
349 if (isReference()) return;
350 bool generateTreeView = Config_getBool(GENERATE_TREEVIEW);
352 AUTO_TRACE("%s file=%s",name(),getDefFileName());
353 SrcLangExt lang = getLanguage();
354 DString pageTitle;
355 if (Config_getBool(HIDE_COMPOUND_REFERENCE))
356 {
357 pageTitle = displayName();
358 }
359 else
360 {
362 }
363 startFile(ol,getOutputFileBase(),false,name(),pageTitle,HighlightedItem::ModuleVisible,false,DString());
364
365 // ---- title part
367 bool writeOutlinePanel = generateTreeView && Config_getBool(PAGE_OUTLINE_PANEL);
368 if (!writeOutlinePanel) writeSummaryLinks(ol);
370
373 ol.parseText(pageTitle);
375
376 addGroupListToTitle(ol,this);
377
380 ol.endTitleHead(getOutputFileBase(),pageTitle);
382
386 ol.writeString(" - ");
387 ol.parseText(pageTitle);
389
390 ol.endHeaderSection();
391 ol.startContents();
392
393 //---------------------------------------- start flexible part -------------------------------
394 for (const auto &lde : LayoutDocManager::instance().docEntries(LayoutDocManager::Module))
395 {
396 const LayoutDocEntrySection *ls = dynamic_cast<const LayoutDocEntrySection*>(lde.get());
397 switch (lde->kind())
398 {
399 case LayoutDocEntry::BriefDesc:
401 break;
402 case LayoutDocEntry::MemberDeclStart:
404 break;
405 case LayoutDocEntry::ModuleClasses:
406 if (ls) writeClassDeclarations(ol,ls->title(lang));
407 break;
408 case LayoutDocEntry::ModuleConcepts:
409 if (ls) writeConcepts(ol,ls->title(lang));
410 break;
411 case LayoutDocEntry::ModuleExports:
412 if (ls) writeExports(ol,ls->title(lang));
413 break;
414 case LayoutDocEntry::ModuleUsedFiles:
415 if (ls) writeFiles(ol,ls->title(lang));
416 break;
417 case LayoutDocEntry::MemberGroups:
419 break;
420 case LayoutDocEntry::MemberDecl:
421 {
422 const LayoutDocEntryMemberDecl *lmd = dynamic_cast<const LayoutDocEntryMemberDecl*>(lde.get());
423 if (lmd) writeMemberDeclarations(ol,lmd->type,lmd->title(lang));
424 }
425 break;
426 case LayoutDocEntry::MemberDeclEnd:
428 break;
429 case LayoutDocEntry::DetailedDesc:
430 if (ls) writeDetailedDescription(ol,ls->title(lang));
431 break;
432 case LayoutDocEntry::MemberDefStart:
434 break;
435 case LayoutDocEntry::MemberDef:
436 {
437 const LayoutDocEntryMemberDef *lmd = dynamic_cast<const LayoutDocEntryMemberDef*>(lde.get());
438 if (lmd) writeMemberDocumentation(ol,lmd->type,lmd->title(lang));
439 }
440 break;
441 case LayoutDocEntry::MemberDefEnd:
443 break;
444 case LayoutDocEntry::AuthorSection:
446 break;
447 case LayoutDocEntry::ClassIncludes:
448 case LayoutDocEntry::ClassInheritanceGraph:
449 case LayoutDocEntry::ClassNestedClasses:
450 case LayoutDocEntry::ClassCollaborationGraph:
451 case LayoutDocEntry::ClassAllMembersLink:
452 case LayoutDocEntry::ClassUsedFiles:
453 case LayoutDocEntry::ClassInlineClasses:
454 case LayoutDocEntry::FileClasses:
455 case LayoutDocEntry::FileConcepts:
456 case LayoutDocEntry::FileInterfaces:
457 case LayoutDocEntry::FileStructs:
458 case LayoutDocEntry::FileExceptions:
459 case LayoutDocEntry::FileNamespaces:
460 case LayoutDocEntry::FileConstantGroups:
461 case LayoutDocEntry::FileIncludes:
462 case LayoutDocEntry::FileIncludeGraph:
463 case LayoutDocEntry::FileIncludedByGraph:
464 case LayoutDocEntry::FileInlineClasses:
465 case LayoutDocEntry::FileSourceLink:
466 case LayoutDocEntry::NamespaceNestedNamespaces:
467 case LayoutDocEntry::NamespaceNestedConstantGroups:
468 case LayoutDocEntry::NamespaceClasses:
469 case LayoutDocEntry::NamespaceConcepts:
470 case LayoutDocEntry::NamespaceInterfaces:
471 case LayoutDocEntry::NamespaceStructs:
472 case LayoutDocEntry::NamespaceExceptions:
473 case LayoutDocEntry::NamespaceInlineClasses:
474 case LayoutDocEntry::ConceptDefinition:
475 case LayoutDocEntry::GroupClasses:
476 case LayoutDocEntry::GroupConcepts:
477 case LayoutDocEntry::GroupModules:
478 case LayoutDocEntry::GroupInlineClasses:
479 case LayoutDocEntry::GroupNamespaces:
480 case LayoutDocEntry::GroupDirs:
481 case LayoutDocEntry::GroupNestedGroups:
482 case LayoutDocEntry::GroupFiles:
483 case LayoutDocEntry::GroupGraph:
484 case LayoutDocEntry::GroupPageDocs:
485 case LayoutDocEntry::DirSubDirs:
486 case LayoutDocEntry::DirFiles:
487 case LayoutDocEntry::DirGraph:
488 err("Internal inconsistency: member '{}' should not be part of "
489 "LayoutDocManager::Module entry list\n",lde->entryToString());
490 break;
491 }
492 }
493
494 //---------------------------------------- end flexible part -------------------------------
495 if (generateTreeView)
496 {
499 ol.endContents();
500 ol.writeString("</div><!-- doc-content -->\n");
502 ol.writeString("</div><!-- container -->\n");
504 }
505 endFile(ol,generateTreeView,true);
506
508}
void writeConcepts(OutputList &ol, const DString &title)
void startMemberDeclarations(OutputList &ol)
void endMemberDeclarations(OutputList &ol)
void writeMemberDocumentation(OutputList &ol, MemberListType lt, const DString &title)
void writeMemberGroups(OutputList &ol)
void startMemberDocumentation(OutputList &ol)
void writeAuthorSection(OutputList &ol)
void writeClassDeclarations(OutputList &ol, const DString &title)
void writeExports(OutputList &ol, const DString &title)
void endMemberDocumentation(OutputList &ol)
void writeMemberDeclarations(OutputList &ol, MemberListType lt, const DString &title)
void writeBriefDescription(OutputList &ol)
void writeSummaryLinks(OutputList &ol) const override
void writePageNavigation(OutputList &ol) const override
void writeFiles(OutputList &ol, const DString &title)
void writeDetailedDescription(OutputList &ol, const DString &title)
void startTitleHead(const DString &fileName)
Definition outputlist.h:399
void endTitleHead(const DString &fileName, const DString &name)
Definition outputlist.h:401
void endContents()
Definition outputlist.h:616
void endHeaderSection()
Definition outputlist.h:463
void startHeaderSection()
Definition outputlist.h:461
void startContents()
Definition outputlist.h:614
virtual DString trModuleReference(const DString &namespaceName)=0
void endFile(OutputList &ol, bool skipNavIndex, bool skipEndContents, const DString &navPath)
Definition index.cpp:431
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
#define err(fmt,...)
Definition message.h:127
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(), AUTO_TRACE, Config_getBool, OutputList::disable(), OutputList::disableAllBut(), displayName(), OutputList::endContents(), endFile(), OutputList::endHeaderSection(), endMemberDeclarations(), endMemberDocumentation(), OutputList::endTitleHead(), err, DefinitionMixin< ModuleDef >::getDefFileName(), DefinitionMixin< ModuleDef >::getLanguage(), getOutputFileBase(), Html, LayoutDocManager::instance(), DefinitionMixin< ModuleDef >::isReference(), Man, ModuleVisible, DefinitionMixin< ModuleDef >::name(), OutputList::parseText(), OutputList::popGeneratorState(), OutputList::pushGeneratorState(), OutputList::startContents(), startFile(), OutputList::startHeaderSection(), startMemberDeclarations(), startMemberDocumentation(), OutputList::startTitleHead(), theTranslator, LayoutDocEntryMemberDecl::title(), LayoutDocEntryMemberDef::title(), LayoutDocEntrySection::title(), Translator::trModuleReference(), LayoutDocEntryMemberDecl::type, LayoutDocEntryMemberDef::type, writeAuthorSection(), writeBriefDescription(), writeClassDeclarations(), writeConcepts(), writeDetailedDescription(), writeExports(), writeFiles(), writeMemberDeclarations(), writeMemberDocumentation(), writeMemberGroups(), writePageNavigation(), OutputList::writeString(), and writeSummaryLinks().

◆ writeExports()

void ModuleDefImpl::writeExports ( OutputList & ol,
const DString & title )

Definition at line 954 of file moduledef.cpp.

955{
956 AUTO_TRACE("name={} count={}",name(),m_exportedModules.size());
957 if (!m_exportedModules.empty())
958 {
959 ol.startMemberHeader("exports");
960 ol.parseText(title);
961 ol.endMemberHeader();
962 ol.startMemberList();
963 for (const auto &[moduleName,importInfoList] : m_exportedModules)
964 {
965 for (const auto &importInfo : importInfoList)
966 {
967 ModuleDef *mod = ModuleManager::instance().getPrimaryInterface(importInfo.importName);
970 ol.docify(theTranslator->trModule(false,true)+" ");
972 if (mod && mod->isLinkable())
973 {
974 ol.writeObjectLink(mod->getReference(),mod->getOutputFileBase(),DString(),mod->displayName());
975 }
976 else
977 {
978 ol.startBold();
979 ol.docify(importInfo.importName);
980 ol.endBold();
981 }
983 if (mod && !mod->briefDescription().empty() && Config_getBool(BRIEF_MEMBER_DESC))
984 {
987 briefLine(),
988 mod,
989 nullptr,
990 mod->briefDescription(),
991 DocOptions()
992 .setSingleLine(true));
994 }
995 ol.endMemberDeclaration(DString(),DString());
996 }
997 }
998 ol.endMemberList();
999 }
1000}
virtual DString briefDescription(bool abbreviate=false) const =0
virtual DString displayName(bool includeScope=true) const =0
virtual DString getReference() const =0
virtual DString getOutputFileBase() const =0
static ModuleManager & instance()
ModuleDef * getPrimaryInterface(const DString &moduleName) const
void endMemberList()
Definition outputlist.h:479

References AUTO_TRACE, Definition::briefDescription(), DefinitionMixin< ModuleDef >::briefFile(), DefinitionMixin< ModuleDef >::briefLine(), Config_getBool, Definition::displayName(), OutputList::docify(), DString::empty(), OutputList::endBold(), OutputList::endMemberDeclaration(), OutputList::endMemberDescription(), OutputList::endMemberHeader(), OutputList::endMemberItem(), OutputList::endMemberList(), OutputList::generateDoc(), Definition::getOutputFileBase(), ModuleManager::getPrimaryInterface(), Definition::getReference(), OutputList::insertMemberAlign(), ModuleManager::instance(), Definition::isLinkable(), m_exportedModules, DefinitionMixin< ModuleDef >::name(), OutputGenerator::Normal, OutputList::parseText(), OutputList::startBold(), OutputList::startMemberDeclaration(), OutputList::startMemberDescription(), OutputList::startMemberHeader(), OutputList::startMemberItem(), OutputList::startMemberList(), theTranslator, Translator::trModule(), and OutputList::writeObjectLink().

Referenced by writeDocumentation().

◆ writeFiles()

void ModuleDefImpl::writeFiles ( OutputList & ol,
const DString & title )

Definition at line 1002 of file moduledef.cpp.

1003{
1004 AUTO_TRACE("{} count={}",name(),m_contributing.size());
1005 if (!m_contributing.empty())
1006 {
1007 ol.startMemberHeader("files");
1008 ol.parseText(title);
1009 ol.endMemberHeader();
1010 ol.startMemberList();
1011 for (const auto &mod : m_contributing)
1012 {
1013 FileDef *fd = mod->getFileDef();
1014 if (fd)
1015 {
1017 DString fname = fd->displayName();
1018 DString anc = fd->anchor();
1019 if (anc.empty()) anc=fname; else anc.prepend(fname+"_");
1021 ol.docify(theTranslator->trFile(false,true)+" ");
1022 ol.insertMemberAlign();
1023 DString path=fd->getPath();
1024 if (Config_getBool(FULL_PATH_NAMES))
1025 {
1026 ol.docify(stripFromPath(path));
1027 }
1028 if (fd->isLinkable())
1029 {
1030 ol.writeObjectLink(fd->getReference(),fd->getOutputFileBase(),DString(),fname);
1031 }
1032 else
1033 {
1034 ol.startBold();
1035 ol.docify(fd->displayName());
1036 ol.endBold();
1037 }
1039 if (!fd->briefDescription().empty() && Config_getBool(BRIEF_MEMBER_DESC))
1040 {
1043 briefLine(),
1044 fd,
1045 nullptr,
1046 fd->briefDescription(),
1047 DocOptions()
1048 .setSingleLine(true));
1050 }
1051 ol.endMemberDeclaration(DString(),DString());
1052 }
1053 }
1054 ol.endMemberList();
1055 }
1056}
virtual DString anchor() const =0
virtual DString getPath() const =0
virtual DString trFile(bool first_capital, bool singular)=0
DString stripFromPath(const DString &path)
Definition util.cpp:219

References Definition::anchor(), AUTO_TRACE, Definition::briefDescription(), DefinitionMixin< ModuleDef >::briefFile(), DefinitionMixin< ModuleDef >::briefLine(), Config_getBool, Definition::displayName(), OutputList::docify(), DString::empty(), OutputList::endBold(), OutputList::endMemberDeclaration(), OutputList::endMemberDescription(), OutputList::endMemberHeader(), OutputList::endMemberItem(), OutputList::endMemberList(), OutputList::generateDoc(), Definition::getOutputFileBase(), FileDef::getPath(), Definition::getReference(), OutputList::insertMemberAlign(), Definition::isLinkable(), m_contributing, DefinitionMixin< ModuleDef >::name(), OutputGenerator::Normal, OutputList::parseText(), DString::prepend(), OutputList::startBold(), OutputList::startMemberDeclaration(), OutputList::startMemberDescription(), OutputList::startMemberHeader(), OutputList::startMemberItem(), OutputList::startMemberList(), stripFromPath(), theTranslator, Translator::trFile(), and OutputList::writeObjectLink().

Referenced by writeDocumentation().

◆ writeMemberDeclarations()

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

Definition at line 650 of file moduledef.cpp.

651{
652 MemberList * ml = getMemberList(lt);
653 if (ml) ml->writeDeclarations(ol,nullptr,nullptr,nullptr,nullptr,this,title,DString());
654}
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.

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

Referenced by writeDocumentation().

◆ writeMemberDocumentation()

void ModuleDefImpl::writeMemberDocumentation ( OutputList & ol,
MemberListType lt,
const DString & title )

Definition at line 656 of file moduledef.cpp.

657{
658 MemberList * ml = getMemberList(lt);
659 if (ml) ml->writeDocumentation(ol,name(),this,title,ml->listType().toLabel());
660}
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(), DefinitionMixin< ModuleDef >::name(), MemberListType::toLabel(), and MemberList::writeDocumentation().

Referenced by writeDocumentation().

◆ writeMemberGroups()

void ModuleDefImpl::writeMemberGroups ( OutputList & ol)

Definition at line 642 of file moduledef.cpp.

643{
644 for (const auto &mg : m_memberGroups)
645 {
646 mg->writeDeclarations(ol,nullptr,nullptr,nullptr,nullptr,this);
647 }
648}

References m_memberGroups.

Referenced by writeDocumentation().

◆ writePageNavigation()

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

Reimplemented from DefinitionMixin< ModuleDef >.

Definition at line 883 of file moduledef.cpp.

884{
885 ol.writePageOutline();
886}
void writePageOutline()
Definition outputlist.h:612

References OutputList::writePageOutline().

Referenced by writeDocumentation().

◆ writeSummaryLinks()

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

Reimplemented from DefinitionMixin< ModuleDef >.

Definition at line 835 of file moduledef.cpp.

836{
839 bool first=true;
840 SrcLangExt lang=getLanguage();
841 for (const auto &lde : LayoutDocManager::instance().docEntries(LayoutDocManager::Module))
842 {
843 const LayoutDocEntrySection *ls = dynamic_cast<const LayoutDocEntrySection*>(lde.get());
844 if (lde->kind()==LayoutDocEntry::ModuleClasses && m_classes.declVisible() && ls)
845 {
846 DString label = "classes";
847 ol.writeSummaryLink(DString(),label,ls->title(lang),first);
848 first=false;
849 }
850 else if (lde->kind()==LayoutDocEntry::ModuleConcepts && m_concepts.declVisible() && ls)
851 {
852 DString label = "concepts";
853 ol.writeSummaryLink(DString(),label,ls->title(lang),first);
854 first=false;
855 }
856 else if (lde->kind()==LayoutDocEntry::ModuleUsedFiles && ls)
857 {
858 DString label = "files";
859 ol.writeSummaryLink(DString(),label,ls->title(lang),first);
860 first=false;
861 }
862 else if (lde->kind()==LayoutDocEntry::MemberDecl)
863 {
864 const LayoutDocEntryMemberDecl *lmd = dynamic_cast<const LayoutDocEntryMemberDecl*>(lde.get());
865 if (lmd)
866 {
867 MemberList * ml = getMemberList(lmd->type);
868 if (ml && ml->declVisible())
869 {
870 ol.writeSummaryLink(DString(),ml->listType().toLabel(),lmd->title(lang),first);
871 first=false;
872 }
873 }
874 }
875 }
876 if (!first)
877 {
878 ol.writeString(" </div>\n");
879 }
881}
bool declVisible(const ClassDef::CompoundType *filter=nullptr) const
Definition classlist.cpp:27
bool declVisible() const
bool declVisible() 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(), OutputList::disableAllBut(), DefinitionMixin< ModuleDef >::getLanguage(), getMemberList(), Html, LayoutDocManager::instance(), MemberList::listType(), m_classes, m_concepts, OutputList::popGeneratorState(), OutputList::pushGeneratorState(), LayoutDocEntryMemberDecl::title(), LayoutDocEntrySection::title(), MemberListType::toLabel(), LayoutDocEntryMemberDecl::type, OutputList::writeString(), and OutputList::writeSummaryLink().

Referenced by writeDocumentation().

◆ writeTagFile()

void ModuleDefImpl::writeTagFile ( TextStream & t) const
overridevirtual

Implements ModuleDef.

Definition at line 1116 of file moduledef.cpp.

1117{
1118 if (!isPrimaryInterface() || !isLinkableInProject()) return;
1119 tagFile << " <compound kind=\"module\">\n";
1120 tagFile << " <name>" << convertToXML(name()) << "</name>\n";
1121 const FileDef *fd = getFileDef();
1122 DString fn = fd ? fd->getOutputFileBase() : getOutputFileBase();
1124 tagFile << " <filename>" << convertToXML(fn) << "</filename>\n";
1125#if 0 // at the moment we do not export the members of a module to a tag file.
1126 // We let the project using a tag file directly link to the implementation of the
1127 // symbols (which have the same scope).
1128 //
1129 // When we support linking to a module's interface instead we need to
1130 // export the module's members as well. Then we probably need a way to
1131 // disambiguate/prioritize a link to a module over a link to the implementation,
1132 // for instance by hiding non-exported symbols from the tag file.
1133 for (const auto &lde : LayoutDocManager::instance().docEntries(LayoutDocManager::Group))
1134 {
1135 switch (lde->kind())
1136 {
1137 case LayoutDocEntry::ModuleExports:
1138 {
1139 for (const auto &[modName,importInfo] : m_exportedModules)
1140 {
1141 tagFile << " <export>" << convertToXML(importInfo.importName) << "</export>\n";
1142 }
1143 }
1144 break;
1145 case LayoutDocEntry::ModuleClasses:
1146 {
1147 for (const auto &cd : m_classes)
1148 {
1149 if (cd->isLinkableInProject())
1150 {
1151 tagFile << " <class kind=\"" << cd->compoundTypeString()
1152 << "\">" << convertToXML(cd->name()) << "</class>\n";
1153 }
1154 }
1155 }
1156 break;
1157 case LayoutDocEntry::ModuleConcepts:
1158 {
1159 for (const auto &cd : m_concepts)
1160 {
1161 if (cd->isLinkableInProject())
1162 {
1163 tagFile << " <concept>" << convertToXML(cd->name())
1164 << "</concept>\n";
1165 }
1166 }
1167 }
1168 break;
1169 case LayoutDocEntry::ModuleUsedFiles:
1170 {
1171 for (const auto &usedFd : getUsedFiles())
1172 {
1173 if (usedFd->isLinkableInProject())
1174 {
1175 tagFile << " <file>" << convertToXML(usedFd->name()) << "</file>\n";
1176 }
1177 }
1178 }
1179 break;
1180 case LayoutDocEntry::MemberDecl:
1181 {
1182 const LayoutDocEntryMemberDecl *lmd = dynamic_cast<const LayoutDocEntryMemberDecl*>(lde.get());
1183 if (lmd && lmd->visible())
1184 {
1185 MemberList * ml = getMemberList(lmd->type);
1186 if (ml)
1187 {
1188 ml->writeTagFile(tagFile,true);
1189 }
1190 }
1191 }
1192 break;
1193 default:
1194 break;
1195 }
1196 }
1197#endif
1198 DString idStr = id();
1199 if (!idStr.empty())
1200 {
1201 tagFile << " <clangid>" << convertToXML(idStr) << "</clangid>\n";
1202 }
1203 writeDocAnchorsToTagFile(tagFile);
1204 tagFile << " </compound>\n";
1205}
DString id() const override
void writeDocAnchorsToTagFile(TextStream &fs) const override
void writeTagFile(TextStream &, bool useQualifiedName=false, bool showNamespaceMembers=true)
FileList getUsedFiles() const override
bool isPrimaryInterface() const override
Definition moduledef.cpp:83
FileDef * getFileDef() const override
Definition moduledef.cpp:90
bool isLinkableInProject() const override
Definition moduledef.cpp:69
bool visible() const override
Definition layout.h:120
void addHtmlExtensionIfMissing(DString &fName)
Definition util.cpp:3931
DString convertToXML(const DString &s, bool keepEntities, const bool citeEntry)
Definition util.cpp:3232

References addHtmlExtensionIfMissing(), convertToXML(), DString::empty(), getFileDef(), getMemberList(), Definition::getOutputFileBase(), getOutputFileBase(), getUsedFiles(), DefinitionMixin< ModuleDef >::id(), LayoutDocManager::instance(), isLinkableInProject(), isPrimaryInterface(), m_classes, m_concepts, m_exportedModules, DefinitionMixin< ModuleDef >::name(), LayoutDocEntryMemberDecl::type, LayoutDocEntryMemberDecl::visible(), DefinitionMixin< ModuleDef >::writeDocAnchorsToTagFile(), and MemberList::writeTagFile().

Member Data Documentation

◆ m_classes

◆ m_concepts

◆ m_contributing

ModuleList ModuleDefImpl::m_contributing
private

Definition at line 144 of file moduledef.cpp.

Referenced by addContributingModule(), getUsedFiles(), sortMemberLists(), and writeFiles().

◆ m_exportedModules

ImportInfoMap ModuleDefImpl::m_exportedModules
private

Definition at line 139 of file moduledef.cpp.

Referenced by addExportedModule(), getExports(), writeExports(), and writeTagFile().

◆ m_fileDef

FileDef* ModuleDefImpl::m_fileDef = nullptr
private

Definition at line 147 of file moduledef.cpp.

Referenced by getFileDef(), and setFileDef().

◆ m_imports

ImportInfoMap ModuleDefImpl::m_imports
private

Definition at line 138 of file moduledef.cpp.

Referenced by addImport(), and getImports().

◆ m_memberGroups

◆ m_memberLists

◆ m_partitionName

DString ModuleDefImpl::m_partitionName
private

Definition at line 137 of file moduledef.cpp.

Referenced by isPrimaryInterface(), ModuleDefImpl(), partitionName(), and qualifiedName().

◆ m_partitions

ModuleMap ModuleDefImpl::m_partitions
private

Definition at line 143 of file moduledef.cpp.

Referenced by addPartition(), and partitions().

◆ m_primaryInterface

const ModuleDef* ModuleDefImpl::m_primaryInterface = nullptr
private

Definition at line 146 of file moduledef.cpp.

Referenced by isLinkable(), isLinkableInProject(), and setPrimaryInterface().

◆ m_type

Type ModuleDefImpl::m_type
private

Definition at line 136 of file moduledef.cpp.

Referenced by isPrimaryInterface(), ModuleDefImpl(), and moduleType().


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