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, int startColom, 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, int 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
int getDefColumn () const override
bool hasDocumentation () const override
bool hasUserDocumentation () const override
bool isVisibleInProject () const override
bool isVisible () const override
bool isHidden () const override
bool isArtificial () const override
bool isExported () const override
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, int 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 48 of file moduledef.cpp.

Constructor & Destructor Documentation

◆ ModuleDefImpl()

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

Definition at line 51 of file moduledef.cpp.

53 : DefinitionMixin<ModuleDef>(fileName,startLine,startColom,name,nullptr,nullptr,true),
virtual const DString & name() const =0
DefinitionMixin(const DString &defFileName, int defLine, int defColumn, const DString &name, const char *b=nullptr, const char *d=nullptr, bool isSymbol=true)
DString partitionName() const override
Definition moduledef.cpp:74
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 202 of file moduledef.cpp.

203{
204 DString className = cd->qualifiedName();
205 AUTO_TRACE("{}:{} class {} of module {} exported={}",
206 root->fileName,root->startLine, className, name(), root->exported);
207 bool isExported = m_classes.find(className)!=nullptr;
208 if (root->exported && !isExported)
209 {
210 m_classes.add(className,cd);
211 }
212 auto cdm = toClassDefMutable(cd);
213 if (cdm && root->exported && !cd->isExported())
214 {
215 cdm->setExported(true);
216 }
217}
virtual bool isExported() const =0
virtual DString qualifiedName() const =0
bool exported
is the symbol exported from a C++20 module
Definition entry.h:190
DString fileName
file this entry was extracted from
Definition entry.h:225
int startLine
start line of entry in the source
Definition entry.h:226
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:48

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 219 of file moduledef.cpp.

220{
221 DString conceptName = cd->qualifiedName();
222 AUTO_TRACE("{}:{} concept {} of module {} exported={}",
223 root->fileName,root->startLine,
224 cd->qualifiedName(),name(),
225 root->exported);
226 bool isExported = m_classes.find(conceptName)!=nullptr;
227 if (root->exported && !isExported)
228 {
229 m_concepts.add(conceptName,cd);
230 }
231 auto cdm = toConceptDefMutable(cd);
232 if (cdm && root->exported && !cd->isExported())
233 {
234 cdm->setExported(true);
235 }
236}
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 167 of file moduledef.cpp.

168{
169 if (std::find(m_contributing.begin(),m_contributing.end(),mod)==m_contributing.end())
170 {
171 m_contributing.push_back(mod);
172 }
173}
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 196 of file moduledef.cpp.

197{
198 AUTO_TRACE("name={}:moduleName={},import={}",name(),moduleName,info.importName);
199 m_exportedModules[moduleName.str()].push_back(info);
200}
const std::string & str() const
Definition dstring.h:634
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 185 of file moduledef.cpp.

186{
187 AUTO_TRACE("name={}:line={},header={},isSystem={}",name(),line,headerName,isSystem);
188}

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 190 of file moduledef.cpp.

191{
192 AUTO_TRACE("name={}:line={},module={},partition={}",name(),line,moduleName,partitionName);
193 m_imports[getDefFileName().str()+":"+std::to_string(line)].push_back(ImportInfo(this,moduleName,line,partitionName,isExported));
194}
virtual DString getDefFileName() const =0
ImportInfoMap m_imports
ImportInfo(ModuleDef *def, const DString &name, int l, const DString &pName, bool isExported=false)
Definition moduledef.h:40

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

Referenced by ModuleManager::addImport().

◆ addListReferences()

void ModuleDefImpl::addListReferences ( )

Definition at line 687 of file moduledef.cpp.

688{
691 getLanguage()==SrcLangExt::Fortran ?
692 theTranslator->trModule(true,true) :
693 theTranslator->trNamespace(true,true),
695 DString(),
696 this
697 );
698 for (const auto &mg : m_memberGroups)
699 {
700 mg->addListReferences(this);
701 }
702 for (auto &ml : m_memberLists)
703 {
704 if (ml->listType().isDocumentation())
705 {
706 ml->addListReferences(this);
707 }
708 }
709}
DString()=default
virtual SrcLangExt getLanguage() const =0
Returns the programming language this definition was written in.
virtual const RefItemVector & xrefListItems() const =0
DString getOutputFileBase() const override
DString displayName(bool=true) const override
Definition moduledef.cpp:59
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:71
void addRefItem(const RefItemVector &sli, const DString &key, const DString &prefix, const DString &name, const DString &title, const DString &args, const Definition *scope)
Definition util.cpp:4872

References addRefItem(), displayName(), DString::DString(), 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 727 of file moduledef.cpp.

728{
729 for (auto &ml : m_memberLists)
730 {
731 if (ml->listType().isDeclaration())
732 {
734 }
735 }
736
737 // add members inside sections to their groups
738 for (const auto &mg : m_memberGroups)
739 {
740 if (mg->allMembersInSameSection() && Config_getBool(SUBGROUPING))
741 {
742 //printf("----> addToDeclarationSection(%s)\n",qPrint(mg->header()));
743 mg->addToDeclarationSection();
744 }
745 }
746}
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 250 of file moduledef.cpp.

251{
252 bool sortBriefDocs = Config_getBool(SORT_BRIEF_DOCS);
253 bool sortMemberDocs = Config_getBool(SORT_MEMBER_DOCS);
255 ml->setNeedsSorting(
256 (ml->listType().isDeclaration() && sortBriefDocs) ||
257 (ml->listType().isDocumentation() && sortMemberDocs));
258 ml->push_back(md);
259 if (ml->listType().isDeclaration())
260 {
261 MemberDefMutable *mdm = toMemberDefMutable(md);
262 if (mdm)
263 {
264 mdm->setSectionList(this,ml.get());
265 }
266 }
267}
virtual void setSectionList(const Definition *container, const MemberList *sl)=0
const std::unique_ptr< MemberList > & get(MemberListType lt, MemberListContainer con)
Definition memberlist.h:191
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 269 of file moduledef.cpp.

270{
271 AUTO_TRACE("{}:{} member {} of module {} exported={}",
272 qPrint(root->fileName),root->startLine,
274 root->exported);
275 MemberList *allMemberList = getMemberList(MemberListType::AllMembersList());
276 if (allMemberList==nullptr)
277 {
278 m_memberLists.emplace_back(std::make_unique<MemberList>(MemberListType::AllMembersList(),MemberListContainer::Module));
279 allMemberList = m_memberLists.back().get();
280 }
281 if (allMemberList->contains(md))
282 {
283 return;
284 }
285 allMemberList->push_back(md);
286 switch (md->memberType())
287 {
288 case MemberType::Variable:
289 addMemberToList(MemberListType::DecVarMembers(),md);
290 break;
291 case MemberType::Function:
292 addMemberToList(MemberListType::DecFuncMembers(),md);
293 break;
294 case MemberType::Typedef:
295 addMemberToList(MemberListType::DecTypedefMembers(),md);
296 break;
297 case MemberType::Enumeration:
298 addMemberToList(MemberListType::DecEnumMembers(),md);
299 break;
300 default:
301 break;
302 }
303 auto mdm = toMemberDefMutable(md);
304 if (mdm && root->exported && !md->isExported())
305 {
306 mdm->setExported(true);
307 }
308}
virtual MemberType memberType() const =0
bool contains(const MemberDef *md) const
Definition memberlist.h:89
void push_back(const T &value)
Definition memberlist.h:48
MemberList * getMemberList(MemberListType lt) const override
void addMemberToList(MemberListType lt, MemberDef *md)
const char * qPrint(const char *s)
Definition dstring.h:769

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 158 of file moduledef.cpp.

159{
160 std::string qName = mod->qualifiedName().str();
161 if (m_partitions.find(qName)==m_partitions.end())
162 {
163 m_partitions.emplace(qName,mod);
164 }
165}
ModuleMap m_partitions

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

Referenced by ModuleManager::resolvePartitionsRecursively().

◆ addRequirementReferences()

void ModuleDefImpl::addRequirementReferences ( )

Definition at line 711 of file moduledef.cpp.

712{
714 for (const auto &mg : m_memberGroups)
715 {
716 mg->addRequirementReferences(this);
717 }
718 for (auto &ml : m_memberLists)
719 {
720 if (ml->listType().isDocumentation())
721 {
722 ml->addRequirementReferences(this);
723 }
724 }
725}
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 61 of file moduledef.cpp.

61{ return ""; }

Referenced by writeDeclarationLink().

◆ codeSymbolType()

CodeSymbolType ModuleDefImpl::codeSymbolType ( ) const
inlineoverridevirtual

Used for syntax highlighting symbol class

Implements Definition.

Definition at line 58 of file moduledef.cpp.

References Module.

◆ countMembers()

void ModuleDefImpl::countMembers ( )

Definition at line 673 of file moduledef.cpp.

674{
675 for (auto &ml : m_memberLists)
676 {
677 ml->countDecMembers();
678 ml->countDocMembers();
679 }
680 for (const auto &mg : m_memberGroups)
681 {
682 mg->countDecMembers();
683 mg->countDocMembers();
684 }
685}

References m_memberGroups, and m_memberLists.

Referenced by ModuleManager::countMembers().

◆ countVisibleMembers()

int ModuleDefImpl::countVisibleMembers ( ) const
overridevirtual

Implements ModuleDef.

Definition at line 1062 of file moduledef.cpp.

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

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 57 of file moduledef.cpp.

57{ 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 59 of file moduledef.cpp.

59{ return name(); }

References DefinitionMixin< ModuleDef >::name().

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

◆ distributeMemberGroupDocumentation()

void ModuleDefImpl::distributeMemberGroupDocumentation ( )

Definition at line 748 of file moduledef.cpp.

749{
750 for (const auto &mg : m_memberGroups)
751 {
752 mg->distributeMemberGroupDocumentation();
753 }
754}

References m_memberGroups.

Referenced by ModuleManager::distributeMemberGroupDocumentation().

◆ endMemberDeclarations()

void ModuleDefImpl::endMemberDeclarations ( OutputList & ol)

Definition at line 518 of file moduledef.cpp.

519{
521}
void endMemberSections()
Definition outputlist.h:463

References OutputList::endMemberSections().

Referenced by writeDocumentation().

◆ endMemberDocumentation()

void ModuleDefImpl::endMemberDocumentation ( OutputList & ol)

Definition at line 532 of file moduledef.cpp.

533{
534 if (Config_getBool(SEPARATE_MEMBER_PAGES))
535 {
538 }
539}
static bool suppressDocWarnings
Definition doxygen.h:130
void enable(OutputType o)

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

Referenced by writeDocumentation().

◆ findSectionsInDocumentation()

void ModuleDefImpl::findSectionsInDocumentation ( )

Definition at line 756 of file moduledef.cpp.

757{
761 for (const auto &mg : m_memberGroups)
762 {
763 mg->findSectionsInDocumentation(this);
764 }
765 for (auto &ml : m_memberLists)
766 {
767 if (ml->listType().isDeclaration())
768 {
769 ml->findSectionsInDocumentation(this);
770 }
771 }
772}
virtual DString briefDescription(bool abbreviate=false) const =0
virtual DString documentation() const =0
virtual DString inbodyDocumentation() const =0
virtual DString docFile() const =0
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 80 of file moduledef.cpp.

80{ return m_classes; }

References m_classes.

Referenced by countVisibleMembers(), and mergeSymbolsFrom().

◆ getConcepts()

const ConceptLinkedRefMap & ModuleDefImpl::getConcepts ( ) const
inlineoverridevirtual

Implements ModuleDef.

Definition at line 81 of file moduledef.cpp.

81{ return m_concepts; }

References m_concepts.

Referenced by countVisibleMembers(), and mergeSymbolsFrom().

◆ getExports()

const ImportInfoMap & ModuleDefImpl::getExports ( ) const
inlineoverridevirtual

Implements ModuleDef.

Definition at line 85 of file moduledef.cpp.

85{ return m_exportedModules; }

References m_exportedModules.

◆ getFileDef()

FileDef * ModuleDefImpl::getFileDef ( ) const
inlineoverridevirtual

Implements ModuleDef.

Definition at line 83 of file moduledef.cpp.

83{ return m_fileDef; }
FileDef * m_fileDef

References m_fileDef.

Referenced by writeTagFile().

◆ getImports()

const ImportInfoMap & ModuleDefImpl::getImports ( ) const
inlineoverridevirtual

Implements ModuleDef.

Definition at line 84 of file moduledef.cpp.

84{ return m_imports; }

References m_imports.

◆ getMemberGroups()

const MemberGroupList & ModuleDefImpl::getMemberGroups ( ) const
inlineoverridevirtual

Implements ModuleDef.

Definition at line 79 of file moduledef.cpp.

79{ return m_memberGroups; }

References m_memberGroups.

◆ getMemberList()

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

Implements ModuleDef.

Definition at line 238 of file moduledef.cpp.

239{
240 for (auto &ml : m_memberLists)
241 {
242 if (ml->listType()==lt)
243 {
244 return ml.get();
245 }
246 }
247 return nullptr;
248}

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 78 of file moduledef.cpp.

78{ 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 143 of file moduledef.cpp.

144{
145 return convertNameToFile("module_" + name());
146}
DString convertNameToFile(const DString &name, bool allowDots, bool allowUnderscore)
Definition util.cpp:3551

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

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

◆ getUsedFiles()

FileList ModuleDefImpl::getUsedFiles ( ) const
overridevirtual

Implements ModuleDef.

Definition at line 1051 of file moduledef.cpp.

1052{
1053 FileList result;
1054 for (const auto &mod : m_contributing)
1055 {
1056 FileDef *fd = mod->getFileDef();
1057 if (fd) result.push_back(fd);
1058 }
1059 return result;
1060}

References m_contributing.

Referenced by writeTagFile().

◆ hasDetailedDescription()

bool ModuleDefImpl::hasDetailedDescription ( ) const

Definition at line 667 of file moduledef.cpp.

668{
669 bool repeatBrief = Config_getBool(REPEAT_BRIEF);
670 return (!briefDescription().empty() && repeatBrief) || !documentation().empty();
671}
bool empty() const
Returns true iff the string is empty (std::string compatible alias for isEmpty()).
Definition dstring.h:153

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 65 of file moduledef.cpp.

65 {
67 else return hasDocumentation(); }
virtual bool isLinkable() const =0
virtual bool hasDocumentation() const =0
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 62 of file moduledef.cpp.

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

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 76 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 310 of file moduledef.cpp.

311{
312 AUTO_TRACE("{} merging symbols of {} ({}:{})",
313 name(),other->qualifiedName(),other->getDefFileName(),other->getDefLine());
314 for (const auto &cd : other->getClasses())
315 {
316 m_classes.add(cd->qualifiedName(),cd);
317 }
318 for (const auto &cd : other->getConcepts())
319 {
320 m_concepts.add(cd->qualifiedName(),cd);
321 }
322 auto mergeMemberList = [this,other](MemberListType lt)
323 {
324 const auto srcMl = other->getMemberList(lt);
325 if (srcMl)
326 {
327 auto &dstMl = m_memberLists.get(lt,srcMl->container());
328 for (const auto &md : *srcMl)
329 {
330 dstMl->push_back(md);
331 }
332 }
333 };
334 mergeMemberList(MemberListType::DecVarMembers());
335 mergeMemberList(MemberListType::DecFuncMembers());
336 mergeMemberList(MemberListType::DecTypedefMembers());
337 mergeMemberList(MemberListType::DecEnumMembers());
338}
int getDefLine() const override
DString getDefFileName() 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 73 of file moduledef.cpp.

73{ return m_type; }

References m_type.

◆ partitionName()

DString ModuleDefImpl::partitionName ( ) const
inlineoverridevirtual

Implements ModuleDef.

Definition at line 74 of file moduledef.cpp.

74{ return m_partitionName; }

References m_partitionName.

Referenced by addImport(), and ModuleDefImpl().

◆ partitions()

const ModuleMap & ModuleDefImpl::partitions ( ) const
inlineoverridevirtual

Implements ModuleDef.

Definition at line 86 of file moduledef.cpp.

86{ 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 148 of file moduledef.cpp.

149{
150 DString result=name();
151 if (!m_partitionName.empty())
152 {
153 result+=":"+m_partitionName;
154 }
155 return result;
156}

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

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

◆ setFileDef()

void ModuleDefImpl::setFileDef ( FileDef * fd)

Definition at line 180 of file moduledef.cpp.

181{
182 m_fileDef = fd;
183}

References m_fileDef.

Referenced by ModuleManager::resolvePartitions().

◆ setPrimaryInterface()

void ModuleDefImpl::setPrimaryInterface ( const ModuleDef * mod)

Definition at line 175 of file moduledef.cpp.

176{
177 m_primaryInterface = mod;
178}

References m_primaryInterface.

Referenced by ModuleManager::resolvePartitionsRecursively().

◆ sortMemberLists()

void ModuleDefImpl::sortMemberLists ( )

Definition at line 774 of file moduledef.cpp.

775{
776 for (auto &ml : m_memberLists)
777 {
778 if (ml->needsSorting()) { ml->sort(); ml->setNeedsSorting(false); }
779 }
780
781 if (Config_getBool(SORT_BRIEF_DOCS))
782 {
783 auto classComp = [](const ClassLinkedRefMap::Ptr &c1,const ClassLinkedRefMap::Ptr &c2)
784 {
785 return Config_getBool(SORT_BY_SCOPE_NAME) ?
786 dstricmp_sort(c1->name(), c2->name())<0 :
787 dstricmp_sort(c1->className(), c2->className())<0;
788 };
789 std::stable_sort(m_classes.begin(), m_classes.end(), classComp);
790
791 auto conceptComp = [](const ConceptLinkedRefMap::Ptr &c1,const ConceptLinkedRefMap::Ptr &c2)
792 {
793 return Config_getBool(SORT_BY_SCOPE_NAME) ?
794 dstricmp_sort(c1->qualifiedName(), c2->qualifiedName())<0 :
795 dstricmp_sort(c1->name(), c2->name())<0;
796 };
797 std::stable_sort(m_concepts.begin(), m_concepts.end(), conceptComp);
798 }
799
800 static auto contrComp = [](const ModuleDef *m1, const ModuleDef *m2)
801 {
802 FileDef *f1 = m1->getFileDef();
803 FileDef *f2 = m2->getFileDef();
804 DString fn1 = f1 ? f1->name() : m1->name();
805 DString fn2 = f2 ? f2->name() : m2->name();
806 static auto typeRank = [](const ModuleDef *m) -> int
807 {
808 if (m->moduleType()==ModuleDef::Type::Interface)
809 {
810 if (m->partitionName().empty()) return 0; // primary interface unit
811 return 1; // partition interface unit
812 }
813 else
814 {
815 if (!m->partitionName().empty()) return 2; // partition implementation unit
816 return 3; // implementation unit
817 }
818 };
819 auto tr1 = typeRank(m1);
820 auto tr2 = typeRank(m2);
821 int diff = dstricmp_sort(fn1,fn2);
822 return tr1<tr2 || (tr1==tr2 && diff<0);
823 };
824
825 std::stable_sort(m_contributing.begin(), m_contributing.end(), contrComp);
826}
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:72

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 513 of file moduledef.cpp.

514{
516}
void startMemberSections()
Definition outputlist.h:461

References OutputList::startMemberSections().

Referenced by writeDocumentation().

◆ startMemberDocumentation()

void ModuleDefImpl::startMemberDocumentation ( OutputList & ol)

Definition at line 523 of file moduledef.cpp.

524{
525 if (Config_getBool(SEPARATE_MEMBER_PAGES))
526 {
529 }
530}
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 655 of file moduledef.cpp.

656{
657 // write Author section (Man only)
660 ol.startGroupHeader();
661 ol.parseText(theTranslator->trAuthor(true,true));
662 ol.endGroupHeader();
665}
void parseText(const DString &textStr)
void pushGeneratorState()
void disableAllBut(OutputType o)
void popGeneratorState()
void endGroupHeader(int extraLevels=0)
Definition outputlist.h:455
void startGroupHeader(const DString &id=DString(), int extraLevels=0)
Definition outputlist.h:453
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 593 of file moduledef.cpp.

594{
596 {
597 auto parser { createDocParser() };
598 auto ast { validatingParseDoc(*parser.get(),
599 briefFile(),
600 briefLine(),
601 this,
602 nullptr,
604 DocOptions()
605 .setIndexWords(true)
606 .setSingleLine(true))
607 };
608 if (!ast->empty())
609 {
610 ol.startParagraph();
613 ol.writeString(" - ");
615 ol.writeDoc(ast.get(),this,nullptr);
618 ol.writeString(" \n");
620
622 {
624 ol.startTextLink(DString(),"details");
626 ol.endTextLink();
627 }
629 ol.endParagraph();
630 }
631 }
632 ol.writeSynopsis();
633}
virtual DString briefFile() const =0
virtual bool hasBriefDescription() const =0
returns true if this class has a brief description
virtual int briefLine() const =0
bool hasDetailedDescription() const
void writeDoc(const IDocNodeAST *ast, const Definition *ctx, const MemberDef *md, int sectionLevel=-1)
Definition outputlist.h:383
void startParagraph(const DString &classDef=DString())
Definition outputlist.h:407
void writeString(const DString &text)
Definition outputlist.h:411
void endParagraph()
Definition outputlist.h:409
void endTextLink()
Definition outputlist.h:444
void writeSynopsis()
Definition outputlist.h:592
void startTextLink(const DString &file, const DString &anchor)
Definition outputlist.h:442
virtual DString trMore()=0
IDocParserPtr createDocParser()
factory function to create a parser
Definition docparser.cpp:55
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(), DString::DString(), 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 503 of file moduledef.cpp.

504{
505 m_classes.writeDeclaration(ol,nullptr,title,false);
506}
void writeDeclaration(OutputList &ol, const ClassDef::CompoundType *filter, const DString &header, bool localNames) const
Definition classlist.cpp:53

References m_classes, and ClassLinkedRefMap::writeDeclaration().

Referenced by writeDocumentation().

◆ writeConcepts()

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

Definition at line 508 of file moduledef.cpp.

509{
510 m_concepts.writeDeclaration(ol,title,false);
511}
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 881 of file moduledef.cpp.

882{
883 if (isLinkable())
884 {
885 if (!found) // first module
886 {
887 ol.startMemberHeader("modules");
888 if (!header.empty())
889 {
890 ol.parseText(header);
891 }
892 else
893 {
894 theTranslator->trModule(true,false);
895 }
896 ol.endMemberHeader();
897 ol.startMemberList();
898 found=true;
899 }
901 DString cname = displayName(!localNames);
902 DString anc = anchor();
903 if (anc.empty()) anc=cname; else anc.prepend(cname+"_");
905 ol.writeString("module ");
907 if (isLinkable())
908 {
911 anchor(),
912 cname
913 );
914 }
915 else
916 {
917 ol.startBold();
918 ol.docify(cname);
919 ol.endBold();
920 }
922 // add the brief description if available
923 if (!briefDescription().empty() && Config_getBool(BRIEF_MEMBER_DESC))
924 {
925 auto parser { createDocParser() };
926 auto ast { validatingParseDoc(*parser.get(),
927 briefFile(),
928 briefLine(),
929 this,
930 nullptr,
932 DocOptions()
933 .setSingleLine(true))
934 };
935 if (!ast->empty())
936 {
938 ol.writeDoc(ast.get(),this,nullptr);
940 }
941 }
943 }
944}
DString & prepend(const char *s)
Definition dstring.h:504
virtual DString getReference() const =0
DString anchor() const override
Definition moduledef.cpp:61
void startMemberDeclaration()
Definition outputlist.h:569
void writeObjectLink(const DString &ref, const DString &file, const DString &anchor, const DString &name)
Definition outputlist.h:439
void endMemberDescription()
Definition outputlist.h:567
void endMemberDeclaration(const DString &anchor, const DString &inheritId)
Definition outputlist.h:571
void docify(const DString &s)
Definition outputlist.h:437
void startMemberHeader(const DString &anchor, int typ=2)
Definition outputlist.h:469
void insertMemberAlign(bool templ=false)
Definition outputlist.h:517
void startMemberList()
Definition outputlist.h:481
void startBold()
Definition outputlist.h:561
void endMemberItem(OutputGenerator::MemberItemType type)
Definition outputlist.h:495
void endBold()
Definition outputlist.h:563
void startMemberItem(const DString &anchor, OutputGenerator::MemberItemType type, const DString &id=DString())
Definition outputlist.h:493
void startMemberDescription(const DString &anchor, const DString &inheritId=DString(), bool typ=false)
Definition outputlist.h:565
void endMemberHeader()
Definition outputlist.h:471

References anchor(), DefinitionMixin< ModuleDef >::briefDescription(), DefinitionMixin< ModuleDef >::briefFile(), DefinitionMixin< ModuleDef >::briefLine(), Config_getBool, createDocParser(), displayName(), OutputList::docify(), DString::DString(), 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 541 of file moduledef.cpp.

542{
544 {
547 ol.writeRuler();
551 ol.writeAnchor(DString(),"details");
553 ol.startGroupHeader("details");
554 ol.parseText(title);
555 ol.endGroupHeader();
556
557 ol.startTextBlock();
558 if (!briefDescription().empty() && Config_getBool(REPEAT_BRIEF))
559 {
561 briefLine(),
562 this,
563 nullptr,
565 DocOptions());
566 }
567 if (!briefDescription().empty() && Config_getBool(REPEAT_BRIEF) &&
568 !documentation().empty())
569 {
573 ol.enableAll();
576 ol.writeString("\n\n");
578 }
579 if (!documentation().empty())
580 {
581 ol.generateDoc(docFile(),
582 docLine(),
583 this,
584 nullptr,
585 documentation()+"\n",
586 DocOptions()
587 .setIndexWords(true));
588 }
589 ol.endTextBlock();
590 }
591}
virtual int docLine() const =0
void writeRuler()
Definition outputlist.h:521
void endTextBlock(bool paraBreak=false)
Definition outputlist.h:672
void writeAnchor(const DString &fileName, const DString &name)
Definition outputlist.h:523
void startTextBlock(bool dense=false)
Definition outputlist.h:670
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(), DString::DString(), 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 340 of file moduledef.cpp.

341{
342 if (isReference()) return;
343 bool generateTreeView = Config_getBool(GENERATE_TREEVIEW);
345 AUTO_TRACE("%s file=%s",name(),getDefFileName());
346 SrcLangExt lang = getLanguage();
347 DString pageTitle;
348 if (Config_getBool(HIDE_COMPOUND_REFERENCE))
349 {
350 pageTitle = displayName();
351 }
352 else
353 {
355 }
357
358 // ---- title part
360 bool writeOutlinePanel = generateTreeView && Config_getBool(PAGE_OUTLINE_PANEL);
361 if (!writeOutlinePanel) writeSummaryLinks(ol);
363
366 ol.parseText(pageTitle);
368
369 addGroupListToTitle(ol,this);
370
373 ol.endTitleHead(getOutputFileBase(),pageTitle);
375
379 ol.writeString(" - ");
380 ol.parseText(pageTitle);
382
383 ol.endHeaderSection();
384 ol.startContents();
385
386 //---------------------------------------- start flexible part -------------------------------
387 for (const auto &lde : LayoutDocManager::instance().docEntries(LayoutDocManager::Module))
388 {
389 const LayoutDocEntrySection *ls = dynamic_cast<const LayoutDocEntrySection*>(lde.get());
390 switch (lde->kind())
391 {
392 case LayoutDocEntry::BriefDesc:
394 break;
395 case LayoutDocEntry::MemberDeclStart:
397 break;
398 case LayoutDocEntry::ModuleClasses:
399 if (ls) writeClassDeclarations(ol,ls->title(lang));
400 break;
401 case LayoutDocEntry::ModuleConcepts:
402 if (ls) writeConcepts(ol,ls->title(lang));
403 break;
404 case LayoutDocEntry::ModuleExports:
405 if (ls) writeExports(ol,ls->title(lang));
406 break;
407 case LayoutDocEntry::ModuleUsedFiles:
408 if (ls) writeFiles(ol,ls->title(lang));
409 break;
410 case LayoutDocEntry::MemberGroups:
412 break;
413 case LayoutDocEntry::MemberDecl:
414 {
415 const LayoutDocEntryMemberDecl *lmd = dynamic_cast<const LayoutDocEntryMemberDecl*>(lde.get());
416 if (lmd) writeMemberDeclarations(ol,lmd->type,lmd->title(lang));
417 }
418 break;
419 case LayoutDocEntry::MemberDeclEnd:
421 break;
422 case LayoutDocEntry::DetailedDesc:
423 if (ls) writeDetailedDescription(ol,ls->title(lang));
424 break;
425 case LayoutDocEntry::MemberDefStart:
427 break;
428 case LayoutDocEntry::MemberDef:
429 {
430 const LayoutDocEntryMemberDef *lmd = dynamic_cast<const LayoutDocEntryMemberDef*>(lde.get());
431 if (lmd) writeMemberDocumentation(ol,lmd->type,lmd->title(lang));
432 }
433 break;
434 case LayoutDocEntry::MemberDefEnd:
436 break;
437 case LayoutDocEntry::AuthorSection:
439 break;
440 case LayoutDocEntry::ClassIncludes:
441 case LayoutDocEntry::ClassInheritanceGraph:
442 case LayoutDocEntry::ClassNestedClasses:
443 case LayoutDocEntry::ClassCollaborationGraph:
444 case LayoutDocEntry::ClassAllMembersLink:
445 case LayoutDocEntry::ClassUsedFiles:
446 case LayoutDocEntry::ClassInlineClasses:
447 case LayoutDocEntry::FileClasses:
448 case LayoutDocEntry::FileConcepts:
449 case LayoutDocEntry::FileInterfaces:
450 case LayoutDocEntry::FileStructs:
451 case LayoutDocEntry::FileExceptions:
452 case LayoutDocEntry::FileNamespaces:
453 case LayoutDocEntry::FileConstantGroups:
454 case LayoutDocEntry::FileIncludes:
455 case LayoutDocEntry::FileIncludeGraph:
456 case LayoutDocEntry::FileIncludedByGraph:
457 case LayoutDocEntry::FileInlineClasses:
458 case LayoutDocEntry::FileSourceLink:
459 case LayoutDocEntry::NamespaceNestedNamespaces:
460 case LayoutDocEntry::NamespaceNestedConstantGroups:
461 case LayoutDocEntry::NamespaceClasses:
462 case LayoutDocEntry::NamespaceConcepts:
463 case LayoutDocEntry::NamespaceInterfaces:
464 case LayoutDocEntry::NamespaceStructs:
465 case LayoutDocEntry::NamespaceExceptions:
466 case LayoutDocEntry::NamespaceInlineClasses:
467 case LayoutDocEntry::ConceptDefinition:
468 case LayoutDocEntry::GroupClasses:
469 case LayoutDocEntry::GroupConcepts:
470 case LayoutDocEntry::GroupModules:
471 case LayoutDocEntry::GroupInlineClasses:
472 case LayoutDocEntry::GroupNamespaces:
473 case LayoutDocEntry::GroupDirs:
474 case LayoutDocEntry::GroupNestedGroups:
475 case LayoutDocEntry::GroupFiles:
476 case LayoutDocEntry::GroupGraph:
477 case LayoutDocEntry::GroupPageDocs:
478 case LayoutDocEntry::DirSubDirs:
479 case LayoutDocEntry::DirFiles:
480 case LayoutDocEntry::DirGraph:
481 err("Internal inconsistency: member '{}' should not be part of "
482 "LayoutDocManager::Module entry list\n",lde->entryToString());
483 break;
484 }
485 }
486
487 //---------------------------------------- end flexible part -------------------------------
488 if (generateTreeView)
489 {
492 ol.endContents();
493 ol.writeString("</div><!-- doc-content -->\n");
495 ol.writeString("</div><!-- container -->\n");
497 }
498 endFile(ol,generateTreeView,true);
499
501}
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:403
void endTitleHead(const DString &fileName, const DString &name)
Definition outputlist.h:405
void endContents()
Definition outputlist.h:620
void endHeaderSection()
Definition outputlist.h:467
void startHeaderSection()
Definition outputlist.h:465
void startContents()
Definition outputlist.h:618
virtual DString trModuleReference(const DString &namespaceName)=0
void endFile(OutputList &ol, bool skipNavIndex, bool skipEndContents, const DString &navPath)
Definition index.cpp:429
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:403
#define err(fmt,...)
Definition message.h:127
DString title(SrcLangExt lang) const
Definition layout.cpp:1786
MemberListType type
Definition layout.h:137
DString title(SrcLangExt lang) const
Definition layout.cpp:1798
DString title(SrcLangExt lang) const
Definition layout.cpp:1779
SrcLangExt
Definition types.h:207
void addGroupListToTitle(OutputList &ol, const Definition *d)
Definition util.cpp:4959

References addGroupListToTitle(), AUTO_TRACE, Config_getBool, OutputList::disable(), OutputList::disableAllBut(), displayName(), DString::DString(), 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 947 of file moduledef.cpp.

948{
949 AUTO_TRACE("name={} count={}",name(),m_exportedModules.size());
950 if (!m_exportedModules.empty())
951 {
952 ol.startMemberHeader("exports");
953 ol.parseText(title);
954 ol.endMemberHeader();
955 ol.startMemberList();
956 for (const auto &[moduleName,importInfoList] : m_exportedModules)
957 {
958 for (const auto &importInfo : importInfoList)
959 {
960 ModuleDef *mod = ModuleManager::instance().getPrimaryInterface(importInfo.importName);
963 ol.docify(theTranslator->trModule(false,true)+" ");
965 if (mod && mod->isLinkable())
966 {
967 ol.writeObjectLink(mod->getReference(),mod->getOutputFileBase(),DString(),mod->displayName());
968 }
969 else
970 {
971 ol.startBold();
972 ol.docify(importInfo.importName);
973 ol.endBold();
974 }
976 if (mod && !mod->briefDescription().empty() && Config_getBool(BRIEF_MEMBER_DESC))
977 {
980 briefLine(),
981 mod,
982 nullptr,
983 mod->briefDescription(),
984 DocOptions()
985 .setSingleLine(true));
987 }
989 }
990 }
991 ol.endMemberList();
992 }
993}
virtual DString displayName(bool includeScope=true) const =0
virtual DString getOutputFileBase() const =0
static ModuleManager & instance()
ModuleDef * getPrimaryInterface(const DString &moduleName) const
void endMemberList()
Definition outputlist.h:483

References AUTO_TRACE, Definition::briefDescription(), DefinitionMixin< ModuleDef >::briefFile(), DefinitionMixin< ModuleDef >::briefLine(), Config_getBool, Definition::displayName(), OutputList::docify(), DString::DString(), 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 995 of file moduledef.cpp.

996{
997 AUTO_TRACE("{} count={}",name(),m_contributing.size());
998 if (!m_contributing.empty())
999 {
1000 ol.startMemberHeader("files");
1001 ol.parseText(title);
1002 ol.endMemberHeader();
1003 ol.startMemberList();
1004 for (const auto &mod : m_contributing)
1005 {
1006 FileDef *fd = mod->getFileDef();
1007 if (fd)
1008 {
1010 DString fname = fd->displayName();
1011 DString anc = fd->anchor();
1012 if (anc.empty()) anc=fname; else anc.prepend(fname+"_");
1014 ol.docify(theTranslator->trFile(false,true)+" ");
1015 ol.insertMemberAlign();
1016 DString path=fd->getPath();
1017 if (Config_getBool(FULL_PATH_NAMES))
1018 {
1019 ol.docify(stripFromPath(path));
1020 }
1021 if (fd->isLinkable())
1022 {
1023 ol.writeObjectLink(fd->getReference(),fd->getOutputFileBase(),DString(),fname);
1024 }
1025 else
1026 {
1027 ol.startBold();
1028 ol.docify(fd->displayName());
1029 ol.endBold();
1030 }
1032 if (!fd->briefDescription().empty() && Config_getBool(BRIEF_MEMBER_DESC))
1033 {
1036 briefLine(),
1037 fd,
1038 nullptr,
1039 fd->briefDescription(),
1040 DocOptions()
1041 .setSingleLine(true));
1043 }
1045 }
1046 }
1047 ol.endMemberList();
1048 }
1049}
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:326

References Definition::anchor(), AUTO_TRACE, Definition::briefDescription(), DefinitionMixin< ModuleDef >::briefFile(), DefinitionMixin< ModuleDef >::briefLine(), Config_getBool, Definition::displayName(), OutputList::docify(), DString::DString(), 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 643 of file moduledef.cpp.

644{
645 MemberList * ml = getMemberList(lt);
646 if (ml) ml->writeDeclarations(ol,nullptr,nullptr,nullptr,nullptr,this,title,DString());
647}
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 DString::DString(), getMemberList(), and MemberList::writeDeclarations().

Referenced by writeDocumentation().

◆ writeMemberDocumentation()

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

Definition at line 649 of file moduledef.cpp.

650{
651 MemberList * ml = getMemberList(lt);
652 if (ml) ml->writeDocumentation(ol,name(),this,title,ml->listType().toLabel());
653}
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:130
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 635 of file moduledef.cpp.

636{
637 for (const auto &mg : m_memberGroups)
638 {
639 mg->writeDeclarations(ol,nullptr,nullptr,nullptr,nullptr,this);
640 }
641}

References m_memberGroups.

Referenced by writeDocumentation().

◆ writePageNavigation()

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

Reimplemented from DefinitionMixin< ModuleDef >.

Definition at line 876 of file moduledef.cpp.

877{
878 ol.writePageOutline();
879}
void writePageOutline()
Definition outputlist.h:616

References OutputList::writePageOutline().

Referenced by writeDocumentation().

◆ writeSummaryLinks()

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

Reimplemented from DefinitionMixin< ModuleDef >.

Definition at line 828 of file moduledef.cpp.

829{
832 bool first=true;
833 SrcLangExt lang=getLanguage();
834 for (const auto &lde : LayoutDocManager::instance().docEntries(LayoutDocManager::Module))
835 {
836 const LayoutDocEntrySection *ls = dynamic_cast<const LayoutDocEntrySection*>(lde.get());
837 if (lde->kind()==LayoutDocEntry::ModuleClasses && m_classes.declVisible() && ls)
838 {
839 DString label = "classes";
840 ol.writeSummaryLink(DString(),label,ls->title(lang),first);
841 first=false;
842 }
843 else if (lde->kind()==LayoutDocEntry::ModuleConcepts && m_concepts.declVisible() && ls)
844 {
845 DString label = "concepts";
846 ol.writeSummaryLink(DString(),label,ls->title(lang),first);
847 first=false;
848 }
849 else if (lde->kind()==LayoutDocEntry::ModuleUsedFiles && ls)
850 {
851 DString label = "files";
852 ol.writeSummaryLink(DString(),label,ls->title(lang),first);
853 first=false;
854 }
855 else if (lde->kind()==LayoutDocEntry::MemberDecl)
856 {
857 const LayoutDocEntryMemberDecl *lmd = dynamic_cast<const LayoutDocEntryMemberDecl*>(lde.get());
858 if (lmd)
859 {
860 MemberList * ml = getMemberList(lmd->type);
861 if (ml && ml->declVisible())
862 {
863 ol.writeSummaryLink(DString(),ml->listType().toLabel(),lmd->title(lang),first);
864 first=false;
865 }
866 }
867 }
868 }
869 if (!first)
870 {
871 ol.writeString(" </div>\n");
872 }
874}
bool declVisible(const ClassDef::CompoundType *filter=nullptr) const
Definition classlist.cpp:29
bool declVisible() const
bool declVisible() const
void writeSummaryLink(const DString &file, const DString &anchor, const DString &title, bool first)
Definition outputlist.h:614

References ClassLinkedRefMap::declVisible(), ConceptLinkedRefMap::declVisible(), MemberList::declVisible(), OutputList::disableAllBut(), DString::DString(), 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 1109 of file moduledef.cpp.

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

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 137 of file moduledef.cpp.

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

◆ m_exportedModules

ImportInfoMap ModuleDefImpl::m_exportedModules
private

Definition at line 132 of file moduledef.cpp.

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

◆ m_fileDef

FileDef* ModuleDefImpl::m_fileDef = nullptr
private

Definition at line 140 of file moduledef.cpp.

Referenced by getFileDef(), and setFileDef().

◆ m_imports

ImportInfoMap ModuleDefImpl::m_imports
private

Definition at line 131 of file moduledef.cpp.

Referenced by addImport(), and getImports().

◆ m_memberGroups

◆ m_memberLists

◆ m_partitionName

DString ModuleDefImpl::m_partitionName
private

Definition at line 130 of file moduledef.cpp.

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

◆ m_partitions

ModuleMap ModuleDefImpl::m_partitions
private

Definition at line 136 of file moduledef.cpp.

Referenced by addPartition(), and partitions().

◆ m_primaryInterface

const ModuleDef* ModuleDefImpl::m_primaryInterface = nullptr
private

Definition at line 139 of file moduledef.cpp.

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

◆ m_type

Type ModuleDefImpl::m_type
private

Definition at line 129 of file moduledef.cpp.

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


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