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 NamespaceDefImpl:: { ... }  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:3956
DString convertNameToFile(const DString &name, bool allowDots, bool allowUnderscore)
Definition util.cpp:2864

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

1324{
1326 qualifiedName(),
1327 getLanguage()==SrcLangExt::Fortran ?
1328 theTranslator->trModule(true,true) :
1329 theTranslator->trNamespace(true,true),
1331 DString(),
1332 this
1333 );
1334 for (const auto &mg : m_memberGroups)
1335 {
1336 mg->addListReferences(this);
1337 }
1338 for (auto &ml : m_memberLists)
1339 {
1340 if (ml->listType().isDocumentation())
1341 {
1342 ml->addListReferences(this);
1343 }
1344 }
1345}
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 1515 of file namespacedef.cpp.

1516{
1517 bool sortBriefDocs = Config_getBool(SORT_BRIEF_DOCS);
1518 bool sortMemberDocs = Config_getBool(SORT_MEMBER_DOCS);
1520 ml->setNeedsSorting(
1521 (ml->listType().isDeclaration() && sortBriefDocs) ||
1522 (ml->listType().isDocumentation() && sortMemberDocs));
1523 ml->push_back(md);
1524
1525 if (ml->listType().isDeclaration())
1526 {
1527 MemberDefMutable *mdm = toMemberDefMutable(md);
1528 if (mdm)
1529 {
1530 mdm->setSectionList(this,ml.get());
1531 }
1532 }
1533}
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 998 of file namespacedef.cpp.

999{
1000 // UNO IDL constant groups may be published
1001 if (getLanguage()==SrcLangExt::IDL && isConstantGroup() && m_isPublished)
1002 {
1003 ol.pushGeneratorState();
1005 ol.startLabels();
1006 ol.writeLabel("published",false);
1007 ol.endLabels();
1008 ol.popGeneratorState();
1009 }
1010 else if (isExported())
1011 {
1012 ol.pushGeneratorState();
1014 ol.startLabels();
1015 ol.writeLabel("export",false);
1016 ol.endLabels();
1017 ol.popGeneratorState();
1018 }
1019}
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 1347 of file namespacedef.cpp.

1348{
1350 for (const auto &mg : m_memberGroups)
1351 {
1352 mg->addRequirementReferences(this);
1353 }
1354 for (auto &ml : m_memberLists)
1355 {
1356 if (ml->listType().isDocumentation())
1357 {
1358 ml->addRequirementReferences(this);
1359 }
1360 }
1361}
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 1295 of file namespacedef.cpp.

1296{
1297 m_usingDeclList.add(d->qualifiedName(),d);
1298}
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 1289 of file namespacedef.cpp.

1290{
1292 //printf("%s: NamespaceDefImpl::addUsingDirective: %s:%zu\n",qPrint(name()),qPrint(nd->qualifiedName()),m_usingDirList.size());
1293}
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 1368 of file namespacedef.cpp.

1369{
1370 if (visitedNamespaces.find(this)!=visitedNamespaces.end()) return; // already processed
1371 visitedNamespaces.insert(this);
1372
1373 LinkedRefMap<NamespaceDef> usingDirList = m_usingDirList;
1374 for (auto &nd : usingDirList)
1375 {
1376 NamespaceDefMutable *ndm = toNamespaceDefMutable(nd);
1377 if (ndm)
1378 {
1379 ndm->combineUsingRelations(visitedNamespaces);
1380 }
1381 }
1382
1383 for (auto &nd : usingDirList)
1384 {
1385 // add used namespaces of namespace nd to this namespace
1386 for (const auto &und : nd->getUsedNamespaces())
1387 {
1388 addUsingDirective(und);
1389 }
1390 // add used classes of namespace nd to this namespace
1391 for (const auto &ud : nd->getUsedDefinitions())
1392 {
1394 }
1395 }
1396}
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 1707 of file namespacedef.cpp.

1708{
1709 SrcLangExt lang = getLanguage();
1710 if (lang==SrcLangExt::Java)
1711 {
1712 return "package";
1713 }
1714 else if(lang==SrcLangExt::CSharp)
1715 {
1716 return "namespace";
1717 }
1718 else if (lang==SrcLangExt::Fortran)
1719 {
1720 return "module";
1721 }
1722 else if (lang==SrcLangExt::IDL)
1723 {
1724 if (isModule())
1725 {
1726 return "module";
1727 }
1728 else if (isConstantGroup())
1729 {
1730 return "constants";
1731 }
1732 else if (isLibrary())
1733 {
1734 return "library";
1735 }
1736 else
1737 {
1738 err_full(getDefFileName(),getDefLine(),"Internal inconsistency: namespace in IDL not module, library or constant group");
1739 }
1740 }
1741 return "namespace";
1742}
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 641 of file namespacedef.cpp.

642{
643 MemberList *allMemberList = getMemberList(MemberListType::AllMembersList());
644 if (allMemberList) allMemberList->setAnchors();
645}
void setAnchors()
MemberList * getMemberList(MemberListType lt) const override

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

◆ countMembers()

void NamespaceDefImpl::countMembers ( )
overridevirtual

Implements NamespaceDefMutable.

Definition at line 1269 of file namespacedef.cpp.

1270{
1271 for (auto &ml : m_memberLists)
1272 {
1273 ml->countDecMembers();
1274 ml->countDocMembers();
1275 }
1276 for (const auto &mg : m_memberGroups)
1277 {
1278 mg->countDecMembers();
1279 mg->countDocMembers();
1280 }
1281}

References m_memberGroups, and m_memberLists.

◆ countVisibleMembers()

int NamespaceDefImpl::countVisibleMembers ( ) const
overridevirtual

Implements NamespaceDef.

Definition at line 1398 of file namespacedef.cpp.

1399{
1400 int count=0;
1401 for (const auto &lde : LayoutDocManager::instance().docEntries(LayoutDocManager::Namespace))
1402 {
1403 if (lde->kind()==LayoutDocEntry::MemberDef)
1404 {
1405 const LayoutDocEntryMemberDef *lmd = dynamic_cast<const LayoutDocEntryMemberDef*>(lde.get());
1406 if (lmd)
1407 {
1408 MemberList *ml = getMemberList(lmd->type);
1409 if (ml)
1410 {
1411 for (const auto &md : *ml)
1412 {
1413 if (md->visibleInIndex())
1414 {
1415 count++;
1416 }
1417 }
1418 }
1419 }
1420 }
1421 }
1422 return count;
1423}
static LayoutDocManager & instance()
Returns a reference to this singleton.
Definition layout.cpp:1439
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 1363 of file namespacedef.cpp.

1364{
1365 return makeDisplayName(this,includeScope);
1366}
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 853 of file namespacedef.cpp.

854{
856}
void endMemberSections()
Definition outputlist.h:459

References OutputList::endMemberSections().

Referenced by writeDocumentation().

◆ endMemberDocumentation()

void NamespaceDefImpl::endMemberDocumentation ( OutputList & ol)
private

Definition at line 867 of file namespacedef.cpp.

868{
869 if (Config_getBool(SEPARATE_MEMBER_PAGES))
870 {
873 }
874}
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 1305 of file namespacedef.cpp.

1306{
1307 if (n==nullptr) return nullptr;
1308 const Definition *d = m_innerCompounds.find(n);
1309 if (d==nullptr)
1310 {
1311 if (!m_usingDirList.empty())
1312 {
1313 d = m_usingDirList.find(n);
1314 }
1315 if (d==nullptr && !m_usingDeclList.empty())
1316 {
1317 d = m_usingDeclList.find(n);
1318 }
1319 }
1320 return d;
1321}
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 1665 of file namespacedef.cpp.

1666{
1667 return m_allMembers.find(n);
1668}
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 1588 of file namespacedef.cpp.

1589{
1590 for (auto &ml : m_memberLists)
1591 {
1592 if (ml->listType()==lt)
1593 {
1594 return ml.get();
1595 }
1596 }
1597 return nullptr;
1598}

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

1301{
1302 return fileName;
1303}

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

648{
649 bool repeatBrief = Config_getBool(REPEAT_BRIEF);
650 return ((!briefDescription().empty() && repeatBrief) ||
651 !documentation().empty());
652}

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 addMemberToList(MemberListType::DecVarMembers(),md);
571 addMemberToList(MemberListType::DocVarMembers(),md);
572 break;
573 case MemberType::Function:
574 addMemberToList(MemberListType::DecFuncMembers(),md);
575 addMemberToList(MemberListType::DocFuncMembers(),md);
576 break;
577 case MemberType::Typedef:
578 addMemberToList(MemberListType::DecTypedefMembers(),md);
579 addMemberToList(MemberListType::DocTypedefMembers(),md);
580 break;
581 case MemberType::Sequence:
582 addMemberToList(MemberListType::DecSequenceMembers(),md);
583 addMemberToList(MemberListType::DocSequenceMembers(),md);
584 break;
585 case MemberType::Dictionary:
586 addMemberToList(MemberListType::DecDictionaryMembers(),md);
587 addMemberToList(MemberListType::DocDictionaryMembers(),md);
588 break;
589 case MemberType::Enumeration:
590 addMemberToList(MemberListType::DecEnumMembers(),md);
591 addMemberToList(MemberListType::DocEnumMembers(),md);
592 break;
593 case MemberType::EnumValue:
594 break;
595 case MemberType::Define:
596 addMemberToList(MemberListType::DecDefineMembers(),md);
597 addMemberToList(MemberListType::DocDefineMembers(),md);
598 break;
599 case MemberType::Property:
600 if (md->getLanguage() == SrcLangExt::Python)
601 {
602 addMemberToList(MemberListType::PropertyMembers(),md);
603 addMemberToList(MemberListType::Properties(),md);
604 break;
605 }
606 // fallthrough, explicitly no break here
607 default:
608 err("NamespaceDefImpl::insertMembers(): "
609 "member '{}' with unexpected type '{}' and class scope '{}' inserted in namespace scope '{}'!\n",
610 md->name(), md->memberTypeName(), md->getClassDef() ? md->getClassDef()->name() : "", name());
611 }
612 // if this is an inline namespace, then insert an alias of this member in the outer scope.
613 if (isInline())
614 {
615 Definition *outerScope = getOuterScope();
616 if (outerScope)
617 {
618 std::unique_ptr<MemberDef> aliasMd = createMemberDefAlias(outerScope,md);
619 if (outerScope->definitionType()==Definition::TypeNamespace)
620 {
621 NamespaceDefMutable *ndm = toNamespaceDefMutable(outerScope);
622 if (ndm)
623 {
624 ndm->insertMember(aliasMd.get());
625 }
626 }
627 else if (outerScope->definitionType()==Definition::TypeFile)
628 {
629 toFileDef(outerScope)->insertMember(aliasMd.get());
630 }
631 if (aliasMd)
632 {
633 MemberName *mn = Doxygen::functionNameLinkedMap->add(md->name());
634 mn->push_back(std::move(aliasMd));
635 }
636 }
637 }
638 }
639}
virtual SrcLangExt getLanguage() const =0
Returns the programming language this definition was written in.
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 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:2027
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(), 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::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 1660 of file namespacedef.cpp.

1661{
1662 return isLinkableInProject() || isReference();
1663}
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 1641 of file namespacedef.cpp.

1642{
1643 size_t i = name().rfind("::");
1644 if (i==DString::npos) i=0; else i+=2;
1645 bool extractAnonNs = Config_getBool(EXTRACT_ANON_NSPACES);
1646 bool hideUndoc = Config_getBool(HIDE_UNDOC_NAMESPACES);
1647 if (extractAnonNs && // extract anonymous ns
1648 name().mid(i,20)=="anonymous_namespace{" // correct prefix
1649 ) // not disabled by config
1650 {
1651 return true;
1652 }
1653 return !name().empty() && name().at(i)!='@' && // not anonymous
1654 (hasDocumentation() || !hideUndoc || getLanguage()==SrcLangExt::CSharp) && // documented
1655 !isReference() && // not an external reference
1656 !isHidden() && // not hidden
1657 !isArtificial(); // or artificial
1658}
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 1635 of file namespacedef.cpp.

1636{
1637 bool allExternals = Config_getBool(ALLEXTERNALS);
1638 return allExternals || hasNonReferenceNestedNamespaceRec(this,0) || isLinkable();
1639}
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 1283 of file namespacedef.cpp.

1284{
1285 MemberList *allMemberList = getMemberList(MemberListType::AllMembersList());
1286 return (allMemberList ? allMemberList->numDocMembers() : 0) + static_cast<int>(m_innerCompounds.size());
1287}
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 1744 of file namespacedef.cpp.

1745{
1746 metaData = m;
1747}

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

1554{
1555 for (auto &ml : m_memberLists)
1556 {
1557 if (ml->needsSorting()) { ml->sort(); ml->setNeedsSorting(false); }
1558 }
1559
1560 auto classComp = [](const ClassLinkedRefMap::Ptr &c1,const ClassLinkedRefMap::Ptr &c2)
1561 {
1562 return Config_getBool(SORT_BY_SCOPE_NAME) ?
1563 dstricmp_sort(c1->name(), c2->name())<0 :
1564 dstricmp_sort(c1->className(), c2->className())<0;
1565 };
1566
1567 if (needsSorting(m_classes)) std::stable_sort(m_classes.begin(), m_classes.end(), classComp);
1568 if (needsSorting(m_interfaces)) std::stable_sort(m_interfaces.begin(),m_interfaces.end(),classComp);
1569 if (needsSorting(m_structs)) std::stable_sort(m_structs.begin(), m_structs.end(), classComp);
1570 if (needsSorting(m_exceptions)) std::stable_sort(m_exceptions.begin(),m_exceptions.end(),classComp);
1571
1572 auto conceptComp = [](const ConceptLinkedRefMap::Ptr &c1,const ConceptLinkedRefMap::Ptr &c2)
1573 {
1574 return dstricmp_sort(c1->name(),c2->name())<0;
1575 };
1576
1577 if (needsSorting(m_concepts)) std::stable_sort(m_concepts.begin(), m_concepts.end(), conceptComp);
1578
1579 auto namespaceComp = [](const NamespaceLinkedRefMap::Ptr &n1,const NamespaceLinkedRefMap::Ptr &n2)
1580 {
1581 return dstricmp_sort(n1->name(),n2->name())<0;
1582 };
1583
1584 if (needsSorting(m_namespaces)) std::stable_sort(m_namespaces.begin(),m_namespaces.end(),namespaceComp);
1585
1586}
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 848 of file namespacedef.cpp.

849{
851}
void startMemberSections()
Definition outputlist.h:457

References OutputList::startMemberSections().

Referenced by writeDocumentation().

◆ startMemberDocumentation()

void NamespaceDefImpl::startMemberDocumentation ( OutputList & ol)
private

Definition at line 858 of file namespacedef.cpp.

859{
860 if (Config_getBool(SEPARATE_MEMBER_PAGES))
861 {
864 }
865}
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 1670 of file namespacedef.cpp.

1671{
1672 DString pageTitle;
1673 SrcLangExt lang = getLanguage();
1674
1675 auto getReferenceTitle = [this](std::function<DString()> translateFunc) -> DString
1676 {
1677 return Config_getBool(HIDE_COMPOUND_REFERENCE) ? displayName() : translateFunc();
1678 };
1679
1680 if (lang==SrcLangExt::Java)
1681 {
1682 pageTitle = theTranslator->trPackage(displayName());
1683 }
1684 else if (lang==SrcLangExt::Fortran || lang==SrcLangExt::Slice)
1685 {
1686 pageTitle = getReferenceTitle([this](){
1688 });
1689 }
1690 else if (lang==SrcLangExt::IDL)
1691 {
1692 pageTitle = getReferenceTitle([this](){
1693 return isConstantGroup()
1696 });
1697 }
1698 else
1699 {
1700 pageTitle = getReferenceTitle([this](){
1702 });
1703 }
1704 return pageTitle;
1705}
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 909 of file namespacedef.cpp.

910{
911 // write Author section (Man only)
914 ol.startGroupHeader();
915 ol.parseText(theTranslator->trAuthor(true,true));
916 ol.endGroupHeader();
919}
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 788 of file namespacedef.cpp.

789{
791 {
792 auto parser { createDocParser() };
793 auto ast { validatingParseDoc(*parser.get(),
794 briefFile(),
795 briefLine(),
796 this,
797 nullptr,
799 DocOptions()
800 .setIndexWords(true)
801 .setSingleLine(true))
802 };
803 if (!ast->empty())
804 {
805 ol.startParagraph();
808 ol.writeString(" - ");
810 ol.writeDoc(ast.get(),this,nullptr);
813 ol.writeString(" \n");
815
817 {
819 ol.startTextLink(getOutputFileBase(),"details");
821 ol.endTextLink();
822 }
824 ol.endParagraph();
825 }
826 }
827
828 // Write a summary of the Slice definition including metadata.
829 if (getLanguage() == SrcLangExt::Slice)
830 {
831 ol.startParagraph();
832 ol.startTypewriter();
833 if (!metaData.empty())
834 {
835 ol.docify(metaData);
836 ol.lineBreak();
837 }
838 ol.docify("module ");
839 ol.docify(stripScope(name()));
840 ol.docify(" { ... }");
841 ol.endTypewriter();
842 ol.endParagraph();
843 }
844
845 ol.writeSynopsis();
846}
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:3110

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

877{
878 d.writeDeclaration(ol,nullptr,title,true);
879}
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 1021 of file namespacedef.cpp.

1022{
1023 for (const auto &cd : list)
1024 {
1025 if (cd->isLinkableInProject())
1026 {
1027 tagFile << " <class kind=\"" << cd->compoundTypeString()
1028 << "\">" << convertToXML(cd->name()) << "</class>\n";
1029 }
1030 }
1031}
DString convertToXML(const DString &s, bool keepEntities, const bool citeEntry)
Definition util.cpp:3233

References convertToXML().

Referenced by writeTagFile().

◆ writeConcepts()

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

Definition at line 881 of file namespacedef.cpp.

882{
884}
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 1033 of file namespacedef.cpp.

1034{
1035 for (const auto &cd : m_concepts)
1036 {
1037 if (cd->isLinkableInProject())
1038 {
1039 tagFile << " <concept>" << convertToXML(cd->name()) << "</concept>\n";
1040 }
1041 }
1042}

References convertToXML(), and m_concepts.

Referenced by writeTagFile().

◆ writeDetailedDescription()

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

Definition at line 735 of file namespacedef.cpp.

736{
738 {
741 ol.writeRuler();
745 ol.writeAnchor(DString(),"details");
747 ol.startGroupHeader("details");
748 ol.parseText(title);
749 ol.endGroupHeader();
750
751 ol.startTextBlock();
752 if (!briefDescription().empty() && Config_getBool(REPEAT_BRIEF))
753 {
755 briefLine(),
756 this,
757 nullptr,
759 DocOptions());
760 }
761 if (!briefDescription().empty() && Config_getBool(REPEAT_BRIEF) &&
762 !documentation().empty())
763 {
767 ol.enableAll();
770 ol.writeString("\n\n");
772 }
773 if (!documentation().empty())
774 {
775 ol.generateDoc(docFile(),
776 docLine(),
777 this,
778 nullptr,
779 documentation()+"\n",
780 DocOptions()
781 .setIndexWords(true));
782 }
784 ol.endTextBlock();
785 }
786}
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 1044 of file namespacedef.cpp.

1045{
1046 bool generateTreeView = Config_getBool(GENERATE_TREEVIEW);
1047 //bool outputJava = Config_getBool(OPTIMIZE_OUTPUT_JAVA);
1048 //bool fortranOpt = Config_getBool(OPTIMIZE_FOR_FORTRAN);
1049
1050 DString pageTitle = title();
1051 startFile(ol,getOutputFileBase(),false,name(),pageTitle,HighlightedItem::NamespaceVisible,!generateTreeView);
1052
1053 if (!generateTreeView)
1054 {
1056 {
1058 }
1059 ol.endQuickIndices();
1060 }
1061
1062 startTitle(ol,getOutputFileBase(),this);
1063 ol.parseText(pageTitle);
1064 addGroupListToTitle(ol,this);
1067 ol.startContents();
1068
1069 //---------------------------------------- start flexible part -------------------------------
1070
1071 SrcLangExt lang = getLanguage();
1072 for (const auto &lde : LayoutDocManager::instance().docEntries(LayoutDocManager::Namespace))
1073 {
1074 const LayoutDocEntrySection *ls = dynamic_cast<const LayoutDocEntrySection*>(lde.get());
1075 switch (lde->kind())
1076 {
1077 case LayoutDocEntry::BriefDesc:
1079 break;
1080 case LayoutDocEntry::MemberDeclStart:
1082 break;
1083 case LayoutDocEntry::NamespaceClasses:
1084 {
1085 if (ls) writeClassDeclarations(ol,ls->title(lang),m_classes);
1086 }
1087 break;
1088 case LayoutDocEntry::NamespaceInterfaces:
1089 {
1090 if (ls) writeClassDeclarations(ol,ls->title(lang),m_interfaces);
1091 }
1092 break;
1093 case LayoutDocEntry::NamespaceStructs:
1094 {
1095 if (ls) writeClassDeclarations(ol,ls->title(lang),m_structs);
1096 }
1097 break;
1098 case LayoutDocEntry::NamespaceExceptions:
1099 {
1100 if (ls) writeClassDeclarations(ol,ls->title(lang),m_exceptions);
1101 }
1102 break;
1103 case LayoutDocEntry::NamespaceConcepts:
1104 {
1105 if (ls) writeConcepts(ol,ls->title(lang));
1106 }
1107 break;
1108 case LayoutDocEntry::NamespaceNestedNamespaces:
1109 {
1110 if (ls) writeNamespaceDeclarations(ol,ls->title(lang),false);
1111 }
1112 break;
1113 case LayoutDocEntry::NamespaceNestedConstantGroups:
1114 {
1115 if (ls) writeNamespaceDeclarations(ol,ls->title(lang),true);
1116 }
1117 break;
1118 case LayoutDocEntry::MemberGroups:
1120 break;
1121 case LayoutDocEntry::MemberDecl:
1122 {
1123 const LayoutDocEntryMemberDecl *lmd = dynamic_cast<const LayoutDocEntryMemberDecl*>(lde.get());
1124 if (lmd) writeMemberDeclarations(ol,lmd->type,lmd->title(lang));
1125 }
1126 break;
1127 case LayoutDocEntry::MemberDeclEnd:
1129 break;
1130 case LayoutDocEntry::DetailedDesc:
1131 {
1132 if (ls) writeDetailedDescription(ol,ls->title(lang));
1133 }
1134 break;
1135 case LayoutDocEntry::MemberDefStart:
1137 break;
1138 case LayoutDocEntry::NamespaceInlineClasses:
1140 break;
1141 case LayoutDocEntry::MemberDef:
1142 {
1143 const LayoutDocEntryMemberDef *lmd = dynamic_cast<const LayoutDocEntryMemberDef*>(lde.get());
1144 if (lmd) writeMemberDocumentation(ol,lmd->type,lmd->title(lang));
1145 }
1146 break;
1147 case LayoutDocEntry::MemberDefEnd:
1149 break;
1150 case LayoutDocEntry::AuthorSection:
1152 break;
1153 case LayoutDocEntry::Includes:
1155 break;
1156 case LayoutDocEntry::ClassInheritanceGraph:
1157 case LayoutDocEntry::ClassNestedClasses:
1158 case LayoutDocEntry::ClassCollaborationGraph:
1159 case LayoutDocEntry::ClassAllMembersLink:
1160 case LayoutDocEntry::ClassUsedFiles:
1161 case LayoutDocEntry::ClassInlineClasses:
1162 case LayoutDocEntry::ConceptDefinition:
1163 case LayoutDocEntry::FileClasses:
1164 case LayoutDocEntry::FileConcepts:
1165 case LayoutDocEntry::FileInterfaces:
1166 case LayoutDocEntry::FileStructs:
1167 case LayoutDocEntry::FileExceptions:
1168 case LayoutDocEntry::FileNamespaces:
1169 case LayoutDocEntry::FileConstantGroups:
1170 case LayoutDocEntry::FileIncludeGraph:
1171 case LayoutDocEntry::FileIncludedByGraph:
1172 case LayoutDocEntry::FileSourceLink:
1173 case LayoutDocEntry::FileInlineClasses:
1174 case LayoutDocEntry::GroupClasses:
1175 case LayoutDocEntry::GroupConcepts:
1176 case LayoutDocEntry::GroupModules:
1177 case LayoutDocEntry::GroupInlineClasses:
1178 case LayoutDocEntry::GroupNamespaces:
1179 case LayoutDocEntry::GroupDirs:
1180 case LayoutDocEntry::GroupNestedGroups:
1181 case LayoutDocEntry::GroupFiles:
1182 case LayoutDocEntry::GroupGraph:
1183 case LayoutDocEntry::GroupPageDocs:
1184 case LayoutDocEntry::ModuleExports:
1185 case LayoutDocEntry::ModuleClasses:
1186 case LayoutDocEntry::ModuleConcepts:
1187 case LayoutDocEntry::ModuleUsedFiles:
1188 case LayoutDocEntry::DirSubDirs:
1189 case LayoutDocEntry::DirFiles:
1190 case LayoutDocEntry::DirGraph:
1191 err("Internal inconsistency: member '{}' should not be part of "
1192 "LayoutDocManager::Namespace entry list\n",lde->entryToString());
1193 break;
1194 }
1195 }
1196
1197 //---------------------------------------- end flexible part -------------------------------
1198
1199 ol.endContents();
1200
1201 endFileWithNavPath(ol,this);
1202
1203 if (Config_getBool(SEPARATE_MEMBER_PAGES))
1204 {
1205 MemberList *allMemberList = getMemberList(MemberListType::AllMembersList());
1206 if (allMemberList) allMemberList->sort();
1207 writeMemberPages(ol);
1208 }
1209}
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:1790
DString title(SrcLangExt lang) const
Definition layout.cpp:1802
DString title(SrcLangExt lang) const
Definition layout.cpp:1783
void addGroupListToTitle(OutputList &ol, const Definition *d)
Definition util.cpp:3922

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

887{
889}
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 1600 of file namespacedef.cpp.

1601{
1602 MemberList * ml = getMemberList(lt);
1603 if (ml) ml->writeDeclarations(ol,nullptr,this,nullptr,nullptr,nullptr,title,DString());
1604}
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 1606 of file namespacedef.cpp.

1607{
1608 MemberList * ml = getMemberList(lt);
1609 if (ml) ml->writeDocumentation(ol,displayName(),this,title,ml->listType().toLabel());
1610}
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 897 of file namespacedef.cpp.

898{
899 /* write user defined member groups */
900 for (const auto &mg : m_memberGroups)
901 {
902 if (!mg->allMembersInSameSection() || !m_subGrouping)
903 {
904 mg->writeDeclarations(ol,nullptr,this,nullptr,nullptr,nullptr);
905 }
906 }
907}

References m_memberGroups, and m_subGrouping.

Referenced by writeDocumentation().

◆ writeMemberPages()

void NamespaceDefImpl::writeMemberPages ( OutputList & ol)
overridevirtual

Implements NamespaceDefMutable.

Definition at line 1211 of file namespacedef.cpp.

1212{
1213 ol.pushGeneratorState();
1215
1216 for (const auto &ml : m_memberLists)
1217 {
1218 if (ml->listType().isDocumentation())
1219 {
1220 ml->writeDocumentationPage(ol,displayName(),this);
1221 }
1222 }
1223 ol.popGeneratorState();
1224}

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

893{
895}
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 993 of file namespacedef.cpp.

994{
995 ol.writePageOutline();
996}
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 1226 of file namespacedef.cpp.

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

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

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

655{
656 DString fn = getOutputFileBase();
658 tagFile << " <compound kind=\"namespace\">\n";
659 tagFile << " <name>" << convertToXML(name()) << "</name>\n";
660 tagFile << " <filename>" << fn << "</filename>\n";
661 DString idStr = id();
662 if (!idStr.empty())
663 {
664 tagFile << " <clangid>" << convertToXML(idStr) << "</clangid>\n";
665 }
666 for (const auto &lde : LayoutDocManager::instance().docEntries(LayoutDocManager::Namespace))
667 {
668 switch (lde->kind())
669 {
670 case LayoutDocEntry::NamespaceNestedNamespaces:
671 {
672 for (const auto &nd : m_namespaces)
673 {
674 if (nd->isLinkableInProject())
675 {
676 tagFile << " <namespace>" << convertToXML(nd->name()) << "</namespace>\n";
677 }
678 }
679 }
680 break;
681 case LayoutDocEntry::NamespaceClasses:
682 {
684 }
685 break;
686 case LayoutDocEntry::NamespaceInterfaces:
687 {
689 }
690 break;
691 case LayoutDocEntry::NamespaceStructs:
692 {
694 }
695 break;
696 case LayoutDocEntry::NamespaceExceptions:
697 {
699 }
700 break;
701 case LayoutDocEntry::NamespaceConcepts:
702 {
703 writeConceptsToTagFile(tagFile);
704 }
705 break;
706 case LayoutDocEntry::MemberDecl:
707 {
708 const LayoutDocEntryMemberDecl *lmd = dynamic_cast<const LayoutDocEntryMemberDecl*>(lde.get());
709 if (lmd)
710 {
711 MemberList * ml = getMemberList(lmd->type);
712 if (ml)
713 {
714 ml->writeTagFile(tagFile);
715 }
716 }
717 }
718 break;
719 case LayoutDocEntry::MemberGroups:
720 {
721 for (const auto &mg : m_memberGroups)
722 {
723 mg->writeTagFile(tagFile);
724 }
725 }
726 break;
727 default:
728 break;
729 }
730 }
732 tagFile << " </compound>\n";
733}
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

enum { ... } NamespaceDefImpl::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: