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

Public Member Functions

 NamespaceDefImpl (const DString &defFileName, int defLine, size_t defColumn, const DString &name, const DString &ref=DString(), const DString &refFile=DString(), const DString &type=DString(), bool isPublished=false)
 ~NamespaceDefImpl () override
DefType definitionType () const override
CodeSymbolType codeSymbolType () const override
DString getOutputFileBase () const override
DString anchor () const override
void insertUsedFile (FileDef *fd) override
void writeDocumentation (OutputList &ol) override
void writeMemberPages (OutputList &ol) override
void writeQuickMemberLinks (OutputList &ol, const MemberDef *currentMd) const override
void writeTagFile (TextStream &) override
void insertClass (ClassDef *cd) override
void insertConcept (ConceptDef *cd) override
void insertNamespace (NamespaceDef *nd) override
void insertMember (MemberDef *md) override
void computeAnchors () override
void countMembers () override
int numDocMembers () const override
void addUsingDirective (NamespaceDef *nd) override
const LinkedRefMap< NamespaceDef > & getUsedNamespaces () const override
void addUsingDeclaration (const Definition *cd) override
const LinkedRefMap< const Definition > & getUsedDefinitions () const override
void combineUsingRelations (NamespaceDefSet &visitedNamespace) override
DString displayName (bool=true) const override
void setInline (bool isInline) override
bool isConstantGroup () const override
bool isModule () const override
bool isLibrary () const override
bool isInline () const override
bool isLinkableInProject () const override
bool isLinkable () const override
bool isVisibleInHierarchy () const override
bool hasDetailedDescription () const override
void addMembersToMemberGroup () override
void distributeMemberGroupDocumentation () override
void findSectionsInDocumentation () override
void sortMemberLists () override
const Definition * findInnerCompound (const DString &name) const override
void addInnerCompound (Definition *d) override
void addListReferences () override
void addRequirementReferences () override
void setFileName (const DString &fn) override
bool subGrouping () const override
MemberList * getMemberList (MemberListType lt) const override
const MemberLists & getMemberLists () const override
const MemberDef * getMemberByName (const DString &) const override
const MemberGroupList & getMemberGroups () const override
ClassLinkedRefMap getClasses () const override
ClassLinkedRefMap getInterfaces () const override
ClassLinkedRefMap getStructs () const override
ClassLinkedRefMap getExceptions () const override
NamespaceLinkedRefMap getNamespaces () const override
ConceptLinkedRefMap getConcepts () const override
void setName (const DString &name) override
DString title () const override
DString compoundTypeString () const override
void setIncludeFile (FileDef *fd, const DString &incName, bool local, bool force) override
void setMetaData (const DString &m) override
int countVisibleMembers () const override
void writeSummaryLinks (OutputList &ol) const override
void writePageNavigation (OutputList &ol) const override
Public Member Functions inherited from DefinitionMixin< NamespaceDefMutable >
 DefinitionMixin (const DString &defFileName, int defLine, size_t defColumn, const DString &name, const char *b=nullptr, const char *d=nullptr, bool isSymbol=true)
DefinitionMixin & operator= (const DefinitionMixin &other)
 ~DefinitionMixin () override=default
bool isAlias () const override
const DString & name () const override
bool isAnonymous () const override
const DString & localName () const override
DString qualifiedName () 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 FileDef * getBodyDef () const override
SrcLangExt getLanguage () const override
const GroupList & partOfGroups () const override
bool isLinkableViaGroup () const override
const RefItemVector & xrefListItems () const override
const RequirementRefs & requirementReferences () const override
Definition * getOuterScope () const override
const MemberVector & getReferencesMembers () const override
const MemberVector & getReferencedByMembers () const override
bool hasSections () const override
bool hasSources () const override
bool hasBriefDescription () const override
DString id () const override
const SectionRefs & getSectionRefs () const 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 setOuterScope (Definition *def) override
void setHidden (bool b) override
void setArtificial (bool b) override
void setExported (bool b) override
void setLanguage (SrcLangExt lang) override
void writeSourceDef (OutputList &ol) const override
void writeInlineCode (OutputList &ol, const DString &scopeName) const override
bool hasSourceRefs () const override
bool hasSourceReffedBy () const override
void writeSourceRefs (OutputList &ol, const DString &scopeName) const override
void writeSourceReffedBy (OutputList &ol, const DString &scopeName) const override
bool hasRequirementRefs () const override
void writeRequirementRefs (OutputList &ol) const override
void makePartOfGroup (GroupDef *gd) override
void writeNavigationPath (OutputList &ol) const override
DString navigationPathAsString () const override
DString pathFragment () const override
void writeDocAnchorsToTagFile (TextStream &fs) const override
void setLocalName (const DString &name) override
void writeToc (OutputList &ol, const LocalToc &lt) const override
void computeTooltip () override
void _setSymbolName (const DString &name) override
DString _symbolName () const override

Private Types

enum  { NAMESPACE , MODULE , CONSTANT_GROUP , LIBRARY }

Private Member Functions

void addMemberToList (MemberListType lt, MemberDef *md)
void writeMemberDeclarations (OutputList &ol, MemberListType lt, const DString &title)
void writeMemberDocumentation (OutputList &ol, MemberListType lt, const DString &title)
void writeDetailedDescription (OutputList &ol, const DString &title)
void writeBriefDescription (OutputList &ol)
void startMemberDeclarations (OutputList &ol)
void endMemberDeclarations (OutputList &ol)
void writeClassDeclarations (OutputList &ol, const DString &title, const ClassLinkedRefMap &d)
void writeConcepts (OutputList &ol, const DString &title)
void writeInlineClasses (OutputList &ol)
void writeMemberGroups (OutputList &ol)
void writeAuthorSection (OutputList &ol)
void startMemberDocumentation (OutputList &ol)
void endMemberDocumentation (OutputList &ol)
void addNamespaceAttributes (OutputList &ol)
void writeClassesToTagFile (TextStream &, const ClassLinkedRefMap &d)
void writeConceptsToTagFile (TextStream &)
void setFileNameLocal (const DString &fn)
void writeIncludeFiles (OutputList &ol) const
void writeNamespaceDeclarations (OutputList &ol, const DString &title, bool isConstantGroup=false)
void updateLocalName ()

Private Attributes

DString fileName
FileList files
LinkedRefMap< NamespaceDef > m_usingDirList
LinkedRefMap< const Definition > m_usingDeclList
LinkedRefMap< const Definition > m_innerCompounds
std::map< std::string, IncludeInfo > m_incInfo
MemberLinkedRefMap m_allMembers
MemberLists m_memberLists
MemberGroupList m_memberGroups
ClassLinkedRefMap m_classes
ClassLinkedRefMap m_interfaces
ClassLinkedRefMap m_structs
ClassLinkedRefMap m_exceptions
ConceptLinkedRefMap m_concepts
NamespaceLinkedRefMap m_namespaces
bool m_subGrouping = false
enum { ... }  m_type
bool m_isPublished = false
DString metaData
bool m_inline = false

Additional Inherited Members

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

Detailed Description

Definition at line 58 of file namespacedef.cpp.

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
private
Enumerator
NAMESPACE 
MODULE 
CONSTANT_GROUP 
LIBRARY 

Definition at line 174 of file namespacedef.cpp.

enum NamespaceDefImpl::@152056333015234071026257214045103374127312105332 m_type

Constructor & Destructor Documentation

◆ NamespaceDefImpl()

NamespaceDefImpl::NamespaceDefImpl ( const DString & defFileName,
int defLine,
size_t defColumn,
const DString & name,
const DString & ref = DString(),
const DString & refFile = DString(),
const DString & type = DString(),
bool isPublished = false )

Definition at line 279 of file namespacedef.cpp.

282 :
283 DefinitionMixin(df,dl,dc,name)
284 ,m_isPublished(isPublished)
285{
286 if (!fName.empty())
287 {
288 if (!lref.empty())
289 {
290 fileName = stripExtension(fName);
291 }
292 else
293 {
295 }
296 }
297 else
298 {
300 }
301 setReference(lref);
302 m_inline=false;
303 m_subGrouping=Config_getBool(SUBGROUPING);
304 if (type=="module")
305 {
306 m_type = MODULE;
307 }
308 else if (type=="constants")
309 {
311 }
312 else if (type=="library")
313 {
314 m_type = LIBRARY;
315 }
316 else
317 {
319 }
320
322}
virtual const DString & name() const =0
void setReference(const DString &r) override
DefinitionMixin(const DString &defFileName, int defLine, size_t defColumn, const DString &name, const char *b=nullptr, const char *d=nullptr, bool isSymbol=true)
void setFileNameLocal(const DString &fn)
#define Config_getBool(name)
Definition config.h:33
DString stripExtension(const DString &fName)
Definition util.cpp:3964
DString convertNameToFile(const DString &name, bool allowDots, bool allowUnderscore)
Definition util.cpp:2872

References DefinitionMixin< NamespaceDefMutable >::DefinitionMixin(), DString::empty(), m_isPublished, and DefinitionMixin< NamespaceDefMutable >::name().

◆ ~NamespaceDefImpl()

NamespaceDefImpl::~NamespaceDefImpl ( )
override

Definition at line 337 of file namespacedef.cpp.

338{
339}

Member Function Documentation

◆ addInnerCompound()

void NamespaceDefImpl::addInnerCompound ( Definition * d)
overridevirtual

Reimplemented from DefinitionMixin< NamespaceDefMutable >.

Definition at line 394 of file namespacedef.cpp.

395{
396 //printf("%s:NamespaceDefImpl::addInnerCompound(%s)\n",qPrint(name()),qPrint(d->name()));
399 {
401 }
403 {
405 }
407 {
409 }
410}
virtual DefType definitionType() const =0
virtual const DString & localName() const =0
bool add(const char *k, T *obj)
Definition linkedmap.h:284
void insertNamespace(NamespaceDef *nd) override
void insertClass(ClassDef *cd) override
void insertConcept(ConceptDef *cd) override
LinkedRefMap< const Definition > m_innerCompounds
ClassDef * toClassDef(Definition *d)
ConceptDef * toConceptDef(Definition *d)
NamespaceDef * toNamespaceDef(Definition *d)

References LinkedRefMap< T, Hash, KeyEqual, Map >::add(), Definition::definitionType(), insertClass(), insertConcept(), insertNamespace(), Definition::localName(), m_innerCompounds, toClassDef(), toConceptDef(), toNamespaceDef(), Definition::TypeClass, Definition::TypeConcept, and Definition::TypeNamespace.

◆ addListReferences()

void NamespaceDefImpl::addListReferences ( )
overridevirtual

Implements NamespaceDefMutable.

Definition at line 1329 of file namespacedef.cpp.

1330{
1332 qualifiedName(),
1333 getLanguage()==SrcLangExt::Fortran ?
1334 theTranslator->trModule(true,true) :
1335 theTranslator->trNamespace(true,true),
1337 DString(),
1338 this
1339 );
1340 for (const auto &mg : m_memberGroups)
1341 {
1342 mg->addListReferences(this);
1343 }
1344 for (auto &ml : m_memberLists)
1345 {
1346 if (ml->listType().isDocumentation())
1347 {
1348 ml->addListReferences(this);
1349 }
1350 }
1351}
DString qualifiedName() const override
const RefItemVector & xrefListItems() const override
SrcLangExt getLanguage() const override
MemberGroupList m_memberGroups
DString getOutputFileBase() const override
DString displayName(bool=true) const override
MemberLists m_memberLists
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:136

References addRefItem(), displayName(), DefinitionMixin< NamespaceDefMutable >::getLanguage(), getOutputFileBase(), m_memberGroups, m_memberLists, DefinitionMixin< NamespaceDefMutable >::qualifiedName(), theTranslator, Translator::trModule(), Translator::trNamespace(), and DefinitionMixin< NamespaceDefMutable >::xrefListItems().

◆ addMembersToMemberGroup()

void NamespaceDefImpl::addMembersToMemberGroup ( )
overridevirtual

Implements NamespaceDefMutable.

Definition at line 497 of file namespacedef.cpp.

498{
499 for (auto &ml : m_memberLists)
500 {
501 if (ml->listType().isDeclaration())
502 {
504 }
505 }
506
507 // add members inside sections to their groups
508 for (const auto &mg : m_memberGroups)
509 {
510 if (mg->allMembersInSameSection() && m_subGrouping)
511 {
512 //printf("----> addToDeclarationSection(%s)\n",qPrint(mg->header()));
513 mg->addToDeclarationSection();
514 }
515 }
516}
void addMembersToMemberGroup() override

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

Referenced by addMembersToMemberGroup().

◆ addMemberToList()

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

Definition at line 1521 of file namespacedef.cpp.

1522{
1523 bool sortBriefDocs = Config_getBool(SORT_BRIEF_DOCS);
1524 bool sortMemberDocs = Config_getBool(SORT_MEMBER_DOCS);
1526 ml->setNeedsSorting(
1527 (ml->listType().isDeclaration() && sortBriefDocs) ||
1528 (ml->listType().isDocumentation() && sortMemberDocs));
1529 ml->push_back(md);
1530
1531 if (ml->listType().isDeclaration())
1532 {
1533 MemberDefMutable *mdm = toMemberDefMutable(md);
1534 if (mdm)
1535 {
1536 mdm->setSectionList(this,ml.get());
1537 }
1538 }
1539}
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, Namespace, MemberDefMutable::setSectionList(), and toMemberDefMutable().

Referenced by insertMember().

◆ addNamespaceAttributes()

void NamespaceDefImpl::addNamespaceAttributes ( OutputList & ol)
private

Definition at line 1004 of file namespacedef.cpp.

1005{
1006 // UNO IDL constant groups may be published
1007 if (getLanguage()==SrcLangExt::IDL && isConstantGroup() && m_isPublished)
1008 {
1009 ol.pushGeneratorState();
1011 ol.startLabels();
1012 ol.writeLabel("published",false);
1013 ol.endLabels();
1014 ol.popGeneratorState();
1015 }
1016 else if (isExported())
1017 {
1018 ol.pushGeneratorState();
1020 ol.startLabels();
1021 ol.writeLabel("export",false);
1022 ol.endLabels();
1023 ol.popGeneratorState();
1024 }
1025}
bool isConstantGroup() const override
void pushGeneratorState()
void disableAllBut(OutputType o)
void popGeneratorState()
void writeLabel(const DString &l, bool isLast)
Definition outputlist.h:736
void endLabels()
Definition outputlist.h:738
void startLabels()
Definition outputlist.h:734

References OutputList::disableAllBut(), OutputList::endLabels(), DefinitionMixin< NamespaceDefMutable >::getLanguage(), Html, isConstantGroup(), DefinitionMixin< NamespaceDefMutable >::isExported(), m_isPublished, OutputList::popGeneratorState(), OutputList::pushGeneratorState(), OutputList::startLabels(), and OutputList::writeLabel().

Referenced by writeDocumentation().

◆ addRequirementReferences()

void NamespaceDefImpl::addRequirementReferences ( )
overridevirtual

Implements NamespaceDefMutable.

Definition at line 1353 of file namespacedef.cpp.

1354{
1356 for (const auto &mg : m_memberGroups)
1357 {
1358 mg->addRequirementReferences(this);
1359 }
1360 for (auto &ml : m_memberLists)
1361 {
1362 if (ml->listType().isDocumentation())
1363 {
1364 ml->addRequirementReferences(this);
1365 }
1366 }
1367}
static RequirementManager & instance()
void addRequirementRefsForSymbol(const Definition *symbol)

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

◆ addUsingDeclaration()

void NamespaceDefImpl::addUsingDeclaration ( const Definition * cd)
overridevirtual

Implements NamespaceDefMutable.

Definition at line 1301 of file namespacedef.cpp.

1302{
1303 m_usingDeclList.add(d->qualifiedName(),d);
1304}
LinkedRefMap< const Definition > m_usingDeclList

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

Referenced by combineUsingRelations().

◆ addUsingDirective()

void NamespaceDefImpl::addUsingDirective ( NamespaceDef * nd)
overridevirtual

Implements NamespaceDefMutable.

Definition at line 1295 of file namespacedef.cpp.

1296{
1298 //printf("%s: NamespaceDefImpl::addUsingDirective: %s:%zu\n",qPrint(name()),qPrint(nd->qualifiedName()),m_usingDirList.size());
1299}
virtual DString qualifiedName() const =0
LinkedRefMap< NamespaceDef > m_usingDirList

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

Referenced by combineUsingRelations().

◆ anchor()

DString NamespaceDefImpl::anchor ( ) const
inlineoverridevirtual

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

Implements Definition.

Definition at line 72 of file namespacedef.cpp.

72{ return DString(); }

◆ codeSymbolType()

CodeSymbolType NamespaceDefImpl::codeSymbolType ( ) const
inlineoverridevirtual

Used for syntax highlighting symbol class

Implements Definition.

Definition at line 69 of file namespacedef.cpp.

70 { return getLanguage()==SrcLangExt::Java ? CodeSymbolType::Package : CodeSymbolType::Namespace; }

References DefinitionMixin< NamespaceDefMutable >::getLanguage(), Namespace, and Package.

◆ combineUsingRelations()

void NamespaceDefImpl::combineUsingRelations ( NamespaceDefSet & visitedNamespace)
overridevirtual

Implements NamespaceDefMutable.

Definition at line 1374 of file namespacedef.cpp.

1375{
1376 if (visitedNamespaces.find(this)!=visitedNamespaces.end()) return; // already processed
1377 visitedNamespaces.insert(this);
1378
1379 LinkedRefMap<NamespaceDef> usingDirList = m_usingDirList;
1380 for (auto &nd : usingDirList)
1381 {
1382 NamespaceDefMutable *ndm = toNamespaceDefMutable(nd);
1383 if (ndm)
1384 {
1385 ndm->combineUsingRelations(visitedNamespaces);
1386 }
1387 }
1388
1389 for (auto &nd : usingDirList)
1390 {
1391 // add used namespaces of namespace nd to this namespace
1392 for (const auto &und : nd->getUsedNamespaces())
1393 {
1394 addUsingDirective(und);
1395 }
1396 // add used classes of namespace nd to this namespace
1397 for (const auto &ud : nd->getUsedDefinitions())
1398 {
1400 }
1401 }
1402}
void addUsingDirective(NamespaceDef *nd) override
void addUsingDeclaration(const Definition *cd) override
virtual void combineUsingRelations(NamespaceDefSet &visitedNamespace)=0
NamespaceDefMutable * toNamespaceDefMutable(Definition *d)

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

◆ compoundTypeString()

DString NamespaceDefImpl::compoundTypeString ( ) const
overridevirtual

Implements NamespaceDef.

Definition at line 1713 of file namespacedef.cpp.

1714{
1715 SrcLangExt lang = getLanguage();
1716 if (lang==SrcLangExt::Java)
1717 {
1718 return "package";
1719 }
1720 else if(lang==SrcLangExt::CSharp)
1721 {
1722 return "namespace";
1723 }
1724 else if (lang==SrcLangExt::Fortran)
1725 {
1726 return "module";
1727 }
1728 else if (lang==SrcLangExt::IDL)
1729 {
1730 if (isModule())
1731 {
1732 return "module";
1733 }
1734 else if (isConstantGroup())
1735 {
1736 return "constants";
1737 }
1738 else if (isLibrary())
1739 {
1740 return "library";
1741 }
1742 else
1743 {
1744 err_full(getDefFileName(),getDefLine(),"Internal inconsistency: namespace in IDL not module, library or constant group");
1745 }
1746 }
1747 return "namespace";
1748}
DString getDefFileName() const override
bool isLibrary() const override
bool isModule() const override
#define err_full(file, line, fmt,...)
Definition message.h:132
SrcLangExt
Definition types.h:207

References err_full, DefinitionMixin< NamespaceDefMutable >::getDefFileName(), DefinitionMixin< NamespaceDefMutable >::getDefLine(), DefinitionMixin< NamespaceDefMutable >::getLanguage(), isConstantGroup(), isLibrary(), and isModule().

◆ computeAnchors()

void NamespaceDefImpl::computeAnchors ( )
overridevirtual

Implements NamespaceDefMutable.

Definition at line 647 of file namespacedef.cpp.

648{
649 MemberList *allMemberList = getMemberList(MemberListType::AllMembersList());
650 if (allMemberList) allMemberList->setAnchors();
651}
void setAnchors()
MemberList * getMemberList(MemberListType lt) const override

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

◆ countMembers()

void NamespaceDefImpl::countMembers ( )
overridevirtual

Implements NamespaceDefMutable.

Definition at line 1275 of file namespacedef.cpp.

1276{
1277 for (auto &ml : m_memberLists)
1278 {
1279 ml->countDecMembers();
1280 ml->countDocMembers();
1281 }
1282 for (const auto &mg : m_memberGroups)
1283 {
1284 mg->countDecMembers();
1285 mg->countDocMembers();
1286 }
1287}

References m_memberGroups, and m_memberLists.

◆ countVisibleMembers()

int NamespaceDefImpl::countVisibleMembers ( ) const
overridevirtual

Implements NamespaceDef.

Definition at line 1404 of file namespacedef.cpp.

1405{
1406 int count=0;
1407 for (const auto &lde : LayoutDocManager::instance().docEntries(LayoutDocManager::Namespace))
1408 {
1409 if (lde->kind()==LayoutDocEntry::MemberDef)
1410 {
1411 const LayoutDocEntryMemberDef *lmd = dynamic_cast<const LayoutDocEntryMemberDef*>(lde.get());
1412 if (lmd)
1413 {
1414 MemberList *ml = getMemberList(lmd->type);
1415 if (ml)
1416 {
1417 for (const auto &md : *ml)
1418 {
1419 if (md->visibleInIndex())
1420 {
1421 count++;
1422 }
1423 }
1424 }
1425 }
1426 }
1427 }
1428 return count;
1429}
static LayoutDocManager & instance()
Returns a reference to this singleton.
Definition layout.cpp:1449
MemberListType type
Definition layout.h:136

References getMemberList(), LayoutDocManager::instance(), and LayoutDocEntryMemberDef::type.

◆ definitionType()

DefType NamespaceDefImpl::definitionType ( ) const
inlineoverridevirtual

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

Implements Definition.

Definition at line 68 of file namespacedef.cpp.

68{ return TypeNamespace; }

References definitionType(), and Definition::TypeNamespace.

Referenced by definitionType().

◆ displayName()

DString NamespaceDefImpl::displayName ( bool includeScope = true) const
overridevirtual

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

Implements Definition.

Definition at line 1369 of file namespacedef.cpp.

1370{
1371 return makeDisplayName(this,includeScope);
1372}
static DString makeDisplayName(const NamespaceDef *nd, bool includeScope)

References makeDisplayName().

Referenced by addListReferences(), title(), writeDocumentation(), writeMemberDocumentation(), and writeMemberPages().

◆ distributeMemberGroupDocumentation()

void NamespaceDefImpl::distributeMemberGroupDocumentation ( )
overridevirtual

Implements NamespaceDefMutable.

Definition at line 358 of file namespacedef.cpp.

359{
360 for (const auto &mg : m_memberGroups)
361 {
362 mg->distributeMemberGroupDocumentation();
363 }
364}

References m_memberGroups.

◆ endMemberDeclarations()

void NamespaceDefImpl::endMemberDeclarations ( OutputList & ol)
private

Definition at line 859 of file namespacedef.cpp.

860{
862}
void endMemberSections()
Definition outputlist.h:459

References OutputList::endMemberSections().

Referenced by writeDocumentation().

◆ endMemberDocumentation()

void NamespaceDefImpl::endMemberDocumentation ( OutputList & ol)
private

Definition at line 873 of file namespacedef.cpp.

874{
875 if (Config_getBool(SEPARATE_MEMBER_PAGES))
876 {
879 }
880}
static bool suppressDocWarnings
Definition doxygen.h:123
void enable(OutputType o)

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

Referenced by writeDocumentation().

◆ findInnerCompound()

const Definition * NamespaceDefImpl::findInnerCompound ( const DString & name) const
overridevirtual

Reimplemented from DefinitionMixin< NamespaceDefMutable >.

Definition at line 1311 of file namespacedef.cpp.

1312{
1313 if (n==nullptr) return nullptr;
1314 const Definition *d = m_innerCompounds.find(n);
1315 if (d==nullptr)
1316 {
1317 if (!m_usingDirList.empty())
1318 {
1319 d = m_usingDirList.find(n);
1320 }
1321 if (d==nullptr && !m_usingDeclList.empty())
1322 {
1323 d = m_usingDeclList.find(n);
1324 }
1325 }
1326 return d;
1327}
const T * find(const std::string &key) const
Definition linkedmap.h:243
bool empty() const
Definition linkedmap.h:374

References LinkedRefMap< T, Hash, KeyEqual, Map >::empty(), LinkedRefMap< T, Hash, KeyEqual, Map >::find(), m_innerCompounds, m_usingDeclList, and m_usingDirList.

◆ findSectionsInDocumentation()

void NamespaceDefImpl::findSectionsInDocumentation ( )
overridevirtual

Implements NamespaceDefMutable.

Definition at line 366 of file namespacedef.cpp.

367{
371 for (const auto &mg : m_memberGroups)
372 {
373 mg->findSectionsInDocumentation(this);
374 }
375 for (auto &ml : m_memberLists)
376 {
377 if (ml->listType().isDeclaration())
378 {
379 ml->findSectionsInDocumentation(this);
380 }
381 }
382}
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< NamespaceDefMutable >::briefDescription(), DefinitionMixin< NamespaceDefMutable >::docFile(), docFindSections(), DefinitionMixin< NamespaceDefMutable >::documentation(), DefinitionMixin< NamespaceDefMutable >::inbodyDocumentation(), m_memberGroups, and m_memberLists.

◆ getClasses()

ClassLinkedRefMap NamespaceDefImpl::getClasses ( ) const
inlineoverridevirtual

Returns the classes contained in this namespace

Implements NamespaceDef.

Definition at line 114 of file namespacedef.cpp.

114{ return m_classes; }
ClassLinkedRefMap m_classes

References m_classes.

◆ getConcepts()

ConceptLinkedRefMap NamespaceDefImpl::getConcepts ( ) const
inlineoverridevirtual

Returns the concepts contained in this namespace

Implements NamespaceDef.

Definition at line 119 of file namespacedef.cpp.

119{ return m_concepts; }
ConceptLinkedRefMap m_concepts

References m_concepts.

◆ getExceptions()

ClassLinkedRefMap NamespaceDefImpl::getExceptions ( ) const
inlineoverridevirtual

Returns the Slice exceptions contained in this namespace

Implements NamespaceDef.

Definition at line 117 of file namespacedef.cpp.

117{ return m_exceptions; }
ClassLinkedRefMap m_exceptions

References m_exceptions.

◆ getInterfaces()

ClassLinkedRefMap NamespaceDefImpl::getInterfaces ( ) const
inlineoverridevirtual

Returns the Slice interfaces contained in this namespace

Implements NamespaceDef.

Definition at line 115 of file namespacedef.cpp.

115{ return m_interfaces; }
ClassLinkedRefMap m_interfaces

References m_interfaces.

◆ getMemberByName()

const MemberDef * NamespaceDefImpl::getMemberByName ( const DString & n) const
overridevirtual

Implements NamespaceDef.

Definition at line 1671 of file namespacedef.cpp.

1672{
1673 return m_allMembers.find(n);
1674}
MemberLinkedRefMap m_allMembers

References LinkedRefMap< T, Hash, KeyEqual, Map >::find(), and m_allMembers.

◆ getMemberGroups()

const MemberGroupList & NamespaceDefImpl::getMemberGroups ( ) const
inlineoverridevirtual

Returns the user defined member groups

Implements NamespaceDef.

Definition at line 113 of file namespacedef.cpp.

113{ return m_memberGroups; }

References m_memberGroups.

◆ getMemberList()

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

Implements NamespaceDef.

Definition at line 1594 of file namespacedef.cpp.

1595{
1596 for (auto &ml : m_memberLists)
1597 {
1598 if (ml->listType()==lt)
1599 {
1600 return ml.get();
1601 }
1602 }
1603 return nullptr;
1604}

References m_memberLists.

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

◆ getMemberLists()

const MemberLists & NamespaceDefImpl::getMemberLists ( ) const
inlineoverridevirtual

Implements NamespaceDef.

Definition at line 111 of file namespacedef.cpp.

111{ return m_memberLists; }

References m_memberLists.

◆ getNamespaces()

NamespaceLinkedRefMap NamespaceDefImpl::getNamespaces ( ) const
inlineoverridevirtual

Returns the namespaces contained in this namespace

Implements NamespaceDef.

Definition at line 118 of file namespacedef.cpp.

118{ return m_namespaces; }
NamespaceLinkedRefMap m_namespaces

References m_namespaces.

◆ getOutputFileBase()

DString NamespaceDefImpl::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 1306 of file namespacedef.cpp.

1307{
1308 return fileName;
1309}

References fileName.

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

◆ getStructs()

ClassLinkedRefMap NamespaceDefImpl::getStructs ( ) const
inlineoverridevirtual

Returns the Slice structs contained in this namespace

Implements NamespaceDef.

Definition at line 116 of file namespacedef.cpp.

116{ return m_structs; }
ClassLinkedRefMap m_structs

References m_structs.

◆ getUsedDefinitions()

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

Implements NamespaceDef.

Definition at line 88 of file namespacedef.cpp.

88{ return m_usingDeclList; }

References m_usingDeclList.

◆ getUsedNamespaces()

const LinkedRefMap< NamespaceDef > & NamespaceDefImpl::getUsedNamespaces ( ) const
inlineoverridevirtual

Implements NamespaceDef.

Definition at line 86 of file namespacedef.cpp.

86{ return m_usingDirList; }

References m_usingDirList.

◆ hasDetailedDescription()

bool NamespaceDefImpl::hasDetailedDescription ( ) const
overridevirtual

Implements NamespaceDef.

Definition at line 653 of file namespacedef.cpp.

654{
655 bool repeatBrief = Config_getBool(REPEAT_BRIEF);
656 return ((!briefDescription().empty() && repeatBrief) ||
657 !documentation().empty());
658}

References DefinitionMixin< NamespaceDefMutable >::briefDescription(), Config_getBool, and DefinitionMixin< NamespaceDefMutable >::documentation().

Referenced by writeBriefDescription(), and writeDetailedDescription().

◆ insertClass()

void NamespaceDefImpl::insertClass ( ClassDef * cd)
overridevirtual

Implements NamespaceDefMutable.

Definition at line 412 of file namespacedef.cpp.

413{
414 ClassLinkedRefMap *d = &m_classes;
415
416 if (Config_getBool(OPTIMIZE_OUTPUT_SLICE))
417 {
419 {
420 d = &m_interfaces;
421 }
422 else if (cd->compoundType()==ClassDef::Struct)
423 {
424 d = &m_structs;
425 }
426 else if (cd->compoundType()==ClassDef::Exception)
427 {
428 d = &m_exceptions;
429 }
430 }
431
432 d->add(cd->name(),cd);
433}
@ Interface
Definition classdef.h:108
@ Exception
Definition classdef.h:111
virtual CompoundType compoundType() const =0
Returns the type of compound this is, i.e. class/struct/union/...

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

Referenced by addInnerCompound().

◆ insertConcept()

void NamespaceDefImpl::insertConcept ( ConceptDef * cd)
overridevirtual

Implements NamespaceDefMutable.

Definition at line 435 of file namespacedef.cpp.

436{
437 m_concepts.add(cd->name(),cd);
438}

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

Referenced by addInnerCompound().

◆ insertMember()

void NamespaceDefImpl::insertMember ( MemberDef * md)
overridevirtual

Implements NamespaceDefMutable.

Definition at line 518 of file namespacedef.cpp.

519{
520 //printf("%s::insertMember(%s) isInline=%d hasDocs=%d\n",qPrint(name()),qPrint(md->name()),
521 // isInline(),hasDocumentation());
522 if (md->isHidden()) return;
523 MemberDefMutable *mdm = toMemberDefMutable(md);
524
525 // if this is an inline namespace that is not documented, then insert the
526 // member in the parent scope instead
527 if (isInline() && !hasDocumentation())
528 {
529 Definition *outerScope = getOuterScope();
530 if (outerScope)
531 {
532 if (outerScope->definitionType()==Definition::TypeNamespace)
533 {
534 NamespaceDefMutable *nd = toNamespaceDefMutable(outerScope);
535 if (nd && nd!=Doxygen::globalScope)
536 {
537 nd->insertMember(md);
538 if (mdm)
539 {
540 mdm->setNamespace(nd);
541 }
542 }
543 }
544 else if (outerScope->definitionType()==Definition::TypeFile)
545 {
546 FileDef *fd = toFileDef(outerScope);
547 fd->insertMember(md);
548 if (mdm)
549 {
550 mdm->setFileDef(fd);
551 mdm->setOuterScope(fd);
552 }
553 }
554 }
555 }
556 else // member is a non-inline namespace or a documented inline namespace
557 {
558 MemberList *allMemberList = getMemberList(MemberListType::AllMembersList());
559 if (allMemberList==nullptr)
560 {
561 m_memberLists.emplace_back(std::make_unique<MemberList>(MemberListType::AllMembersList(),MemberListContainer::Namespace));
562 allMemberList = m_memberLists.back().get();
563 }
564 allMemberList->push_back(md);
565 //printf("%s::m_allMembersDict->append(%s)\n",qPrint(name()),qPrint(md->localName()));
566 m_allMembers.add(md->localName(),md);
567 switch(md->memberType())
568 {
569 case MemberType::Variable:
570 if (md->anonymousMemberForDeclaration()==nullptr) // not a split member that has a separate declaration member
571 {
572 addMemberToList(MemberListType::DecVarMembers(),md);
573 }
574 if (!md->isAnonymous() && md->anonymousMemberForDetails()==nullptr) // not a split member that has a separate details member
575 {
576 addMemberToList(MemberListType::DocVarMembers(),md);
577 }
578 break;
579 case MemberType::Function:
580 addMemberToList(MemberListType::DecFuncMembers(),md);
581 addMemberToList(MemberListType::DocFuncMembers(),md);
582 break;
583 case MemberType::Typedef:
584 addMemberToList(MemberListType::DecTypedefMembers(),md);
585 addMemberToList(MemberListType::DocTypedefMembers(),md);
586 break;
587 case MemberType::Sequence:
588 addMemberToList(MemberListType::DecSequenceMembers(),md);
589 addMemberToList(MemberListType::DocSequenceMembers(),md);
590 break;
591 case MemberType::Dictionary:
592 addMemberToList(MemberListType::DecDictionaryMembers(),md);
593 addMemberToList(MemberListType::DocDictionaryMembers(),md);
594 break;
595 case MemberType::Enumeration:
596 addMemberToList(MemberListType::DecEnumMembers(),md);
597 addMemberToList(MemberListType::DocEnumMembers(),md);
598 break;
599 case MemberType::EnumValue:
600 break;
601 case MemberType::Define:
602 addMemberToList(MemberListType::DecDefineMembers(),md);
603 addMemberToList(MemberListType::DocDefineMembers(),md);
604 break;
605 case MemberType::Property:
606 if (md->getLanguage() == SrcLangExt::Python)
607 {
608 addMemberToList(MemberListType::PropertyMembers(),md);
609 addMemberToList(MemberListType::Properties(),md);
610 break;
611 }
612 // fallthrough, explicitly no break here
613 default:
614 err("NamespaceDefImpl::insertMembers(): "
615 "member '{}' with unexpected type '{}' and class scope '{}' inserted in namespace scope '{}'!\n",
616 md->name(), md->memberTypeName(), md->getClassDef() ? md->getClassDef()->name() : "", name());
617 }
618 // if this is an inline namespace, then insert an alias of this member in the outer scope.
619 if (isInline())
620 {
621 Definition *outerScope = getOuterScope();
622 if (outerScope)
623 {
624 std::unique_ptr<MemberDef> aliasMd = createMemberDefAlias(outerScope,md);
625 if (outerScope->definitionType()==Definition::TypeNamespace)
626 {
627 NamespaceDefMutable *ndm = toNamespaceDefMutable(outerScope);
628 if (ndm)
629 {
630 ndm->insertMember(aliasMd.get());
631 }
632 }
633 else if (outerScope->definitionType()==Definition::TypeFile)
634 {
635 toFileDef(outerScope)->insertMember(aliasMd.get());
636 }
637 if (aliasMd)
638 {
639 MemberName *mn = Doxygen::functionNameLinkedMap->add(md->name());
640 mn->push_back(std::move(aliasMd));
641 }
642 }
643 }
644 }
645}
virtual SrcLangExt getLanguage() const =0
Returns the programming language this definition was written in.
virtual bool isAnonymous() const =0
virtual bool isHidden() const =0
Definition * getOuterScope() const override
virtual void setOuterScope(Definition *d)=0
static MemberNameLinkedMap * functionNameLinkedMap
Definition doxygen.h:105
static NamespaceDefMutable * globalScope
Definition doxygen.h:114
virtual void insertMember(MemberDef *md)=0
T * add(const char *k, Args &&... args)
Definition linkedmap.h:90
virtual const ClassDef * getClassDef() const =0
virtual const MemberDef * anonymousMemberForDeclaration() const =0
virtual const MemberDef * anonymousMemberForDetails() const =0
virtual MemberType memberType() const =0
virtual DString memberTypeName() const =0
virtual void setFileDef(FileDef *fd)=0
virtual void setNamespace(NamespaceDef *nd)=0
void push_back(Ptr &&p)
Definition membername.h:52
void push_back(const T &value)
Definition memberlist.h:49
bool isInline() const override
void addMemberToList(MemberListType lt, MemberDef *md)
virtual void insertMember(MemberDef *md)=0
FileDef * toFileDef(Definition *d)
Definition filedef.cpp:2033
std::unique_ptr< MemberDef > createMemberDefAlias(const Definition *newScope, const MemberDef *aliasMd)
#define err(fmt,...)
Definition message.h:127

References LinkedMap< T, Hash, KeyEqual, Map >::add(), LinkedRefMap< T, Hash, KeyEqual, Map >::add(), addMemberToList(), MemberDef::anonymousMemberForDeclaration(), MemberDef::anonymousMemberForDetails(), createMemberDefAlias(), Definition::definitionType(), err, Doxygen::functionNameLinkedMap, MemberLists::get(), MemberDef::getClassDef(), Definition::getLanguage(), getMemberList(), DefinitionMixin< NamespaceDefMutable >::getOuterScope(), Doxygen::globalScope, DefinitionMixin< NamespaceDefMutable >::hasDocumentation(), FileDef::insertMember(), NamespaceDefMutable::insertMember(), Definition::isAnonymous(), Definition::isHidden(), isInline(), Definition::localName(), m_allMembers, m_memberLists, MemberDef::memberType(), MemberDef::memberTypeName(), Definition::name(), DefinitionMixin< NamespaceDefMutable >::name(), Namespace, MemberName::push_back(), MemberVector::push_back(), MemberDefMutable::setFileDef(), MemberDefMutable::setNamespace(), DefinitionMutable::setOuterScope(), toFileDef(), toMemberDefMutable(), toNamespaceDefMutable(), Definition::TypeFile, and Definition::TypeNamespace.

◆ insertNamespace()

void NamespaceDefImpl::insertNamespace ( NamespaceDef * nd)
overridevirtual

Implements NamespaceDefMutable.

Definition at line 440 of file namespacedef.cpp.

441{
442 m_namespaces.add(nd->name(),nd);
443}

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

Referenced by addInnerCompound().

◆ insertUsedFile()

void NamespaceDefImpl::insertUsedFile ( FileDef * fd)
overridevirtual

Implements NamespaceDefMutable.

Definition at line 384 of file namespacedef.cpp.

385{
386 if (fd==nullptr) return;
387 auto it = std::find(files.begin(),files.end(),fd);
388 if (it==files.end())
389 {
390 files.push_back(fd);
391 }
392}

References files.

◆ isConstantGroup()

bool NamespaceDefImpl::isConstantGroup ( ) const
inlineoverridevirtual

Implements NamespaceDef.

Definition at line 92 of file namespacedef.cpp.

92{ return CONSTANT_GROUP == m_type; }

References CONSTANT_GROUP, and m_type.

Referenced by addNamespaceAttributes(), compoundTypeString(), title(), and writeNamespaceDeclarations().

◆ isInline()

bool NamespaceDefImpl::isInline ( ) const
inlineoverridevirtual

Implements NamespaceDef.

Definition at line 95 of file namespacedef.cpp.

95{ return m_inline; }

References m_inline.

Referenced by insertMember(), and setInline().

◆ isLibrary()

bool NamespaceDefImpl::isLibrary ( ) const
inlineoverridevirtual

Implements NamespaceDef.

Definition at line 94 of file namespacedef.cpp.

94{ return LIBRARY == m_type; }

References LIBRARY, and m_type.

Referenced by compoundTypeString().

◆ isLinkable()

bool NamespaceDefImpl::isLinkable ( ) const
overridevirtual

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 1666 of file namespacedef.cpp.

1667{
1668 return isLinkableInProject() || isReference();
1669}
bool isLinkableInProject() const override

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

Referenced by isVisibleInHierarchy().

◆ isLinkableInProject()

bool NamespaceDefImpl::isLinkableInProject ( ) const
overridevirtual

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

Implements Definition.

Definition at line 1647 of file namespacedef.cpp.

1648{
1649 size_t i = name().rfind("::");
1650 if (i==DString::npos) i=0; else i+=2;
1651 bool extractAnonNs = Config_getBool(EXTRACT_ANON_NSPACES);
1652 bool hideUndoc = Config_getBool(HIDE_UNDOC_NAMESPACES);
1653 if (extractAnonNs && // extract anonymous ns
1654 name().mid(i,20)=="anonymous_namespace{" // correct prefix
1655 ) // not disabled by config
1656 {
1657 return true;
1658 }
1659 return !name().empty() && name().at(i)!='@' && // not anonymous
1660 (hasDocumentation() || !hideUndoc || getLanguage()==SrcLangExt::CSharp) && // documented
1661 !isReference() && // not an external reference
1662 !isHidden() && // not hidden
1663 !isArtificial(); // or artificial
1664}
size_t rfind(char c, size_t pos=npos) const
Definition dstring.h:244
bool empty() const
Returns true iff the string is empty (std::string compatible alias for isEmpty()).
Definition dstring.h:148
static constexpr size_t npos
value used to indicate 'not found' or 'to the end of the string', matching std::string::npos
Definition dstring.h:178
char & at(size_t i)
Returns a reference to the character at index i.
Definition dstring.h:686
const DString & name() const override

References DString::at(), Config_getBool, DString::empty(), DefinitionMixin< NamespaceDefMutable >::getLanguage(), DefinitionMixin< NamespaceDefMutable >::hasDocumentation(), DefinitionMixin< NamespaceDefMutable >::isArtificial(), DefinitionMixin< NamespaceDefMutable >::isHidden(), DefinitionMixin< NamespaceDefMutable >::isReference(), DefinitionMixin< NamespaceDefMutable >::name(), DString::npos, and DString::rfind().

Referenced by isLinkable().

◆ isModule()

bool NamespaceDefImpl::isModule ( ) const
inlineoverridevirtual

Implements NamespaceDef.

Definition at line 93 of file namespacedef.cpp.

93{ return NAMESPACE == m_type || MODULE == m_type; }

References m_type, MODULE, and NAMESPACE.

Referenced by compoundTypeString().

◆ isVisibleInHierarchy()

bool NamespaceDefImpl::isVisibleInHierarchy ( ) const
overridevirtual

Implements NamespaceDef.

Definition at line 1641 of file namespacedef.cpp.

1642{
1643 bool allExternals = Config_getBool(ALLEXTERNALS);
1644 return allExternals || hasNonReferenceNestedNamespaceRec(this,0) || isLinkable();
1645}
bool isLinkable() const override
static bool hasNonReferenceNestedNamespaceRec(const NamespaceDef *nd, int level)

References Config_getBool, hasNonReferenceNestedNamespaceRec(), and isLinkable().

◆ numDocMembers()

int NamespaceDefImpl::numDocMembers ( ) const
overridevirtual

Implements NamespaceDef.

Definition at line 1289 of file namespacedef.cpp.

1290{
1291 MemberList *allMemberList = getMemberList(MemberListType::AllMembersList());
1292 return (allMemberList ? allMemberList->numDocMembers() : 0) + static_cast<int>(m_innerCompounds.size());
1293}
size_t size() const
Definition linkedmap.h:375
int numDocMembers() const
Definition memberlist.h:139

References getMemberList(), m_innerCompounds, MemberList::numDocMembers(), and LinkedRefMap< T, Hash, KeyEqual, Map >::size().

◆ setFileName()

void NamespaceDefImpl::setFileName ( const DString & fn)
overridevirtual

Implements NamespaceDefMutable.

Definition at line 353 of file namespacedef.cpp.

354{
356}

References setFileNameLocal().

◆ setFileNameLocal()

void NamespaceDefImpl::setFileNameLocal ( const DString & fn)
private

Definition at line 341 of file namespacedef.cpp.

342{
343 if (isReference())
344 {
345 fileName = "namespace"+fn;
346 }
347 else
348 {
349 fileName = convertNameToFile("namespace"+fn);
350 }
351}

References convertNameToFile(), fileName, and DefinitionMixin< NamespaceDefMutable >::isReference().

Referenced by setFileName().

◆ setIncludeFile()

void NamespaceDefImpl::setIncludeFile ( FileDef * fd,
const DString & incName,
bool local,
bool force )
overridevirtual

Implements NamespaceDefMutable.

Definition at line 445 of file namespacedef.cpp.

447{
448 //printf("NamespaceDefImpl::setIncludeFile(%p,%s,%d,%d)\n",fd,qPrint(includeName),local,force);
449 if (!force || includeName.empty()) return; // only use header provided via \headerfile
450 auto it = m_incInfo.find(includeName.str());
451 if (it == m_incInfo.end())
452 {
453 m_incInfo.insert(std::make_pair(includeName.str(), IncludeInfo(fd,includeName,local ? IncludeKind::IncludeLocal : IncludeKind::IncludeSystem)));
454 }
455}
std::map< std::string, IncludeInfo > m_incInfo
@ IncludeLocal
Definition filedef.h:47
@ IncludeSystem
Definition filedef.h:46

References DString::empty(), IncludeLocal, IncludeSystem, m_incInfo, and DString::str().

◆ setInline()

void NamespaceDefImpl::setInline ( bool isInline)
inlineoverridevirtual

Implements NamespaceDefMutable.

Definition at line 91 of file namespacedef.cpp.

91{ m_inline = isInline; }

References isInline(), and m_inline.

◆ setMetaData()

void NamespaceDefImpl::setMetaData ( const DString & m)
overridevirtual

Implements NamespaceDefMutable.

Definition at line 1750 of file namespacedef.cpp.

1751{
1752 metaData = m;
1753}

References metaData.

◆ setName()

void NamespaceDefImpl::setName ( const DString & name)
overridevirtual

Sets a new name for the definition

Reimplemented from DefinitionMixin< NamespaceDefMutable >.

Definition at line 331 of file namespacedef.cpp.

332{
335}
void setName(const DString &name) override

References DefinitionMixin< NamespaceDefMutable >::name(), DefinitionMixin< Base >::setName(), and updateLocalName().

◆ sortMemberLists()

void NamespaceDefImpl::sortMemberLists ( )
overridevirtual

Implements NamespaceDefMutable.

Definition at line 1559 of file namespacedef.cpp.

1560{
1561 for (auto &ml : m_memberLists)
1562 {
1563 if (ml->needsSorting()) { ml->sort(); ml->setNeedsSorting(false); }
1564 }
1565
1566 auto classComp = [](const ClassLinkedRefMap::Ptr &c1,const ClassLinkedRefMap::Ptr &c2)
1567 {
1568 return Config_getBool(SORT_BY_SCOPE_NAME) ?
1569 dstricmp_sort(c1->name(), c2->name())<0 :
1570 dstricmp_sort(c1->className(), c2->className())<0;
1571 };
1572
1573 if (needsSorting(m_classes)) std::stable_sort(m_classes.begin(), m_classes.end(), classComp);
1574 if (needsSorting(m_interfaces)) std::stable_sort(m_interfaces.begin(),m_interfaces.end(),classComp);
1575 if (needsSorting(m_structs)) std::stable_sort(m_structs.begin(), m_structs.end(), classComp);
1576 if (needsSorting(m_exceptions)) std::stable_sort(m_exceptions.begin(),m_exceptions.end(),classComp);
1577
1578 auto conceptComp = [](const ConceptLinkedRefMap::Ptr &c1,const ConceptLinkedRefMap::Ptr &c2)
1579 {
1580 return dstricmp_sort(c1->name(),c2->name())<0;
1581 };
1582
1583 if (needsSorting(m_concepts)) std::stable_sort(m_concepts.begin(), m_concepts.end(), conceptComp);
1584
1585 auto namespaceComp = [](const NamespaceLinkedRefMap::Ptr &n1,const NamespaceLinkedRefMap::Ptr &n2)
1586 {
1587 return dstricmp_sort(n1->name(),n2->name())<0;
1588 };
1589
1590 if (needsSorting(m_namespaces)) std::stable_sort(m_namespaces.begin(),m_namespaces.end(),namespaceComp);
1591
1592}
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
int dstricmp_sort(const char *str1, const char *str2)
Definition dstring.h:67
bool needsSorting(const Container &container)

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

◆ startMemberDeclarations()

void NamespaceDefImpl::startMemberDeclarations ( OutputList & ol)
private

Definition at line 854 of file namespacedef.cpp.

855{
857}
void startMemberSections()
Definition outputlist.h:457

References OutputList::startMemberSections().

Referenced by writeDocumentation().

◆ startMemberDocumentation()

void NamespaceDefImpl::startMemberDocumentation ( OutputList & ol)
private

Definition at line 864 of file namespacedef.cpp.

865{
866 if (Config_getBool(SEPARATE_MEMBER_PAGES))
867 {
870 }
871}
void disable(OutputType o)

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

Referenced by writeDocumentation().

◆ subGrouping()

bool NamespaceDefImpl::subGrouping ( ) const
inlineoverridevirtual

Implements NamespaceDef.

Definition at line 109 of file namespacedef.cpp.

109{ return m_subGrouping; }

References m_subGrouping.

◆ title()

DString NamespaceDefImpl::title ( ) const
overridevirtual

Implements NamespaceDef.

Definition at line 1676 of file namespacedef.cpp.

1677{
1678 DString pageTitle;
1679 SrcLangExt lang = getLanguage();
1680
1681 auto getReferenceTitle = [this](std::function<DString()> translateFunc) -> DString
1682 {
1683 return Config_getBool(HIDE_COMPOUND_REFERENCE) ? displayName() : translateFunc();
1684 };
1685
1686 if (lang==SrcLangExt::Java)
1687 {
1688 pageTitle = theTranslator->trPackage(displayName());
1689 }
1690 else if (lang==SrcLangExt::Fortran || lang==SrcLangExt::Slice)
1691 {
1692 pageTitle = getReferenceTitle([this](){
1694 });
1695 }
1696 else if (lang==SrcLangExt::IDL)
1697 {
1698 pageTitle = getReferenceTitle([this](){
1699 return isConstantGroup()
1702 });
1703 }
1704 else
1705 {
1706 pageTitle = getReferenceTitle([this](){
1708 });
1709 }
1710 return pageTitle;
1711}
virtual DString trPackage(const DString &name)=0
virtual DString trModuleReference(const DString &namespaceName)=0
virtual DString trNamespaceReference(const DString &namespaceName)=0
virtual DString trConstantGroupReference(const DString &namespaceName)=0

References Config_getBool, displayName(), DefinitionMixin< NamespaceDefMutable >::getLanguage(), isConstantGroup(), theTranslator, Translator::trConstantGroupReference(), Translator::trModuleReference(), Translator::trNamespaceReference(), and Translator::trPackage().

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

◆ updateLocalName()

void NamespaceDefImpl::updateLocalName ( )
private

Definition at line 324 of file namespacedef.cpp.

325{
326 DString locName=name();
327 if (size_t i=locName.rfind("::"); i!=DString::npos) locName=locName.mid(i+2);
328 setLocalName(locName);
329}
DString mid(size_t index, size_t len=npos) const
Definition dstring.h:318
void setLocalName(const DString &name) override

References DString::mid(), DefinitionMixin< NamespaceDefMutable >::name(), DString::npos, DString::rfind(), and DefinitionMixin< NamespaceDefMutable >::setLocalName().

Referenced by setName().

◆ writeAuthorSection()

void NamespaceDefImpl::writeAuthorSection ( OutputList & ol)
private

Definition at line 915 of file namespacedef.cpp.

916{
917 // write Author section (Man only)
920 ol.startGroupHeader();
921 ol.parseText(theTranslator->trAuthor(true,true));
922 ol.endGroupHeader();
925}
void parseText(const DString &textStr)
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 NamespaceDefImpl::writeBriefDescription ( OutputList & ol)
private

Definition at line 794 of file namespacedef.cpp.

795{
797 {
798 auto parser { createDocParser() };
799 auto ast { validatingParseDoc(*parser.get(),
800 briefFile(),
801 briefLine(),
802 this,
803 nullptr,
805 DocOptions()
806 .setIndexWords(true)
807 .setSingleLine(true))
808 };
809 if (!ast->empty())
810 {
811 ol.startParagraph();
814 ol.writeString(" - ");
816 ol.writeDoc(ast.get(),this,nullptr);
819 ol.writeString(" \n");
821
823 {
825 ol.startTextLink(getOutputFileBase(),"details");
827 ol.endTextLink();
828 }
830 ol.endParagraph();
831 }
832 }
833
834 // Write a summary of the Slice definition including metadata.
835 if (getLanguage() == SrcLangExt::Slice)
836 {
837 ol.startParagraph();
838 ol.startTypewriter();
839 if (!metaData.empty())
840 {
841 ol.docify(metaData);
842 ol.lineBreak();
843 }
844 ol.docify("module ");
845 ol.docify(stripScope(name()));
846 ol.docify(" { ... }");
847 ol.endTypewriter();
848 ol.endParagraph();
849 }
850
851 ol.writeSynopsis();
852}
virtual DString briefFile() const =0
bool hasDetailedDescription() const override
void writeDoc(const IDocNodeAST *ast, const Definition *ctx, const MemberDef *md, int sectionLevel=-1)
Definition outputlist.h:379
void startParagraph(const DString &classDef=DString())
Definition outputlist.h:403
void docify(const DString &s)
Definition outputlist.h:433
void lineBreak(const DString &style=DString())
Definition outputlist.h:555
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 startTypewriter()
Definition outputlist.h:445
void startTextLink(const DString &file, const DString &anchor)
Definition outputlist.h:438
void endTypewriter()
Definition outputlist.h:447
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)
DString stripScope(const DString &name)
Definition util.cpp:3118

References DefinitionMixin< NamespaceDefMutable >::briefDescription(), DefinitionMixin< NamespaceDefMutable >::briefFile(), DefinitionMixin< NamespaceDefMutable >::briefLine(), createDocParser(), OutputList::disable(), OutputList::disableAllBut(), OutputList::docify(), DString::empty(), OutputList::enable(), OutputList::endParagraph(), OutputList::endTextLink(), OutputList::endTypewriter(), DefinitionMixin< NamespaceDefMutable >::getLanguage(), getOutputFileBase(), DefinitionMixin< NamespaceDefMutable >::hasBriefDescription(), hasDetailedDescription(), Html, OutputList::lineBreak(), Man, metaData, DefinitionMixin< NamespaceDefMutable >::name(), OutputList::parseText(), OutputList::popGeneratorState(), OutputList::pushGeneratorState(), RTF, OutputList::startParagraph(), OutputList::startTextLink(), OutputList::startTypewriter(), stripScope(), theTranslator, Translator::trMore(), validatingParseDoc(), OutputList::writeDoc(), OutputList::writeString(), and OutputList::writeSynopsis().

Referenced by writeDocumentation().

◆ writeClassDeclarations()

void NamespaceDefImpl::writeClassDeclarations ( OutputList & ol,
const DString & title,
const ClassLinkedRefMap & d )
private

Definition at line 882 of file namespacedef.cpp.

883{
884 d.writeDeclaration(ol,nullptr,title,true);
885}
void writeDeclaration(OutputList &ol, const ClassDef::CompoundType *filter, const DString &header, bool localNames) const
Definition classlist.cpp:51
DString title() const override

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

Referenced by writeDocumentation().

◆ writeClassesToTagFile()

void NamespaceDefImpl::writeClassesToTagFile ( TextStream & tagFile,
const ClassLinkedRefMap & d )
private

Definition at line 1027 of file namespacedef.cpp.

1028{
1029 for (const auto &cd : list)
1030 {
1031 if (cd->isLinkableInProject())
1032 {
1033 tagFile << " <class kind=\"" << cd->compoundTypeString()
1034 << "\">" << convertToXML(cd->name()) << "</class>\n";
1035 }
1036 }
1037}
DString convertToXML(const DString &s, bool keepEntities, const bool citeEntry)
Definition util.cpp:3241

References convertToXML().

Referenced by writeTagFile().

◆ writeConcepts()

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

Definition at line 887 of file namespacedef.cpp.

888{
890}
void writeDeclaration(OutputList &ol, const DString &header, bool localNames) const

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

Referenced by writeDocumentation().

◆ writeConceptsToTagFile()

void NamespaceDefImpl::writeConceptsToTagFile ( TextStream & tagFile)
private

Definition at line 1039 of file namespacedef.cpp.

1040{
1041 for (const auto &cd : m_concepts)
1042 {
1043 if (cd->isLinkableInProject())
1044 {
1045 tagFile << " <concept>" << convertToXML(cd->name()) << "</concept>\n";
1046 }
1047 }
1048}

References convertToXML(), and m_concepts.

Referenced by writeTagFile().

◆ writeDetailedDescription()

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

Definition at line 741 of file namespacedef.cpp.

742{
744 {
747 ol.writeRuler();
751 ol.writeAnchor(DString(),"details");
753 ol.startGroupHeader("details");
754 ol.parseText(title);
755 ol.endGroupHeader();
756
757 ol.startTextBlock();
758 if (!briefDescription().empty() && Config_getBool(REPEAT_BRIEF))
759 {
761 briefLine(),
762 this,
763 nullptr,
765 DocOptions());
766 }
767 if (!briefDescription().empty() && Config_getBool(REPEAT_BRIEF) &&
768 !documentation().empty())
769 {
773 ol.enableAll();
776 ol.writeString("\n\n");
778 }
779 if (!documentation().empty())
780 {
781 ol.generateDoc(docFile(),
782 docLine(),
783 this,
784 nullptr,
785 documentation()+"\n",
786 DocOptions()
787 .setIndexWords(true));
788 }
790 ol.endTextBlock();
791 }
792}
void writeRequirementRefs(OutputList &ol) 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< NamespaceDefMutable >::briefDescription(), DefinitionMixin< NamespaceDefMutable >::briefFile(), DefinitionMixin< NamespaceDefMutable >::briefLine(), Config_getBool, OutputList::disable(), OutputList::disableAllBut(), DefinitionMixin< NamespaceDefMutable >::docFile(), DefinitionMixin< NamespaceDefMutable >::docLine(), DefinitionMixin< NamespaceDefMutable >::documentation(), OutputList::enable(), OutputList::enableAll(), OutputList::endGroupHeader(), OutputList::endTextBlock(), OutputList::generateDoc(), hasDetailedDescription(), DefinitionMixin< NamespaceDefMutable >::hasRequirementRefs(), Html, Latex, Man, OutputList::parseText(), OutputList::popGeneratorState(), OutputList::pushGeneratorState(), RTF, OutputList::startGroupHeader(), OutputList::startTextBlock(), title(), OutputList::writeAnchor(), DefinitionMixin< NamespaceDefMutable >::writeRequirementRefs(), OutputList::writeRuler(), and OutputList::writeString().

Referenced by writeDocumentation().

◆ writeDocumentation()

void NamespaceDefImpl::writeDocumentation ( OutputList & ol)
overridevirtual

Implements NamespaceDefMutable.

Definition at line 1050 of file namespacedef.cpp.

1051{
1052 bool generateTreeView = Config_getBool(GENERATE_TREEVIEW);
1053 //bool outputJava = Config_getBool(OPTIMIZE_OUTPUT_JAVA);
1054 //bool fortranOpt = Config_getBool(OPTIMIZE_FOR_FORTRAN);
1055
1056 DString pageTitle = title();
1057 startFile(ol,getOutputFileBase(),false,name(),pageTitle,HighlightedItem::NamespaceVisible,!generateTreeView);
1058
1059 if (!generateTreeView)
1060 {
1062 {
1064 }
1065 ol.endQuickIndices();
1066 }
1067
1068 startTitle(ol,getOutputFileBase(),this);
1069 ol.parseText(pageTitle);
1070 addGroupListToTitle(ol,this);
1073 ol.startContents();
1074
1075 //---------------------------------------- start flexible part -------------------------------
1076
1077 SrcLangExt lang = getLanguage();
1078 for (const auto &lde : LayoutDocManager::instance().docEntries(LayoutDocManager::Namespace))
1079 {
1080 const LayoutDocEntrySection *ls = dynamic_cast<const LayoutDocEntrySection*>(lde.get());
1081 switch (lde->kind())
1082 {
1083 case LayoutDocEntry::BriefDesc:
1085 break;
1086 case LayoutDocEntry::MemberDeclStart:
1088 break;
1089 case LayoutDocEntry::NamespaceClasses:
1090 {
1091 if (ls) writeClassDeclarations(ol,ls->title(lang),m_classes);
1092 }
1093 break;
1094 case LayoutDocEntry::NamespaceInterfaces:
1095 {
1096 if (ls) writeClassDeclarations(ol,ls->title(lang),m_interfaces);
1097 }
1098 break;
1099 case LayoutDocEntry::NamespaceStructs:
1100 {
1101 if (ls) writeClassDeclarations(ol,ls->title(lang),m_structs);
1102 }
1103 break;
1104 case LayoutDocEntry::NamespaceExceptions:
1105 {
1106 if (ls) writeClassDeclarations(ol,ls->title(lang),m_exceptions);
1107 }
1108 break;
1109 case LayoutDocEntry::NamespaceConcepts:
1110 {
1111 if (ls) writeConcepts(ol,ls->title(lang));
1112 }
1113 break;
1114 case LayoutDocEntry::NamespaceNestedNamespaces:
1115 {
1116 if (ls) writeNamespaceDeclarations(ol,ls->title(lang),false);
1117 }
1118 break;
1119 case LayoutDocEntry::NamespaceNestedConstantGroups:
1120 {
1121 if (ls) writeNamespaceDeclarations(ol,ls->title(lang),true);
1122 }
1123 break;
1124 case LayoutDocEntry::MemberGroups:
1126 break;
1127 case LayoutDocEntry::MemberDecl:
1128 {
1129 const LayoutDocEntryMemberDecl *lmd = dynamic_cast<const LayoutDocEntryMemberDecl*>(lde.get());
1130 if (lmd) writeMemberDeclarations(ol,lmd->type,lmd->title(lang));
1131 }
1132 break;
1133 case LayoutDocEntry::MemberDeclEnd:
1135 break;
1136 case LayoutDocEntry::DetailedDesc:
1137 {
1138 if (ls) writeDetailedDescription(ol,ls->title(lang));
1139 }
1140 break;
1141 case LayoutDocEntry::MemberDefStart:
1143 break;
1144 case LayoutDocEntry::NamespaceInlineClasses:
1146 break;
1147 case LayoutDocEntry::MemberDef:
1148 {
1149 const LayoutDocEntryMemberDef *lmd = dynamic_cast<const LayoutDocEntryMemberDef*>(lde.get());
1150 if (lmd) writeMemberDocumentation(ol,lmd->type,lmd->title(lang));
1151 }
1152 break;
1153 case LayoutDocEntry::MemberDefEnd:
1155 break;
1156 case LayoutDocEntry::AuthorSection:
1158 break;
1159 case LayoutDocEntry::Includes:
1161 break;
1162 case LayoutDocEntry::ClassInheritanceGraph:
1163 case LayoutDocEntry::ClassNestedClasses:
1164 case LayoutDocEntry::ClassCollaborationGraph:
1165 case LayoutDocEntry::ClassAllMembersLink:
1166 case LayoutDocEntry::ClassUsedFiles:
1167 case LayoutDocEntry::ClassInlineClasses:
1168 case LayoutDocEntry::ConceptDefinition:
1169 case LayoutDocEntry::FileClasses:
1170 case LayoutDocEntry::FileConcepts:
1171 case LayoutDocEntry::FileInterfaces:
1172 case LayoutDocEntry::FileStructs:
1173 case LayoutDocEntry::FileExceptions:
1174 case LayoutDocEntry::FileNamespaces:
1175 case LayoutDocEntry::FileConstantGroups:
1176 case LayoutDocEntry::FileIncludeGraph:
1177 case LayoutDocEntry::FileIncludedByGraph:
1178 case LayoutDocEntry::FileSourceLink:
1179 case LayoutDocEntry::FileInlineClasses:
1180 case LayoutDocEntry::GroupClasses:
1181 case LayoutDocEntry::GroupConcepts:
1182 case LayoutDocEntry::GroupModules:
1183 case LayoutDocEntry::GroupInlineClasses:
1184 case LayoutDocEntry::GroupNamespaces:
1185 case LayoutDocEntry::GroupDirs:
1186 case LayoutDocEntry::GroupNestedGroups:
1187 case LayoutDocEntry::GroupFiles:
1188 case LayoutDocEntry::GroupGraph:
1189 case LayoutDocEntry::GroupPageDocs:
1190 case LayoutDocEntry::ModuleExports:
1191 case LayoutDocEntry::ModuleClasses:
1192 case LayoutDocEntry::ModuleConcepts:
1193 case LayoutDocEntry::ModuleUsedFiles:
1194 case LayoutDocEntry::DirSubDirs:
1195 case LayoutDocEntry::DirFiles:
1196 case LayoutDocEntry::DirGraph:
1197 err("Internal inconsistency: member '{}' should not be part of "
1198 "LayoutDocManager::Namespace entry list\n",lde->entryToString());
1199 break;
1200 }
1201 }
1202
1203 //---------------------------------------- end flexible part -------------------------------
1204
1205 ol.endContents();
1206
1207 endFileWithNavPath(ol,this);
1208
1209 if (Config_getBool(SEPARATE_MEMBER_PAGES))
1210 {
1211 MemberList *allMemberList = getMemberList(MemberListType::AllMembersList());
1212 if (allMemberList) allMemberList->sort();
1213 writeMemberPages(ol);
1214 }
1215}
void writeNavigationPath(OutputList &ol) const override
void sort()
Definition memberlist.h:77
void writeMemberDocumentation(OutputList &ol, MemberListType lt, const DString &title)
void writeMemberPages(OutputList &ol) override
void writeMemberGroups(OutputList &ol)
void startMemberDeclarations(OutputList &ol)
void writeAuthorSection(OutputList &ol)
void endMemberDocumentation(OutputList &ol)
void writeInlineClasses(OutputList &ol)
void writeBriefDescription(OutputList &ol)
void writeIncludeFiles(OutputList &ol) const
void startMemberDocumentation(OutputList &ol)
void writeNamespaceDeclarations(OutputList &ol, const DString &title, bool isConstantGroup=false)
void endMemberDeclarations(OutputList &ol)
void writeConcepts(OutputList &ol, const DString &title)
void writeClassDeclarations(OutputList &ol, const DString &title, const ClassLinkedRefMap &d)
void addNamespaceAttributes(OutputList &ol)
void writeMemberDeclarations(OutputList &ol, MemberListType lt, const DString &title)
void writeDetailedDescription(OutputList &ol, const DString &title)
void endContents()
Definition outputlist.h:616
void endQuickIndices()
Definition outputlist.h:600
void startContents()
Definition outputlist.h:614
void endTitle(OutputList &ol, const DString &fileName, const DString &name)
Definition index.cpp:398
void endFileWithNavPath(OutputList &ol, const DefinitionMutable *d, bool showPageNavigation)
Definition index.cpp:452
void startTitle(OutputList &ol, const DString &fileName, const DefinitionMutable *def)
Definition index.cpp:388
void startFile(OutputList &ol, const DString &name, bool isSource, const DString &manName, const DString &title, HighlightedItem hli, bool additionalIndices, const DString &altSidebarName, int hierarchyLevel, const DString &allMembersFile)
Definition index.cpp:405
@ NamespaceVisible
Definition index.h:91
MemberListType type
Definition layout.h:117
DString title(SrcLangExt lang) const
Definition layout.cpp:1800
DString title(SrcLangExt lang) const
Definition layout.cpp:1812
DString title(SrcLangExt lang) const
Definition layout.cpp:1793
void addGroupListToTitle(OutputList &ol, const Definition *d)
Definition util.cpp:3930

References addGroupListToTitle(), addNamespaceAttributes(), Config_getBool, displayName(), OutputList::endContents(), endFileWithNavPath(), endMemberDeclarations(), endMemberDocumentation(), OutputList::endQuickIndices(), endTitle(), err, DefinitionMixin< NamespaceDefMutable >::getLanguage(), getMemberList(), DefinitionMixin< NamespaceDefMutable >::getOuterScope(), getOutputFileBase(), Doxygen::globalScope, LayoutDocManager::instance(), m_classes, m_exceptions, m_interfaces, m_structs, DefinitionMixin< NamespaceDefMutable >::name(), NamespaceVisible, OutputList::parseText(), MemberVector::sort(), OutputList::startContents(), startFile(), startMemberDeclarations(), startMemberDocumentation(), startTitle(), LayoutDocEntryMemberDecl::title(), LayoutDocEntryMemberDef::title(), LayoutDocEntrySection::title(), title(), LayoutDocEntryMemberDecl::type, LayoutDocEntryMemberDef::type, writeAuthorSection(), writeBriefDescription(), writeClassDeclarations(), writeConcepts(), writeDetailedDescription(), writeIncludeFiles(), writeInlineClasses(), writeMemberDeclarations(), writeMemberDocumentation(), writeMemberGroups(), writeMemberPages(), writeNamespaceDeclarations(), and DefinitionMixin< NamespaceDefMutable >::writeNavigationPath().

◆ writeIncludeFiles()

void NamespaceDefImpl::writeIncludeFiles ( OutputList & ol) const
private

Definition at line 457 of file namespacedef.cpp.

458{
459 if (m_incInfo.empty()) return;
460 ol.startParagraph();
461 for (const auto &kv : m_incInfo)
462 {
463 const IncludeInfo &incInfo = kv.second;
464 DString nm=incInfo.includeName.empty() ?
465 (incInfo.fileDef ?
466 incInfo.fileDef->docName() : DString()
467 ) :
468 incInfo.includeName;
469 if (!nm.empty())
470 {
471 ol.startTypewriter();
472 ol.docify(::includeStatement(SrcLangExt::Cpp,incInfo.kind));
473 ol.docify(::includeOpen(SrcLangExt::Cpp,incInfo.kind));
476 ol.docify(nm);
479 if (incInfo.fileDef)
480 {
481 ol.writeObjectLink(DString(),incInfo.fileDef->includeName(),DString(),nm);
482 }
483 else
484 {
485 ol.docify(nm);
486 }
488 ol.docify(::includeClose(SrcLangExt::Cpp,incInfo.kind));
489 ol.endTypewriter();
490 ol.lineBreak();
491 }
492 }
493 ol.endParagraph();
494}
virtual DString includeName() const =0
virtual const DString & docName() const =0
IncludeKind kind
Definition filedef.h:79
const FileDef * fileDef
Definition filedef.h:77
DString includeName
Definition filedef.h:78
void writeObjectLink(const DString &ref, const DString &file, const DString &anchor, const DString &name)
Definition outputlist.h:435
DString includeClose(SrcLangExt lang, IncludeKind kind)
Definition filedef.cpp:82
DString includeOpen(SrcLangExt lang, IncludeKind kind)
Definition filedef.cpp:69
DString includeStatement(SrcLangExt lang, IncludeKind kind)
Definition filedef.cpp:52

References OutputList::disable(), OutputList::disableAllBut(), OutputList::docify(), FileDef::docName(), DString::empty(), OutputList::enable(), OutputList::endParagraph(), OutputList::endTypewriter(), IncludeInfo::fileDef, Html, includeClose(), FileDef::includeName(), IncludeInfo::includeName, includeOpen(), includeStatement(), IncludeInfo::kind, OutputList::lineBreak(), m_incInfo, OutputList::popGeneratorState(), OutputList::pushGeneratorState(), OutputList::startParagraph(), OutputList::startTypewriter(), and OutputList::writeObjectLink().

Referenced by writeDocumentation().

◆ writeInlineClasses()

void NamespaceDefImpl::writeInlineClasses ( OutputList & ol)
private

Definition at line 892 of file namespacedef.cpp.

893{
895}
void writeDocumentation(OutputList &ol, const Definition *container=nullptr) const
Definition classlist.cpp:72

References m_classes, and ClassLinkedRefMap::writeDocumentation().

Referenced by writeDocumentation().

◆ writeMemberDeclarations()

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

Definition at line 1606 of file namespacedef.cpp.

1607{
1608 MemberList * ml = getMemberList(lt);
1609 if (ml) ml->writeDeclarations(ol,nullptr,this,nullptr,nullptr,nullptr,title,DString());
1610}
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(), title(), and MemberList::writeDeclarations().

Referenced by writeDocumentation().

◆ writeMemberDocumentation()

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

Definition at line 1612 of file namespacedef.cpp.

1613{
1614 MemberList * ml = getMemberList(lt);
1615 if (ml) ml->writeDocumentation(ol,displayName(),this,title,ml->listType().toLabel());
1616}
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 displayName(), getMemberList(), MemberList::listType(), title(), MemberListType::toLabel(), and MemberList::writeDocumentation().

Referenced by writeDocumentation().

◆ writeMemberGroups()

void NamespaceDefImpl::writeMemberGroups ( OutputList & ol)
private

Definition at line 903 of file namespacedef.cpp.

904{
905 /* write user defined member groups */
906 for (const auto &mg : m_memberGroups)
907 {
908 if (!mg->allMembersInSameSection() || !m_subGrouping)
909 {
910 mg->writeDeclarations(ol,nullptr,this,nullptr,nullptr,nullptr);
911 }
912 }
913}

References m_memberGroups, and m_subGrouping.

Referenced by writeDocumentation().

◆ writeMemberPages()

void NamespaceDefImpl::writeMemberPages ( OutputList & ol)
overridevirtual

Implements NamespaceDefMutable.

Definition at line 1217 of file namespacedef.cpp.

1218{
1219 ol.pushGeneratorState();
1221
1222 for (const auto &ml : m_memberLists)
1223 {
1224 if (ml->listType().isDocumentation())
1225 {
1226 ml->writeDocumentationPage(ol,displayName(),this);
1227 }
1228 }
1229 ol.popGeneratorState();
1230}

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

Referenced by writeDocumentation().

◆ writeNamespaceDeclarations()

void NamespaceDefImpl::writeNamespaceDeclarations ( OutputList & ol,
const DString & title,
bool isConstantGroup = false )
private

Definition at line 897 of file namespacedef.cpp.

899{
901}
void writeDeclaration(OutputList &ol, const DString &title, bool isConstantGroup=false, bool localName=false)

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

Referenced by writeDocumentation().

◆ writePageNavigation()

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

Reimplemented from DefinitionMixin< NamespaceDefMutable >.

Definition at line 999 of file namespacedef.cpp.

1000{
1001 ol.writePageOutline();
1002}
void writePageOutline()
Definition outputlist.h:612

References OutputList::writePageOutline().

◆ writeQuickMemberLinks()

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

Reimplemented from DefinitionMixin< NamespaceDefMutable >.

Definition at line 1232 of file namespacedef.cpp.

1233{
1234 bool createSubDirs=Config_getBool(CREATE_SUBDIRS);
1235
1236 ol.writeString(" <div class=\"navtab\">\n");
1237 ol.writeString(" <table>\n");
1238
1239 MemberList *allMemberList = getMemberList(MemberListType::AllMembersList());
1240 if (allMemberList)
1241 {
1242 for (const auto &md : *allMemberList)
1243 {
1244 if (md->getNamespaceDef()==this && md->isLinkable() && !md->isEnumValue())
1245 {
1246 if (md->isLinkableInProject())
1247 {
1248 DString fn = md->getOutputFileBase();
1250 if (md==currentMd) // selected item => highlight
1251 {
1252 ol.writeString(" <tr><td class=\"navtabHL\">");
1253 }
1254 else
1255 {
1256 ol.writeString(" <tr><td class=\"navtab\">");
1257 }
1258 ol.writeString("<span class=\"label\"><a ");
1259 ol.writeString("href=\"");
1260 if (createSubDirs) ol.writeString("../../");
1261 ol.writeString(fn+"#"+md->anchor());
1262 ol.writeString("\">");
1263 ol.writeString(convertToHtml(md->localName()));
1264 ol.writeString("</a></span>");
1265 ol.writeString("</td></tr>\n");
1266 }
1267 }
1268 }
1269 }
1270
1271 ol.writeString(" </table>\n");
1272 ol.writeString(" </div>\n");
1273}
void createSubDirs(const Dir &d)
Definition util.cpp:2978
DString convertToHtml(const DString &s, bool keepEntities)
Definition util.cpp:3300
void addHtmlExtensionIfMissing(DString &fName)
Definition util.cpp:3940

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

◆ writeSummaryLinks()

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

Reimplemented from DefinitionMixin< NamespaceDefMutable >.

Definition at line 927 of file namespacedef.cpp.

928{
931 bool first=true;
932 SrcLangExt lang = getLanguage();
933 for (const auto &lde : LayoutDocManager::instance().docEntries(LayoutDocManager::Namespace))
934 {
935 const LayoutDocEntrySection *ls = dynamic_cast<const LayoutDocEntrySection*>(lde.get());
936 if (lde->kind()==LayoutDocEntry::NamespaceClasses && m_classes.declVisible() && ls)
937 {
938 DString label = "nested-classes";
939 ol.writeSummaryLink(DString(),label,ls->title(lang),first);
940 first=false;
941 }
942 else if (lde->kind()==LayoutDocEntry::NamespaceInterfaces && m_interfaces.declVisible() && ls)
943 {
944 DString label = "interfaces";
945 ol.writeSummaryLink(DString(),label,ls->title(lang),first);
946 first=false;
947 }
948 else if (lde->kind()==LayoutDocEntry::NamespaceStructs && m_structs.declVisible() && ls)
949 {
950 DString label = "structs";
951 ol.writeSummaryLink(DString(),label,ls->title(lang),first);
952 first=false;
953 }
954 else if (lde->kind()==LayoutDocEntry::NamespaceExceptions && m_exceptions.declVisible() && ls)
955 {
956 DString label = "exceptions";
957 ol.writeSummaryLink(DString(),label,ls->title(lang),first);
958 first=false;
959 }
960 else if (lde->kind()==LayoutDocEntry::NamespaceNestedNamespaces && m_namespaces.declVisible(false) && ls)
961 {
962 DString label = "namespaces";
963 ol.writeSummaryLink(DString(),label,ls->title(lang),first);
964 first=false;
965 }
966 else if (lde->kind()==LayoutDocEntry::NamespaceNestedConstantGroups && m_namespaces.declVisible(true) && ls)
967 {
968 DString label = "constantgroups";
969 ol.writeSummaryLink(DString(),label,ls->title(lang),first);
970 first=false;
971 }
972 else if (lde->kind()==LayoutDocEntry::NamespaceConcepts && m_concepts.declVisible() && ls)
973 {
974 DString label = "concepts";
975 ol.writeSummaryLink(DString(),label,ls->title(lang),first);
976 first=false;
977 }
978 else if (lde->kind()== LayoutDocEntry::MemberDecl)
979 {
980 const LayoutDocEntryMemberDecl *lmd = dynamic_cast<const LayoutDocEntryMemberDecl*>(lde.get());
981 if (lmd)
982 {
983 MemberList * ml = getMemberList(lmd->type);
984 if (ml && ml->declVisible())
985 {
986 ol.writeSummaryLink(DString(),ml->listType().toLabel(),lmd->title(lang),first);
987 first=false;
988 }
989 }
990 }
991 }
992 if (!first)
993 {
994 ol.writeString(" </div>\n");
995 }
997}
bool declVisible(const ClassDef::CompoundType *filter=nullptr) const
Definition classlist.cpp:27
bool declVisible() const
bool declVisible() const
bool declVisible(bool isContantGroup) const
void writeSummaryLink(const DString &file, const DString &anchor, const DString &title, bool first)
Definition outputlist.h:610

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

◆ writeTagFile()

void NamespaceDefImpl::writeTagFile ( TextStream & tagFile)
overridevirtual

Implements NamespaceDefMutable.

Definition at line 660 of file namespacedef.cpp.

661{
662 DString fn = getOutputFileBase();
664 tagFile << " <compound kind=\"namespace\">\n";
665 tagFile << " <name>" << convertToXML(name()) << "</name>\n";
666 tagFile << " <filename>" << fn << "</filename>\n";
667 DString idStr = id();
668 if (!idStr.empty())
669 {
670 tagFile << " <clangid>" << convertToXML(idStr) << "</clangid>\n";
671 }
672 for (const auto &lde : LayoutDocManager::instance().docEntries(LayoutDocManager::Namespace))
673 {
674 switch (lde->kind())
675 {
676 case LayoutDocEntry::NamespaceNestedNamespaces:
677 {
678 for (const auto &nd : m_namespaces)
679 {
680 if (nd->isLinkableInProject())
681 {
682 tagFile << " <namespace>" << convertToXML(nd->name()) << "</namespace>\n";
683 }
684 }
685 }
686 break;
687 case LayoutDocEntry::NamespaceClasses:
688 {
690 }
691 break;
692 case LayoutDocEntry::NamespaceInterfaces:
693 {
695 }
696 break;
697 case LayoutDocEntry::NamespaceStructs:
698 {
700 }
701 break;
702 case LayoutDocEntry::NamespaceExceptions:
703 {
705 }
706 break;
707 case LayoutDocEntry::NamespaceConcepts:
708 {
709 writeConceptsToTagFile(tagFile);
710 }
711 break;
712 case LayoutDocEntry::MemberDecl:
713 {
714 const LayoutDocEntryMemberDecl *lmd = dynamic_cast<const LayoutDocEntryMemberDecl*>(lde.get());
715 if (lmd)
716 {
717 MemberList * ml = getMemberList(lmd->type);
718 if (ml)
719 {
720 ml->writeTagFile(tagFile);
721 }
722 }
723 }
724 break;
725 case LayoutDocEntry::MemberGroups:
726 {
727 for (const auto &mg : m_memberGroups)
728 {
729 mg->writeTagFile(tagFile);
730 }
731 }
732 break;
733 default:
734 break;
735 }
736 }
738 tagFile << " </compound>\n";
739}
void writeDocAnchorsToTagFile(TextStream &fs) const override
void writeTagFile(TextStream &, bool useQualifiedName=false, bool showNamespaceMembers=true)
void writeConceptsToTagFile(TextStream &)
void writeClassesToTagFile(TextStream &, const ClassLinkedRefMap &d)

References addHtmlExtensionIfMissing(), convertToXML(), DString::empty(), getMemberList(), getOutputFileBase(), DefinitionMixin< NamespaceDefMutable >::id(), LayoutDocManager::instance(), m_classes, m_exceptions, m_interfaces, m_memberGroups, m_namespaces, m_structs, DefinitionMixin< NamespaceDefMutable >::name(), LayoutDocEntryMemberDecl::type, writeClassesToTagFile(), writeConceptsToTagFile(), DefinitionMixin< NamespaceDefMutable >::writeDocAnchorsToTagFile(), and MemberList::writeTagFile().

Member Data Documentation

◆ fileName

DString NamespaceDefImpl::fileName
private

Definition at line 156 of file namespacedef.cpp.

Referenced by getOutputFileBase(), and setFileNameLocal().

◆ files

FileList NamespaceDefImpl::files
private

Definition at line 157 of file namespacedef.cpp.

Referenced by insertUsedFile().

◆ m_allMembers

MemberLinkedRefMap NamespaceDefImpl::m_allMembers
private

Definition at line 164 of file namespacedef.cpp.

Referenced by getMemberByName(), and insertMember().

◆ m_classes

◆ m_concepts

ConceptLinkedRefMap NamespaceDefImpl::m_concepts
private

◆ m_exceptions

ClassLinkedRefMap NamespaceDefImpl::m_exceptions
private

◆ m_incInfo

std::map<std::string, IncludeInfo> NamespaceDefImpl::m_incInfo
private

Definition at line 162 of file namespacedef.cpp.

Referenced by setIncludeFile(), and writeIncludeFiles().

◆ m_inline

bool NamespaceDefImpl::m_inline = false
private

Definition at line 177 of file namespacedef.cpp.

Referenced by isInline(), and setInline().

◆ m_innerCompounds

LinkedRefMap<const Definition> NamespaceDefImpl::m_innerCompounds
private

Definition at line 161 of file namespacedef.cpp.

Referenced by addInnerCompound(), findInnerCompound(), and numDocMembers().

◆ m_interfaces

ClassLinkedRefMap NamespaceDefImpl::m_interfaces
private

◆ m_isPublished

bool NamespaceDefImpl::m_isPublished = false
private

Definition at line 175 of file namespacedef.cpp.

Referenced by addNamespaceAttributes(), and NamespaceDefImpl().

◆ m_memberGroups

◆ m_memberLists

◆ m_namespaces

NamespaceLinkedRefMap NamespaceDefImpl::m_namespaces
private

◆ m_structs

ClassLinkedRefMap NamespaceDefImpl::m_structs
private

◆ m_subGrouping

bool NamespaceDefImpl::m_subGrouping = false
private

Definition at line 173 of file namespacedef.cpp.

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

◆ m_type

◆ m_usingDeclList

LinkedRefMap<const Definition> NamespaceDefImpl::m_usingDeclList
private

Definition at line 160 of file namespacedef.cpp.

Referenced by addUsingDeclaration(), findInnerCompound(), and getUsedDefinitions().

◆ m_usingDirList

LinkedRefMap<NamespaceDef> NamespaceDefImpl::m_usingDirList
private

◆ metaData

DString NamespaceDefImpl::metaData
private

Definition at line 176 of file namespacedef.cpp.

Referenced by setMetaData(), and writeBriefDescription().


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