Doxygen
Loading...
Searching...
No Matches
GroupDefImpl Class Reference
Inheritance diagram for GroupDefImpl:
Collaboration diagram for GroupDefImpl:

Public Member Functions

 GroupDefImpl (const QCString &fileName, int line, const QCString &name, const QCString &title, const QCString &refFileName=QCString())
 ~GroupDefImpl () override
DefType definitionType () const override
CodeSymbolType codeSymbolType () const override
QCString getOutputFileBase () const override
QCString anchor () const override
QCString displayName (bool=TRUE) const override
QCString groupTitle () const override
void setGroupTitle (const QCString &newtitle) override
bool hasGroupTitle () const override
void addFile (FileDef *def) override
bool containsFile (const FileDef *def) const override
bool addClass (ClassDef *def) override
bool addConcept (ConceptDef *def) override
bool addModule (ModuleDef *def) override
bool addNamespace (NamespaceDef *def) override
void addGroup (GroupDef *def) override
void addPage (PageDef *def) override
void addExample (PageDef *def) override
void addDir (DirDef *dd) override
bool insertMember (MemberDef *def, bool docOnly=FALSE) override
void removeMember (MemberDef *md) override
bool findGroup (const GroupDef *def) const override
void writeDocumentation (OutputList &ol) override
void writeMemberPages (OutputList &ol, int hierarchyLevel) override
void writeQuickMemberLinks (OutputList &ol, const MemberDef *currentMd) const override
void writeTagFile (TextStream &) override
size_t numDocMembers () const override
bool isLinkableInProject () const override
bool isLinkable () const override
bool isVisibleInHierarchy () const override
bool isASubGroup () const override
void computeAnchors () override
void countMembers () override
void addMembersToMemberGroup () override
void distributeMemberGroupDocumentation () override
void findSectionsInDocumentation () override
void addListReferences () override
void sortMemberLists () override
bool subGrouping () const override
void setGroupScope (Definition *d) override
DefinitiongetGroupScope () const override
MemberListgetMemberList (MemberListType lt) const override
const MemberListsgetMemberLists () const override
const MemberGroupListgetMemberGroups () const override
const FileListgetFiles () const override
const ClassLinkedRefMapgetClasses () const override
const ConceptLinkedRefMapgetConcepts () const override
const ModuleLinkedRefMapgetModules () const override
const NamespaceLinkedRefMapgetNamespaces () const override
const GroupListgetSubGroups () const override
const PageLinkedRefMapgetPages () const override
const DirListgetDirs () const override
const PageLinkedRefMapgetExamples () const override
bool hasDetailedDescription () const override
void sortSubGroups () override
void writeSummaryLinks (OutputList &ol) const override
void writePageNavigation (OutputList &ol) const override
bool hasGroupGraph () const override
void overrideGroupGraph (bool e) override
Public Member Functions inherited from DefinitionMixin< GroupDef >
 DefinitionMixin (const QCString &defFileName, int defLine, int defColumn, const QCString &name, const char *b=nullptr, const char *d=nullptr, bool isSymbol=TRUE)
DefinitionMixinoperator= (const DefinitionMixin &other)
 ~DefinitionMixin () override=default
bool isAlias () const override
const QCStringname () const override
bool isAnonymous () const override
const QCStringlocalName () const override
QCString qualifiedName () const override
QCString symbolName () const override
QCString getSourceFileBase () const override
QCString getSourceAnchor () const override
QCString documentation () const override
int docLine () const override
QCString docFile () const override
QCString briefDescription (bool abbreviate=FALSE) const override
QCString briefDescriptionAsTooltip () const override
int briefLine () const override
QCString inbodyDocumentation () const override
QCString inbodyFile () const override
int inbodyLine () const override
QCString briefFile () const override
QCString getDefFileName () const override
QCString getDefFileExtension () const override
int getDefLine () const override
int getDefColumn () const override
bool hasDocumentation () const override
bool hasUserDocumentation () const override
bool isVisibleInProject () const override
bool isVisible () const override
bool isHidden () const override
bool isArtificial () const override
bool isExported () const override
QCString getReference () const override
bool isReference () const override
QCString externalReference (const QCString &relPath) const override
int getStartDefLine () const override
int getStartBodyLine () const override
int getEndBodyLine () const override
const FileDefgetBodyDef () const override
SrcLangExt getLanguage () const override
const GroupListpartOfGroups () const override
bool isLinkableViaGroup () const override
const RefItemVectorxrefListItems () const override
const DefinitionfindInnerCompound (const QCString &name) const override
DefinitiongetOuterScope () const override
const MemberVectorgetReferencesMembers () const override
const MemberVectorgetReferencedByMembers () const override
bool hasSections () const override
bool hasSources () const override
bool hasBriefDescription () const override
QCString id () const override
const SectionRefsgetSectionRefs () const override
void setName (const QCString &name) override
void setId (const QCString &name) override
void setDefFile (const QCString &df, int defLine, int defColumn) override
void setDocumentation (const QCString &doc, const QCString &docFile, int docLine, bool stripWhiteSpace=TRUE) override
void setBriefDescription (const QCString &brief, const QCString &briefFile, int briefLine) override
void setInbodyDocumentation (const QCString &doc, const QCString &docFile, int docLine) override
void setReference (const QCString &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 QCString &sourceRefName) override
void addSourceReferences (MemberDef *md, const QCString &sourceRefName) override
void setRefItems (const RefItemVector &sli) override
void mergeRefItems (Definition *def) override
void mergeReferences (const Definition *other) override
void mergeReferencedBy (const Definition *other) override
void addInnerCompound (Definition *def) override
void setOuterScope (Definition *def) override
void setHidden (bool b) override
void setArtificial (bool b) override
void setExported (bool b) override
void setLanguage (SrcLangExt lang) override
void writeSourceDef (OutputList &ol) const override
void writeInlineCode (OutputList &ol, const QCString &scopeName) const override
bool hasSourceRefs () const override
bool hasSourceReffedBy () const override
void writeSourceRefs (OutputList &ol, const QCString &scopeName) const override
void writeSourceReffedBy (OutputList &ol, const QCString &scopeName) const override
void makePartOfGroup (GroupDef *gd) override
void writeNavigationPath (OutputList &ol) const override
QCString navigationPathAsString () const override
QCString pathFragment () const override
void writeDocAnchorsToTagFile (TextStream &fs) const override
void setLocalName (const QCString &name) override
void writeToc (OutputList &ol, const LocalToc &lt) const override
void computeTooltip () override
void _setSymbolName (const QCString &name) override
QCString _symbolName () const override

Private Member Functions

void addMemberListToGroup (MemberList *, bool(MemberDef::*)() const)
void addMemberToList (MemberListType lt, MemberDef *md)
void writeMemberDeclarations (OutputList &ol, MemberListType lt, const QCString &title)
void writeMemberDocumentation (OutputList &ol, MemberListType lt, const QCString &title)
void removeMemberFromList (MemberListType lt, MemberDef *md)
void writeGroupGraph (OutputList &ol)
void writeFiles (OutputList &ol, const QCString &title)
void writeNamespaces (OutputList &ol, const QCString &title)
void writeNestedGroups (OutputList &ol, const QCString &title)
void writeDirs (OutputList &ol, const QCString &title)
void writeClasses (OutputList &ol, const QCString &title)
void writeConcepts (OutputList &ol, const QCString &title)
void writeModules (OutputList &ol, const QCString &title)
void writeInlineClasses (OutputList &ol)
void writePageDocumentation (OutputList &ol)
void writeDetailedDescription (OutputList &ol, const QCString &title)
void writeBriefDescription (OutputList &ol)
void writeMemberGroups (OutputList &ol)
void startMemberDeclarations (OutputList &ol)
void endMemberDeclarations (OutputList &ol)
void startMemberDocumentation (OutputList &ol)
void endMemberDocumentation (OutputList &ol)
void writeAuthorSection (OutputList &ol)
void updateLanguage (const Definition *)
void setGroupTitleLocal (const QCString &title)

Private Attributes

QCString m_title
bool m_titleSet
QCString m_fileName
FileList m_fileList
ClassLinkedRefMap m_classes
ConceptLinkedRefMap m_concepts
ModuleLinkedRefMap m_modules
NamespaceLinkedRefMap m_namespaces
GroupList m_groups
PageLinkedRefMap m_pages
PageLinkedRefMap m_examples
DirList m_dirList
MemberList m_allMemberList
MemberNameInfoLinkedMap m_allMemberNameInfoLinkedMap
Definitionm_groupScope
MemberLists m_memberLists
MemberGroupList m_memberGroups
bool m_subGrouping
bool m_hasGroupGraph = 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 53 of file groupdef.cpp.

Constructor & Destructor Documentation

◆ GroupDefImpl()

GroupDefImpl::GroupDefImpl ( const QCString & fileName,
int line,
const QCString & name,
const QCString & title,
const QCString & refFileName = QCString() )

Definition at line 184 of file groupdef.cpp.

185 : DefinitionMixin(df,dl,1,na),
186 m_allMemberList(MemberListType::AllMembersList(),MemberListContainer::Group)
187{
188 if (!refFileName.isEmpty())
189 {
190 m_fileName=stripExtension(refFileName);
191 }
192 else
193 {
194 m_fileName = convertNameToFile(QCString("group_")+na);
195 }
197
198 //visited = 0;
199 m_groupScope = nullptr;
200 m_subGrouping=Config_getBool(SUBGROUPING);
201 m_hasGroupGraph=Config_getBool(GROUP_GRAPHS);
202}
DefinitionMixin(const QCString &defFileName, int defLine, int defColumn, const QCString &name, const char *b=nullptr, const char *d=nullptr, bool isSymbol=TRUE)
void setGroupTitleLocal(const QCString &title)
Definition groupdef.cpp:208
MemberList m_allMemberList
Definition groupdef.cpp:165
QCString m_fileName
Definition groupdef.cpp:155
bool m_subGrouping
Definition groupdef.cpp:170
Definition * m_groupScope
Definition groupdef.cpp:167
bool m_hasGroupGraph
Definition groupdef.cpp:171
bool isEmpty() const
Returns TRUE iff the string is empty.
Definition qcstring.h:163
#define Config_getBool(name)
Definition config.h:33
QCString stripExtension(const QCString &fName)
Definition util.cpp:4865
QCString convertNameToFile(const QCString &name, bool allowDots, bool allowUnderscore)
Definition util.cpp:3434

References Config_getBool, DefinitionMixin< GroupDef >::DefinitionMixin(), Group, QCString::isEmpty(), m_allMemberList, m_groupScope, m_hasGroupGraph, m_subGrouping, and setGroupTitleLocal().

◆ ~GroupDefImpl()

GroupDefImpl::~GroupDefImpl ( )
override

Definition at line 204 of file groupdef.cpp.

205{
206}

Member Function Documentation

◆ addClass()

bool GroupDefImpl::addClass ( ClassDef * def)
overridevirtual

Implements GroupDef.

Definition at line 276 of file groupdef.cpp.

277{
278 if (cd->isHidden()) return FALSE;
279 updateLanguage(cd);
280 QCString qn = cd->name();
281 if (m_classes.find(qn)==nullptr)
282 {
283 m_classes.add(qn,cd);
284 return TRUE;
285 }
286 return FALSE;
287}
void updateLanguage(const Definition *)
ClassLinkedRefMap m_classes
Definition groupdef.cpp:157
#define TRUE
Definition qcstring.h:37
#define FALSE
Definition qcstring.h:34

References FALSE, Definition::isHidden(), m_classes, Definition::name(), TRUE, and updateLanguage().

◆ addConcept()

bool GroupDefImpl::addConcept ( ConceptDef * def)
overridevirtual

Implements GroupDef.

Definition at line 289 of file groupdef.cpp.

290{
291 if (cd->isHidden()) return FALSE;
292 QCString qn = cd->name();
293 if (m_concepts.find(qn)==nullptr)
294 {
295 m_concepts.add(qn,cd);
296 return TRUE;
297 }
298 return FALSE;
299}
ConceptLinkedRefMap m_concepts
Definition groupdef.cpp:158

References FALSE, Definition::isHidden(), m_concepts, Definition::name(), and TRUE.

◆ addDir()

void GroupDefImpl::addDir ( DirDef * dd)
overridevirtual

Implements GroupDef.

Definition at line 326 of file groupdef.cpp.

327{
328 if (def->isHidden()) return;
329 m_dirList.push_back(def);
330}
DirList m_dirList
Definition groupdef.cpp:164

References Definition::isHidden(), and m_dirList.

◆ addExample()

void GroupDefImpl::addExample ( PageDef * def)
overridevirtual

Implements GroupDef.

Definition at line 340 of file groupdef.cpp.

341{
342 if (def->isHidden()) return;
343 m_examples.add(def->name(),def);
344}
virtual bool isHidden() const =0
virtual const QCString & name() const =0
PageLinkedRefMap m_examples
Definition groupdef.cpp:163

References Definition::isHidden(), m_examples, and Definition::name().

◆ addFile()

void GroupDefImpl::addFile ( FileDef * def)
overridevirtual

Implements GroupDef.

Definition at line 257 of file groupdef.cpp.

258{
259 bool sortBriefDocs = Config_getBool(SORT_BRIEF_DOCS);
260 if (def->isHidden()) return;
261 updateLanguage(def);
262 if (sortBriefDocs)
263 m_fileList.insert( std::upper_bound( m_fileList.begin(), m_fileList.end(), def,
264 [](const auto &fd1, const auto &fd2)
265 { return qstricmp_sort(fd1->name(),fd2->name())<0; }),
266 def);
267 else
268 m_fileList.push_back(def);
269}
FileList m_fileList
Definition groupdef.cpp:156

References Config_getBool, Definition::isHidden(), m_fileList, and updateLanguage().

◆ addGroup()

void GroupDefImpl::addGroup ( GroupDef * def)
overridevirtual

Implements GroupDef.

Definition at line 602 of file groupdef.cpp.

603{
604 //printf("adding group '%s' to group '%s'\n",qPrint(def->name()),qPrint(name()));
605 //if (Config_getBool(SORT_MEMBER_DOCS))
606 // groupList->inSort(def);
607 //else
608 m_groups.push_back(def);
609}
GroupList m_groups
Definition groupdef.cpp:161

References m_groups.

◆ addListReferences()

void GroupDefImpl::addListReferences ( )
overridevirtual

Implements GroupDef.

Definition at line 1806 of file groupdef.cpp.

1807{
1808 {
1809 const RefItemVector &xrefItems = xrefListItems();
1810 addRefItem(xrefItems,
1814 QCString(),
1815 nullptr
1816 );
1817 }
1818 for (const auto &mg : m_memberGroups)
1819 {
1820 mg->addListReferences(this);
1821 }
1822 for (auto &ml : m_memberLists)
1823 {
1824 if (ml->listType().isDocumentation())
1825 {
1826 ml->addListReferences(this);
1827 }
1828 }
1829}
const QCString & name() const override
const RefItemVector & xrefListItems() const override
MemberGroupList m_memberGroups
Definition groupdef.cpp:169
QCString getOutputFileBase() const override
MemberLists m_memberLists
Definition groupdef.cpp:168
virtual QCString trGroup(bool first_capital, bool singular)=0
Translator * theTranslator
Definition language.cpp:71
std::vector< RefItem * > RefItemVector
Definition reflist.h:133
void addRefItem(const RefItemVector &sli, const QCString &key, const QCString &prefix, const QCString &name, const QCString &title, const QCString &args, const Definition *scope)
Definition util.cpp:4746

References addRefItem(), getOutputFileBase(), m_memberGroups, m_memberLists, DefinitionMixin< GroupDef >::name(), theTranslator, TRUE, and DefinitionMixin< GroupDef >::xrefListItems().

◆ addMemberListToGroup()

void GroupDefImpl::addMemberListToGroup ( MemberList * ,
bool(MemberDef::*  )() const )
private

◆ addMembersToMemberGroup()

void GroupDefImpl::addMembersToMemberGroup ( )
overridevirtual

Implements GroupDef.

Definition at line 347 of file groupdef.cpp.

348{
349 for (auto &ml : m_memberLists)
350 {
351 if (ml->listType().isDeclaration())
352 {
354 }
355 }
356}
void addMembersToMemberGroup() override
Definition groupdef.cpp:347

References addMembersToMemberGroup(), m_memberGroups, and m_memberLists.

Referenced by addMembersToMemberGroup().

◆ addMemberToList()

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

Definition at line 1831 of file groupdef.cpp.

1832{
1833 bool sortBriefDocs = Config_getBool(SORT_BRIEF_DOCS);
1834 bool sortMemberDocs = Config_getBool(SORT_MEMBER_DOCS);
1835 const auto &ml = m_memberLists.get(lt,MemberListContainer::Group);
1836 ml->setNeedsSorting(
1837 (ml->listType().isDeclaration() && sortBriefDocs) ||
1838 (ml->listType().isDocumentation() && sortMemberDocs));
1839 ml->push_back(md);
1840}

References Config_getBool, Group, and m_memberLists.

Referenced by insertMember().

◆ addModule()

bool GroupDefImpl::addModule ( ModuleDef * def)
overridevirtual

Implements GroupDef.

Definition at line 301 of file groupdef.cpp.

302{
303 if (mod->isHidden()) return false;
304 QCString qn = mod->name();
305 if (m_modules.find(qn)==nullptr)
306 {
307 m_modules.add(qn,mod);
308 return true;
309 }
310 return false;
311}
ModuleLinkedRefMap m_modules
Definition groupdef.cpp:159

References Definition::isHidden(), m_modules, and Definition::name().

◆ addNamespace()

bool GroupDefImpl::addNamespace ( NamespaceDef * def)
overridevirtual

Implements GroupDef.

Definition at line 313 of file groupdef.cpp.

314{
315 //printf("adding namespace hidden=%d\n",def->isHidden());
316 if (def->isHidden()) return false;
317 if (m_namespaces.find(def->name())==nullptr)
318 {
319 updateLanguage(def);
320 m_namespaces.add(def->name(),def);
321 return true;
322 }
323 return false;
324}
NamespaceLinkedRefMap m_namespaces
Definition groupdef.cpp:160

References Definition::isHidden(), m_namespaces, Definition::name(), and updateLanguage().

◆ addPage()

void GroupDefImpl::addPage ( PageDef * def)
overridevirtual

Implements GroupDef.

Definition at line 332 of file groupdef.cpp.

333{
334 if (def->isHidden()) return;
335 //printf("Making page %s part of a group\n",qPrint(def->name));
336 m_pages.add(def->name(),def);
337 def->makePartOfGroup(this);
338}
virtual void makePartOfGroup(GroupDef *gd)=0
PageLinkedRefMap m_pages
Definition groupdef.cpp:162

References Definition::isHidden(), m_pages, DefinitionMutable::makePartOfGroup(), and Definition::name().

◆ anchor()

QCString GroupDefImpl::anchor ( ) const
inlineoverridevirtual

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

Implements Definition.

Definition at line 63 of file groupdef.cpp.

63{ return QCString(); }

◆ codeSymbolType()

CodeSymbolType GroupDefImpl::codeSymbolType ( ) const
inlineoverridevirtual

Used for syntax highlighting symbol class

Implements Definition.

Definition at line 61 of file groupdef.cpp.

References Default.

◆ computeAnchors()

void GroupDefImpl::computeAnchors ( )
overridevirtual

Compute the HTML anchor names for all members in the group

Implements GroupDef.

Definition at line 642 of file groupdef.cpp.

643{
644 //printf("GroupDefImpl::computeAnchors()\n");
645 m_allMemberList.setAnchors();
646}

References m_allMemberList.

◆ containsFile()

bool GroupDefImpl::containsFile ( const FileDef * def) const
overridevirtual

Implements GroupDef.

Definition at line 271 of file groupdef.cpp.

272{
273 return std::find(m_fileList.cbegin(),m_fileList.cend(), def) != m_fileList.cend();
274}

References m_fileList.

◆ countMembers()

void GroupDefImpl::countMembers ( )
overridevirtual

Implements GroupDef.

Definition at line 616 of file groupdef.cpp.

617{
618 for (auto &ml : m_memberLists)
619 {
620 ml->countDecMembers();
621 ml->countDocMembers();
622 }
623 for (const auto &mg : m_memberGroups)
624 {
625 mg->countDecMembers();
626 mg->countDocMembers();
627 }
628}

References m_memberGroups, and m_memberLists.

◆ definitionType()

DefType GroupDefImpl::definitionType ( ) const
inlineoverridevirtual

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

Implements Definition.

Definition at line 60 of file groupdef.cpp.

60{ return TypeGroup; }

References definitionType(), and Definition::TypeGroup.

Referenced by definitionType(), and insertMember().

◆ displayName()

QCString GroupDefImpl::displayName ( bool includeScope = TRUE) const
inlineoverridevirtual

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

Implements Definition.

Definition at line 64 of file groupdef.cpp.

bool hasGroupTitle() const override
Definition groupdef.cpp:67
QCString m_title
Definition groupdef.cpp:153

References hasGroupTitle(), m_title, DefinitionMixin< Base >::name(), and TRUE.

◆ distributeMemberGroupDocumentation()

void GroupDefImpl::distributeMemberGroupDocumentation ( )
overridevirtual

Implements GroupDef.

Definition at line 229 of file groupdef.cpp.

230{
231 for (const auto &mg : m_memberGroups)
232 {
233 mg->distributeMemberGroupDocumentation();
234 }
235}

References m_memberGroups.

◆ endMemberDeclarations()

void GroupDefImpl::endMemberDeclarations ( OutputList & ol)
private

Definition at line 1128 of file groupdef.cpp.

1129{
1130 ol.endMemberSections();
1131}
void endMemberSections()
Definition outputlist.h:463

References OutputList::endMemberSections().

Referenced by writeDocumentation().

◆ endMemberDocumentation()

void GroupDefImpl::endMemberDocumentation ( OutputList & ol)
private

Definition at line 1144 of file groupdef.cpp.

1145{
1146 //printf("** GroupDefImpl::endMemberDocumentation()\n");
1147 if (Config_getBool(SEPARATE_MEMBER_PAGES))
1148 {
1149 ol.popGeneratorState();
1151 }
1152}
static bool suppressDocWarnings
Definition doxygen.h:132
void popGeneratorState()

References Config_getBool, FALSE, OutputList::popGeneratorState(), and Doxygen::suppressDocWarnings.

Referenced by writeDocumentation().

◆ findGroup()

bool GroupDefImpl::findGroup ( const GroupDef * def) const
overridevirtual

Implements GroupDef.

Definition at line 586 of file groupdef.cpp.

587{
588 if (this==def)
589 {
590 return TRUE;
591 }
592 for (const auto &gd : m_groups)
593 {
594 if (gd->findGroup(def))
595 {
596 return TRUE;
597 }
598 }
599 return FALSE;
600}

References FALSE, m_groups, and TRUE.

◆ findSectionsInDocumentation()

void GroupDefImpl::findSectionsInDocumentation ( )
overridevirtual

Implements GroupDef.

Definition at line 237 of file groupdef.cpp.

238{
242
243 for (const auto &mg : m_memberGroups)
244 {
245 mg->findSectionsInDocumentation(this);
246 }
247
248 for (auto &ml : m_memberLists)
249 {
250 if (ml->listType().isDeclaration())
251 {
252 ml->findSectionsInDocumentation(this);
253 }
254 }
255}
QCString docFile() const override
QCString briefDescription(bool abbreviate=FALSE) const override
QCString inbodyDocumentation() const override
QCString documentation() const override
void docFindSections(const QCString &input, const Definition *d, const QCString &fileName)

References DefinitionMixin< GroupDef >::briefDescription(), DefinitionMixin< GroupDef >::docFile(), docFindSections(), DefinitionMixin< GroupDef >::documentation(), DefinitionMixin< GroupDef >::inbodyDocumentation(), m_memberGroups, and m_memberLists.

◆ getClasses()

const ClassLinkedRefMap & GroupDefImpl::getClasses ( ) const
inlineoverridevirtual

Implements GroupDef.

Definition at line 111 of file groupdef.cpp.

111{ return m_classes; }

References m_classes.

◆ getConcepts()

const ConceptLinkedRefMap & GroupDefImpl::getConcepts ( ) const
inlineoverridevirtual

Implements GroupDef.

Definition at line 112 of file groupdef.cpp.

112{ return m_concepts; }

References m_concepts.

◆ getDirs()

const DirList & GroupDefImpl::getDirs ( ) const
inlineoverridevirtual

Implements GroupDef.

Definition at line 117 of file groupdef.cpp.

117{ return m_dirList; }

References m_dirList.

◆ getExamples()

const PageLinkedRefMap & GroupDefImpl::getExamples ( ) const
inlineoverridevirtual

Implements GroupDef.

Definition at line 118 of file groupdef.cpp.

118{ return m_examples; }

References m_examples.

◆ getFiles()

const FileList & GroupDefImpl::getFiles ( ) const
inlineoverridevirtual

Implements GroupDef.

Definition at line 110 of file groupdef.cpp.

110{ return m_fileList; }

References m_fileList.

◆ getGroupScope()

Definition * GroupDefImpl::getGroupScope ( ) const
inlineoverridevirtual

Implements GroupDef.

Definition at line 102 of file groupdef.cpp.

102{ return m_groupScope; }

References m_groupScope.

◆ getMemberGroups()

const MemberGroupList & GroupDefImpl::getMemberGroups ( ) const
inlineoverridevirtual

Implements GroupDef.

Definition at line 108 of file groupdef.cpp.

108{ return m_memberGroups; }

References m_memberGroups.

◆ getMemberList()

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

Implements GroupDef.

Definition at line 1952 of file groupdef.cpp.

1953{
1954 for (auto &ml : m_memberLists)
1955 {
1956 if (ml->listType()==lt)
1957 {
1958 return ml.get();
1959 }
1960 }
1961 return nullptr;
1962}

References m_memberLists.

Referenced by removeMemberFromList(), writeMemberDeclarations(), writeMemberDocumentation(), writeSummaryLinks(), and writeTagFile().

◆ getMemberLists()

const MemberLists & GroupDefImpl::getMemberLists ( ) const
inlineoverridevirtual

Implements GroupDef.

Definition at line 105 of file groupdef.cpp.

105{ return m_memberLists; }

References m_memberLists.

◆ getModules()

const ModuleLinkedRefMap & GroupDefImpl::getModules ( ) const
inlineoverridevirtual

Implements GroupDef.

Definition at line 113 of file groupdef.cpp.

113{ return m_modules; }

References m_modules.

◆ getNamespaces()

const NamespaceLinkedRefMap & GroupDefImpl::getNamespaces ( ) const
inlineoverridevirtual

Implements GroupDef.

Definition at line 114 of file groupdef.cpp.

114{ return m_namespaces; }

References m_namespaces.

◆ getOutputFileBase()

QCString GroupDefImpl::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 1801 of file groupdef.cpp.

1802{
1803 return m_fileName;
1804}

References m_fileName.

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

◆ getPages()

const PageLinkedRefMap & GroupDefImpl::getPages ( ) const
inlineoverridevirtual

Implements GroupDef.

Definition at line 116 of file groupdef.cpp.

116{ return m_pages; }

References m_pages.

◆ getSubGroups()

const GroupList & GroupDefImpl::getSubGroups ( ) const
inlineoverridevirtual

Implements GroupDef.

Definition at line 115 of file groupdef.cpp.

115{ return m_groups; }

References m_groups.

Referenced by writeDocumentation().

◆ groupTitle()

QCString GroupDefImpl::groupTitle ( ) const
inlineoverridevirtual

Implements GroupDef.

Definition at line 65 of file groupdef.cpp.

65{ return m_title; }

References m_title.

◆ hasDetailedDescription()

bool GroupDefImpl::hasDetailedDescription ( ) const
overridevirtual

Implements GroupDef.

Definition at line 2052 of file groupdef.cpp.

2053{
2054 bool repeatBrief = Config_getBool(REPEAT_BRIEF);
2055 return ((!briefDescription().isEmpty() && repeatBrief) ||
2056 !documentation().isEmpty() ||
2057 !inbodyDocumentation().isEmpty()) &&
2058 (m_pages.size()!=numDocMembers());
2059}
size_t numDocMembers() const override
Definition groupdef.cpp:630

References DefinitionMixin< GroupDef >::briefDescription(), Config_getBool, DefinitionMixin< GroupDef >::documentation(), DefinitionMixin< GroupDef >::inbodyDocumentation(), m_pages, and numDocMembers().

Referenced by writeBriefDescription().

◆ hasGroupGraph()

bool GroupDefImpl::hasGroupGraph ( ) const
overridevirtual

Implements GroupDef.

Definition at line 2066 of file groupdef.cpp.

2067{
2068 return m_hasGroupGraph;
2069}

References m_hasGroupGraph.

◆ hasGroupTitle()

bool GroupDefImpl::hasGroupTitle ( ) const
inlineoverridevirtual

Implements GroupDef.

Definition at line 67 of file groupdef.cpp.

67{ return m_titleSet; }

References m_titleSet.

Referenced by displayName().

◆ insertMember()

bool GroupDefImpl::insertMember ( MemberDef * def,
bool docOnly = FALSE )
overridevirtual

Implements GroupDef.

Definition at line 359 of file groupdef.cpp.

360{
361 if (md->isHidden()) return FALSE;
362 updateLanguage(md);
363 //printf("GroupDef(%s)::insertMember(%s)\n", qPrint(title), qPrint(md->name()));
364 MemberNameInfo *mni = m_allMemberNameInfoLinkedMap.add(md->name());
365 for (auto &srcMi : *mni)
366 {
367 const MemberDef *srcMd = srcMi->memberDef();
368 if (srcMd==md) return FALSE; // already added before!
369
370 bool sameScope = srcMd->getOuterScope()==md->getOuterScope() || // same class or namespace
371 // both inside a file => definition and declaration do not have to be in the same file
374
375 const ArgumentList &srcMdAl = srcMd->argumentList();
376 const ArgumentList &mdAl = md->argumentList();
377 const ArgumentList &tSrcMdAl = srcMd->templateArguments();
378 const ArgumentList &tMdAl = md->templateArguments();
379
380 if (srcMd->isFunction() && md->isFunction() && // both are a function
381 (tSrcMdAl.size()==tMdAl.size()) && // same number of template arguments
382 matchArguments2(srcMd->getOuterScope(),srcMd->getFileDef(),&srcMdAl,
383 md->getOuterScope(),md->getFileDef(),&mdAl,
384 TRUE,srcMd->getLanguage()
385 ) && // matching parameters
386 sameScope // both are found in the same scope
387 )
388 {
389 MemberDefMutable *mdm = toMemberDefMutable(md);
390 if (mdm && srcMd->getGroupAlias()==nullptr)
391 {
392 mdm->setGroupAlias(srcMd);
393 }
394 else if (mdm && md!=srcMd->getGroupAlias())
395 {
396 mdm->setGroupAlias(srcMd->getGroupAlias());
397 }
398 return FALSE; // member is the same as one that is already added
399 }
400 }
401 mni->push_back(std::make_unique<MemberInfo>(md,md->protection(),md->virtualness(),false,false));
402 //printf("Added member!\n");
403 m_allMemberList.push_back(md);
404 switch(md->memberType())
405 {
407 if (!docOnly)
408 {
409 addMemberToList(MemberListType::DecVarMembers(),md);
410 }
411 addMemberToList(MemberListType::DocVarMembers(),md);
412 break;
414 if (!docOnly)
415 {
416 addMemberToList(MemberListType::DecFuncMembers(),md);
417 }
418 addMemberToList(MemberListType::DocFuncMembers(),md);
419 break;
421 if (!docOnly)
422 {
423 addMemberToList(MemberListType::DecTypedefMembers(),md);
424 }
425 addMemberToList(MemberListType::DocTypedefMembers(),md);
426 break;
428 if (!docOnly)
429 {
430 addMemberToList(MemberListType::DecEnumMembers(),md);
431 }
432 addMemberToList(MemberListType::DocEnumMembers(),md);
433 break;
435 if (!docOnly)
436 {
437 addMemberToList(MemberListType::DecEnumValMembers(),md);
438 }
439 addMemberToList(MemberListType::DocEnumValMembers(),md);
440 break;
442 if (!docOnly)
443 {
444 addMemberToList(MemberListType::DecDefineMembers(),md);
445 }
446 addMemberToList(MemberListType::DocDefineMembers(),md);
447 break;
449 if (!docOnly)
450 {
451 addMemberToList(MemberListType::DecSignalMembers(),md);
452 }
453 addMemberToList(MemberListType::DocSignalMembers(),md);
454 break;
455 case MemberType::Slot:
456 if (md->protection()==Protection::Public)
457 {
458 if (!docOnly)
459 {
460 addMemberToList(MemberListType::DecPubSlotMembers(),md);
461 }
462 addMemberToList(MemberListType::DocPubSlotMembers(),md);
463 }
464 else if (md->protection()==Protection::Protected)
465 {
466 if (!docOnly)
467 {
468 addMemberToList(MemberListType::DecProSlotMembers(),md);
469 }
470 addMemberToList(MemberListType::DocProSlotMembers(),md);
471 }
472 else
473 {
474 if (!docOnly)
475 {
476 addMemberToList(MemberListType::DecPriSlotMembers(),md);
477 }
478 addMemberToList(MemberListType::DocPriSlotMembers(),md);
479 }
480 break;
482 if (!docOnly)
483 {
484 addMemberToList(MemberListType::DecEventMembers(),md);
485 }
486 addMemberToList(MemberListType::DocEventMembers(),md);
487 break;
489 if (!docOnly)
490 {
491 addMemberToList(MemberListType::DecPropMembers(),md);
492 }
493 addMemberToList(MemberListType::DocPropMembers(),md);
494 break;
496 if (!docOnly)
497 {
498 addMemberToList(MemberListType::DecFriendMembers(),md);
499 }
500 addMemberToList(MemberListType::DocFriendMembers(),md);
501 break;
502 default:
503 err("GroupDefImpl::insertMembers(): "
504 "member '{}' (typeid='{}') with scope '{}' inserted in group scope '{}'!\n",
505 md->name(),md->memberTypeName(),
506 md->getClassDef() ? md->getClassDef()->name() : "",
507 name());
508 }
509 return TRUE;
510}
size_t size() const
Definition arguments.h:100
virtual SrcLangExt getLanguage() const =0
Returns the programming language this definition was written in.
virtual DefType definitionType() const =0
virtual Definition * getOuterScope() const =0
MemberNameInfoLinkedMap m_allMemberNameInfoLinkedMap
Definition groupdef.cpp:166
DefType definitionType() const override
Definition groupdef.cpp:60
void addMemberToList(MemberListType lt, MemberDef *md)
virtual const MemberDef * getGroupAlias() const =0
virtual const ArgumentList & templateArguments() const =0
virtual const FileDef * getFileDef() const =0
virtual const ArgumentList & argumentList() const =0
virtual bool isFunction() const =0
virtual void setGroupAlias(const MemberDef *md)=0
MemberDefMutable * toMemberDefMutable(Definition *d)
#define err(fmt,...)
Definition message.h:127
@ Enumeration
Definition types.h:557
@ EnumValue
Definition types.h:558
@ Variable
Definition types.h:555
@ Property
Definition types.h:563
@ Typedef
Definition types.h:556
@ Function
Definition types.h:554
bool matchArguments2(const Definition *srcScope, const FileDef *srcFileScope, const ArgumentList *srcAl, const Definition *dstScope, const FileDef *dstFileScope, const ArgumentList *dstAl, bool checkCV, SrcLangExt lang)
Definition util.cpp:1959

References addMemberToList(), MemberDef::argumentList(), Define, Definition::definitionType(), definitionType(), Enumeration, EnumValue, err, Event, FALSE, Friend, Function, MemberDef::getClassDef(), MemberDef::getFileDef(), MemberDef::getGroupAlias(), Definition::getLanguage(), Definition::getOuterScope(), MemberDef::isFunction(), Definition::isHidden(), m_allMemberList, m_allMemberNameInfoLinkedMap, matchArguments2(), MemberDef::memberType(), MemberDef::memberTypeName(), Definition::name(), DefinitionMixin< GroupDef >::name(), Property, MemberDef::protection(), MemberNameInfo::push_back(), MemberDefMutable::setGroupAlias(), Signal, ArgumentList::size(), Slot, MemberDef::templateArguments(), toMemberDefMutable(), TRUE, Typedef, Definition::TypeFile, updateLanguage(), Variable, and MemberDef::virtualness().

◆ isASubGroup()

bool GroupDefImpl::isASubGroup ( ) const
overridevirtual

Implements GroupDef.

Definition at line 611 of file groupdef.cpp.

612{
613 return !partOfGroups().empty();
614}
const GroupList & partOfGroups() const override

References DefinitionMixin< GroupDef >::partOfGroups().

◆ isLinkable()

bool GroupDefImpl::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 2037 of file groupdef.cpp.

2038{
2039 return hasUserDocumentation();
2040}
bool hasUserDocumentation() const override

References DefinitionMixin< GroupDef >::hasUserDocumentation().

Referenced by isLinkableInProject(), and isVisibleInHierarchy().

◆ isLinkableInProject()

bool GroupDefImpl::isLinkableInProject ( ) const
overridevirtual

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

Implements Definition.

Definition at line 2032 of file groupdef.cpp.

2033{
2034 return !isReference() && isLinkable();
2035}
bool isReference() const override
bool isLinkable() const override

References isLinkable(), and DefinitionMixin< GroupDef >::isReference().

◆ isVisibleInHierarchy()

bool GroupDefImpl::isVisibleInHierarchy ( ) const
overridevirtual

Implements GroupDef.

Definition at line 2026 of file groupdef.cpp.

2027{
2028 bool allExternals = Config_getBool(EXTERNAL_GROUPS);
2029 return (allExternals || hasNonReferenceNestedGroupRec(this,0)) && isLinkable();
2030}
static bool hasNonReferenceNestedGroupRec(const GroupDef *gd, int level)

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

◆ numDocMembers()

size_t GroupDefImpl::numDocMembers ( ) const
overridevirtual

Implements GroupDef.

Definition at line 630 of file groupdef.cpp.

631{
632 return m_fileList.size()+
633 m_classes.size()+
634 m_namespaces.size()+
635 m_groups.size()+
636 m_allMemberList.size()+
637 m_pages.size()+
638 m_examples.size();
639}

References m_allMemberList, m_classes, m_examples, m_fileList, m_groups, m_namespaces, and m_pages.

Referenced by hasDetailedDescription(), and writeDetailedDescription().

◆ overrideGroupGraph()

void GroupDefImpl::overrideGroupGraph ( bool e)
overridevirtual

Implements GroupDef.

Definition at line 2061 of file groupdef.cpp.

2062{
2064}

References m_hasGroupGraph.

◆ removeMember()

void GroupDefImpl::removeMember ( MemberDef * md)
overridevirtual

Implements GroupDef.

Definition at line 512 of file groupdef.cpp.

513{
514 // fprintf(stderr, "GroupDef(%s)::removeMember( %s )\n", qPrint(title), qPrint(md->name()));
515 MemberNameInfo *mni = m_allMemberNameInfoLinkedMap.find(md->name());
516 if (mni)
517 {
519
520 removeMemberFromList(MemberListType::AllMembersList(),md);
521 switch(md->memberType())
522 {
524 removeMemberFromList(MemberListType::DecVarMembers(),md);
525 removeMemberFromList(MemberListType::DocVarMembers(),md);
526 break;
528 removeMemberFromList(MemberListType::DecFuncMembers(),md);
529 removeMemberFromList(MemberListType::DocFuncMembers(),md);
530 break;
532 removeMemberFromList(MemberListType::DecTypedefMembers(),md);
533 removeMemberFromList(MemberListType::DocTypedefMembers(),md);
534 break;
536 removeMemberFromList(MemberListType::DecEnumMembers(),md);
537 removeMemberFromList(MemberListType::DocEnumMembers(),md);
538 break;
540 removeMemberFromList(MemberListType::DecEnumValMembers(),md);
541 removeMemberFromList(MemberListType::DocEnumValMembers(),md);
542 break;
544 removeMemberFromList(MemberListType::DecDefineMembers(),md);
545 removeMemberFromList(MemberListType::DocDefineMembers(),md);
546 break;
548 removeMemberFromList(MemberListType::DecSignalMembers(),md);
549 removeMemberFromList(MemberListType::DocSignalMembers(),md);
550 break;
551 case MemberType::Slot:
552 if (md->protection()==Protection::Public)
553 {
554 removeMemberFromList(MemberListType::DecPubSlotMembers(),md);
555 removeMemberFromList(MemberListType::DocPubSlotMembers(),md);
556 }
557 else if (md->protection()==Protection::Protected)
558 {
559 removeMemberFromList(MemberListType::DecProSlotMembers(),md);
560 removeMemberFromList(MemberListType::DocProSlotMembers(),md);
561 }
562 else
563 {
564 removeMemberFromList(MemberListType::DecPriSlotMembers(),md);
565 removeMemberFromList(MemberListType::DocPriSlotMembers(),md);
566 }
567 break;
569 removeMemberFromList(MemberListType::DecEventMembers(),md);
570 removeMemberFromList(MemberListType::DocEventMembers(),md);
571 break;
573 removeMemberFromList(MemberListType::DecPropMembers(),md);
574 removeMemberFromList(MemberListType::DocPropMembers(),md);
575 break;
577 removeMemberFromList(MemberListType::DecFriendMembers(),md);
578 removeMemberFromList(MemberListType::DocFriendMembers(),md);
579 break;
580 default:
581 err("GroupDefImpl::removeMember(): unexpected member remove in file!\n");
582 }
583 }
584}
void removeMemberFromList(MemberListType lt, MemberDef *md)
virtual Protection protection() const =0
virtual MemberType memberType() const =0

References Define, Enumeration, EnumValue, err, Event, Friend, Function, m_allMemberNameInfoLinkedMap, MemberDef::memberType(), Definition::name(), Property, MemberDef::protection(), removeMemberFromList(), Signal, Slot, Typedef, and Variable.

◆ removeMemberFromList()

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

Definition at line 1986 of file groupdef.cpp.

1987{
1988 MemberList *ml = getMemberList(lt);
1989 if (ml) ml->remove(md);
1990}
MemberList * getMemberList(MemberListType lt) const override
void remove(const MemberDef *md)
Definition memberlist.h:84

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

Referenced by removeMember().

◆ setGroupScope()

void GroupDefImpl::setGroupScope ( Definition * d)
inlineoverridevirtual

Implements GroupDef.

Definition at line 101 of file groupdef.cpp.

101{ m_groupScope = d; }

References m_groupScope.

◆ setGroupTitle()

void GroupDefImpl::setGroupTitle ( const QCString & newtitle)
overridevirtual

Implements GroupDef.

Definition at line 223 of file groupdef.cpp.

224{
226}

References setGroupTitleLocal().

◆ setGroupTitleLocal()

void GroupDefImpl::setGroupTitleLocal ( const QCString & title)
private

Definition at line 208 of file groupdef.cpp.

209{
210 if ( !t.isEmpty())
211 {
212 m_title = t;
214 }
215 else
216 {
217 m_title = name();
218 m_title[0]=static_cast<char>(toupper(m_title[0]));
220 }
221}

References FALSE, QCString::isEmpty(), m_title, m_titleSet, DefinitionMixin< GroupDef >::name(), and TRUE.

Referenced by GroupDefImpl(), and setGroupTitle().

◆ sortMemberLists()

void GroupDefImpl::sortMemberLists ( )
overridevirtual

Implements GroupDef.

Definition at line 1902 of file groupdef.cpp.

1903{
1904 for (auto &ml : m_memberLists)
1905 {
1906 if (ml->needsSorting()) { ml->sort(); ml->setNeedsSorting(FALSE); }
1907 }
1908 if (Config_getBool(SORT_BRIEF_DOCS))
1909 {
1910 std::stable_sort(m_dirList.begin(), m_dirList.end(), compareDirDefs);
1911
1912 auto classComp = [](const ClassLinkedRefMap::Ptr &c1,const ClassLinkedRefMap::Ptr &c2)
1913 {
1914 return Config_getBool(SORT_BY_SCOPE_NAME) ?
1915 qstricmp_sort(c1->name(), c2->name())<0 :
1916 qstricmp_sort(c1->className(), c2->className())<0;
1917 };
1918 std::stable_sort(m_classes.begin(), m_classes.end(), classComp);
1919
1920 auto namespaceComp = [](const NamespaceLinkedRefMap::Ptr &n1,const NamespaceLinkedRefMap::Ptr &n2)
1921 {
1922 return qstricmp_sort(n1->name(),n2->name())<0;
1923 };
1924
1925 std::stable_sort(m_namespaces.begin(),m_namespaces.end(),namespaceComp);
1926
1927 auto moduleComp = [](const ModuleLinkedRefMap::Ptr &m1,const ModuleLinkedRefMap::Ptr &m2)
1928 {
1929 return qstricmp_sort(m1->name(),m2->name())<0;
1930 };
1931
1932 std::stable_sort(m_modules.begin(), m_modules.end(), moduleComp);
1933
1934 auto conceptComp = [](const ConceptLinkedRefMap::Ptr &c1,const ConceptLinkedRefMap::Ptr &c2)
1935 {
1936 return qstricmp_sort(c1->name(),c2->name())<0;
1937 };
1938
1939 std::stable_sort(m_concepts.begin(), m_concepts.end(), conceptComp);
1940
1941 std::stable_sort(m_dirList.begin(), m_dirList.end(), compareDirDefs);
1942 std::stable_sort(m_fileList.begin(), m_fileList.end(), compareFileDefs);
1943
1944 }
1945 else
1946 {
1949 }
1950}
virtual QCString className() const =0
Returns the name of the class including outer classes, but not including namespaces.
bool compareDirDefs(const DirDef *item1, const DirDef *item2)
Definition dirdef.cpp:1215
bool compareFileDefs(const FileDef *fd1, const FileDef *fd2)
Definition filedef.cpp:1949
static void groupClassesWithSameScope(Vec &vec)
int qstricmp_sort(const char *str1, const char *str2)
Definition qcstring.h:86

References ClassDef::className(), compareDirDefs(), compareFileDefs(), Config_getBool, FALSE, groupClassesWithSameScope(), m_classes, m_concepts, m_dirList, m_fileList, m_memberLists, m_modules, m_namespaces, Definition::name(), and qstricmp_sort().

◆ sortSubGroups()

void GroupDefImpl::sortSubGroups ( )
overridevirtual

Implements GroupDef.

Definition at line 1992 of file groupdef.cpp.

1993{
1994 if (Config_getBool(SORT_BRIEF_DOCS))
1995 {
1996 std::stable_sort(m_groups.begin(),
1997 m_groups.end(),
1998 [](const auto &g1,const auto &g2)
1999 { return g1->groupTitle() < g2->groupTitle(); });
2000 }
2001}

References Config_getBool, and m_groups.

◆ startMemberDeclarations()

void GroupDefImpl::startMemberDeclarations ( OutputList & ol)
private

Definition at line 1123 of file groupdef.cpp.

1124{
1126}
void startMemberSections()
Definition outputlist.h:461

References OutputList::startMemberSections().

Referenced by writeDocumentation().

◆ startMemberDocumentation()

void GroupDefImpl::startMemberDocumentation ( OutputList & ol)
private

Definition at line 1133 of file groupdef.cpp.

1134{
1135 //printf("** GroupDefImpl::startMemberDocumentation()\n");
1136 if (Config_getBool(SEPARATE_MEMBER_PAGES))
1137 {
1138 ol.pushGeneratorState();
1141 }
1142}
void disable(OutputType o)
void pushGeneratorState()

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

Referenced by writeDocumentation().

◆ subGrouping()

bool GroupDefImpl::subGrouping ( ) const
inlineoverridevirtual

Implements GroupDef.

Definition at line 99 of file groupdef.cpp.

99{ return m_subGrouping; }

References m_subGrouping.

◆ updateLanguage()

void GroupDefImpl::updateLanguage ( const Definition * d)
private

Definition at line 2044 of file groupdef.cpp.

2045{
2046 if (getLanguage()==SrcLangExt::Unknown && d->getLanguage()!=SrcLangExt::Unknown)
2047 {
2049 }
2050}
void setLanguage(SrcLangExt lang) override
SrcLangExt getLanguage() const override

References Definition::getLanguage(), DefinitionMixin< GroupDef >::getLanguage(), and DefinitionMixin< GroupDef >::setLanguage().

Referenced by addClass(), addFile(), addNamespace(), and insertMember().

◆ writeAuthorSection()

void GroupDefImpl::writeAuthorSection ( OutputList & ol)
private

Definition at line 1154 of file groupdef.cpp.

1155{
1156 // write Author section (Man only)
1157 ol.pushGeneratorState();
1159 ol.startGroupHeader();
1161 ol.endGroupHeader();
1163 ol.popGeneratorState();
1164}
void startGroupHeader(const QCString &id=QCString(), int extraLevels=0)
Definition outputlist.h:453
void disableAllBut(OutputType o)
void endGroupHeader(int extraLevels=0)
Definition outputlist.h:455
void parseText(const QCString &textStr)
virtual QCString trGeneratedAutomatically(const QCString &s)=0
virtual QCString trAuthor(bool first_capital, bool singular)=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, and TRUE.

Referenced by writeDocumentation().

◆ writeBriefDescription()

void GroupDefImpl::writeBriefDescription ( OutputList & ol)
private

Definition at line 859 of file groupdef.cpp.

860{
862 {
863 auto parser { createDocParser() };
864 auto ast { validatingParseDoc(*parser.get(),
865 briefFile(),
866 briefLine(),
867 this,
868 nullptr,
870 DocOptions()
871 .setIndexWords(true)
872 .setSingleLine(true))
873 };
874 if (!ast->isEmpty())
875 {
876 ol.startParagraph();
879 ol.writeString(" - ");
881 ol.writeDoc(ast.get(),this,nullptr);
884 ol.writeString(" \n");
886
888 {
890 ol.startTextLink(QCString(),"details");
892 ol.endTextLink();
893 }
895 ol.endParagraph();
896 }
897 }
898 ol.writeSynopsis();
899}
virtual QCString briefFile() const =0
bool hasBriefDescription() const override
int briefLine() const override
bool hasDetailedDescription() const override
void writeDoc(const IDocNodeAST *ast, const Definition *ctx, const MemberDef *md, int sectionLevel=-1)
Definition outputlist.h:383
void writeString(const QCString &text)
Definition outputlist.h:411
void enable(OutputType o)
void startParagraph(const QCString &classDef=QCString())
Definition outputlist.h:407
void endParagraph()
Definition outputlist.h:409
void endTextLink()
Definition outputlist.h:444
void writeSynopsis()
Definition outputlist.h:592
void startTextLink(const QCString &file, const QCString &anchor)
Definition outputlist.h:442
virtual QCString trMore()=0
IDocNodeASTPtr validatingParseDoc(IDocParser &parserIntf, const QCString &fileName, int startLine, const Definition *ctx, const MemberDef *md, const QCString &input, const DocOptions &options)
IDocParserPtr createDocParser()
factory function to create a parser
Definition docparser.cpp:55

References DefinitionMixin< GroupDef >::briefDescription(), DefinitionMixin< GroupDef >::briefFile(), DefinitionMixin< GroupDef >::briefLine(), createDocParser(), OutputList::disable(), OutputList::disableAllBut(), OutputList::enable(), OutputList::endParagraph(), OutputList::endTextLink(), DefinitionMixin< GroupDef >::hasBriefDescription(), hasDetailedDescription(), Html, Man, OutputList::parseText(), OutputList::popGeneratorState(), OutputList::pushGeneratorState(), RTF, OutputList::startParagraph(), OutputList::startTextLink(), theTranslator, validatingParseDoc(), OutputList::writeDoc(), OutputList::writeString(), and OutputList::writeSynopsis().

Referenced by writeDocumentation().

◆ writeClasses()

void GroupDefImpl::writeClasses ( OutputList & ol,
const QCString & title )
private

Definition at line 1063 of file groupdef.cpp.

1064{
1065 // write list of classes
1066 m_classes.writeDeclaration(ol,nullptr,title,FALSE);
1067}

References FALSE, and m_classes.

Referenced by writeDocumentation().

◆ writeConcepts()

void GroupDefImpl::writeConcepts ( OutputList & ol,
const QCString & title )
private

Definition at line 1069 of file groupdef.cpp.

1070{
1071 // write list of concepts
1072 m_concepts.writeDeclaration(ol,title,FALSE);
1073}

References FALSE, and m_concepts.

Referenced by writeDocumentation().

◆ writeDetailedDescription()

void GroupDefImpl::writeDetailedDescription ( OutputList & ol,
const QCString & title )
private

Definition at line 782 of file groupdef.cpp.

783{
784 if ((!briefDescription().isEmpty() && Config_getBool(REPEAT_BRIEF))
785 || !documentation().isEmpty() || !inbodyDocumentation().isEmpty()
786 )
787 {
789 if (m_pages.size()!=numDocMembers()) // not only pages -> classical layout
790 {
793 ol.writeRuler();
797 ol.writeAnchor(QCString(),"details");
799 }
800 else
801 {
802 ol.disableAllBut(OutputType::Man); // always print title for man page
803 }
804 ol.startGroupHeader("details");
805 ol.parseText(title);
806 ol.endGroupHeader();
808
809 // repeat brief description
810 if (!briefDescription().isEmpty() && Config_getBool(REPEAT_BRIEF))
811 {
813 briefLine(),
814 this,
815 nullptr,
817 DocOptions());
818 }
819 // write separator between brief and details
820 if (!briefDescription().isEmpty() && Config_getBool(REPEAT_BRIEF) &&
821 !documentation().isEmpty())
822 {
826 ol.enableAll();
829 ol.writeString("\n\n");
831 }
832
833 // write detailed documentation
834 if (!documentation().isEmpty())
835 {
836 ol.generateDoc(docFile(),
837 docLine(),
838 this,
839 nullptr,
840 documentation()+"\n",
841 DocOptions()
842 .setIndexWords(true));
843 }
844
845 // write inbody documentation
846 if (!inbodyDocumentation().isEmpty())
847 {
849 inbodyLine(),
850 this,
851 nullptr,
852 inbodyDocumentation()+"\n",
853 DocOptions()
854 .setIndexWords(true));
855 }
856 }
857}
QCString inbodyFile() const override
QCString briefFile() const override
int docLine() const override
int inbodyLine() const override
void writeRuler()
Definition outputlist.h:521
void generateDoc(const QCString &fileName, int startLine, const Definition *ctx, const MemberDef *md, const QCString &docStr, const DocOptions &options)
void writeAnchor(const QCString &fileName, const QCString &name)
Definition outputlist.h:523
void enableAll()

References DefinitionMixin< GroupDef >::briefDescription(), DefinitionMixin< GroupDef >::briefFile(), DefinitionMixin< GroupDef >::briefLine(), Config_getBool, OutputList::disable(), OutputList::disableAllBut(), DefinitionMixin< GroupDef >::docFile(), DefinitionMixin< GroupDef >::docLine(), DefinitionMixin< GroupDef >::documentation(), OutputList::enable(), OutputList::enableAll(), OutputList::endGroupHeader(), OutputList::generateDoc(), Html, DefinitionMixin< GroupDef >::inbodyDocumentation(), DefinitionMixin< GroupDef >::inbodyFile(), DefinitionMixin< GroupDef >::inbodyLine(), Latex, m_pages, Man, numDocMembers(), OutputList::parseText(), OutputList::popGeneratorState(), OutputList::pushGeneratorState(), RTF, OutputList::startGroupHeader(), OutputList::writeAnchor(), OutputList::writeRuler(), and OutputList::writeString().

Referenced by writeDocumentation().

◆ writeDirs()

void GroupDefImpl::writeDirs ( OutputList & ol,
const QCString & title )
private

Definition at line 1024 of file groupdef.cpp.

1025{
1026 // write list of directories
1027 if (!m_dirList.empty())
1028 {
1029 ol.startMemberHeader("dirs");
1030 ol.parseText(title);
1031 ol.endMemberHeader();
1032 ol.startMemberList();
1033 for(const auto dd : m_dirList)
1034 {
1035 if (!dd->hasDocumentation()) continue;
1037 QCString anc = dd->anchor();
1038 if (anc.isEmpty()) anc=dd->shortName(); else anc.prepend(dd->shortName()+"_");
1041 ol.insertMemberAlign();
1042 ol.writeObjectLink(dd->getReference(),dd->getOutputFileBase(),QCString(),dd->shortName());
1044 if (!dd->briefDescription().isEmpty() && Config_getBool(BRIEF_MEMBER_DESC))
1045 {
1046 ol.startMemberDescription(dd->getOutputFileBase());
1048 briefLine(),
1049 dd,
1050 nullptr,
1051 dd->briefDescription(),
1052 DocOptions()
1053 .setSingleLine(true));
1055 }
1056 ol.endMemberDeclaration(QCString(),QCString());
1057 }
1058
1059 ol.endMemberList();
1060 }
1061}
void startMemberDeclaration()
Definition outputlist.h:569
void endMemberDescription()
Definition outputlist.h:567
void writeObjectLink(const QCString &ref, const QCString &file, const QCString &anchor, const QCString &name)
Definition outputlist.h:439
void startMemberDescription(const QCString &anchor, const QCString &inheritId=QCString(), bool typ=false)
Definition outputlist.h:565
void startMemberList()
Definition outputlist.h:481
void endMemberItem(OutputGenerator::MemberItemType type)
Definition outputlist.h:495
void endMemberList()
Definition outputlist.h:483
void insertMemberAlign(bool templ=FALSE)
Definition outputlist.h:517
void endMemberDeclaration(const QCString &anchor, const QCString &inheritId)
Definition outputlist.h:571
void endMemberHeader()
Definition outputlist.h:471
void startMemberItem(const QCString &anchor, OutputGenerator::MemberItemType type, const QCString &id=QCString())
Definition outputlist.h:493
void startMemberHeader(const QCString &anchor, int typ=2)
Definition outputlist.h:469
QCString & prepend(const char *s)
Definition qcstring.h:422
virtual QCString trDir(bool first_capital, bool singular)=0

References DefinitionMixin< GroupDef >::briefFile(), DefinitionMixin< GroupDef >::briefLine(), Config_getBool, OutputList::endMemberDeclaration(), OutputList::endMemberDescription(), OutputList::endMemberHeader(), OutputList::endMemberItem(), OutputList::endMemberList(), FALSE, OutputList::generateDoc(), OutputList::insertMemberAlign(), QCString::isEmpty(), m_dirList, OutputGenerator::Normal, OutputList::parseText(), QCString::prepend(), OutputList::startMemberDeclaration(), OutputList::startMemberDescription(), OutputList::startMemberHeader(), OutputList::startMemberItem(), OutputList::startMemberList(), theTranslator, TRUE, and OutputList::writeObjectLink().

Referenced by writeDocumentation().

◆ writeDocumentation()

void GroupDefImpl::writeDocumentation ( OutputList & ol)
overridevirtual

Implements GroupDef.

Definition at line 1223 of file groupdef.cpp.

1224{
1225 bool generateTreeView = Config_getBool(GENERATE_TREEVIEW);
1226 ol.pushGeneratorState();
1227
1228 // Find out how deep this group is nested. In case of multiple parents, use the first one.
1229 int hierarchyLevel = 0;
1230 const GroupDef *gd = this;
1231 while (!gd->partOfGroups().empty())
1232 {
1233 gd = gd->partOfGroups().front();
1234 ++hierarchyLevel;
1235 }
1236
1238 FALSE /* additionalIndices*/, QCString() /*altSidebarName*/, hierarchyLevel);
1239
1240 ol.startHeaderSection();
1241 bool writeOutlinePanel = generateTreeView && Config_getBool(PAGE_OUTLINE_PANEL);
1242 if (!writeOutlinePanel) writeSummaryLinks(ol);
1244 //1.{
1245 ol.pushGeneratorState();
1247 ol.generateDoc(docFile(),
1249 this,
1250 nullptr,
1251 m_title,
1252 DocOptions()
1253 .setIndexWords(true)
1254 .setSingleLine(true)
1255 .setAutolinkSupport(false));
1256 ol.popGeneratorState();
1257 //1.}
1258 addGroupListToTitle(ol,this);
1259 //2.{
1260 ol.pushGeneratorState();
1263 ol.popGeneratorState();
1264 //2.}
1265 //3.{
1266 ol.pushGeneratorState();
1269 if (!m_title.isEmpty())
1270 {
1271 ol.writeString(" - ");
1272 ol.parseText(m_title);
1273 }
1274 ol.popGeneratorState();
1275 //3.}
1276 ol.endHeaderSection();
1277 ol.startContents();
1278
1279 //---------------------------------------- start flexible part -------------------------------
1280
1281 SrcLangExt lang=getLanguage();
1282 for (const auto &lde : LayoutDocManager::instance().docEntries(LayoutDocManager::Group))
1283 {
1284 const LayoutDocEntrySection *ls = dynamic_cast<const LayoutDocEntrySection*>(lde.get());
1285 switch (lde->kind())
1286 {
1287 case LayoutDocEntry::BriefDesc:
1289 break;
1290 case LayoutDocEntry::MemberDeclStart:
1292 break;
1293 case LayoutDocEntry::GroupClasses:
1294 if (ls) writeClasses(ol,ls->title(lang));
1295 break;
1296 case LayoutDocEntry::GroupConcepts:
1297 if (ls) writeConcepts(ol,ls->title(lang));
1298 break;
1299 case LayoutDocEntry::GroupModules:
1300 if (ls) writeModules(ol,ls->title(lang));
1301 break;
1302 case LayoutDocEntry::GroupInlineClasses:
1304 break;
1305 case LayoutDocEntry::GroupNamespaces:
1306 if (ls) writeNamespaces(ol,ls->title(lang));
1307 break;
1308 case LayoutDocEntry::MemberGroups:
1310 break;
1311 case LayoutDocEntry::MemberDecl:
1312 {
1313 const LayoutDocEntryMemberDecl *lmd = dynamic_cast<const LayoutDocEntryMemberDecl*>(lde.get());
1314 if (lmd)
1315 {
1316 writeMemberDeclarations(ol,lmd->type,lmd->title(lang));
1317 }
1318 }
1319 break;
1320 case LayoutDocEntry::MemberDeclEnd:
1322 break;
1323 case LayoutDocEntry::DetailedDesc:
1324 if (ls) writeDetailedDescription(ol,ls->title(lang));
1325 break;
1326 case LayoutDocEntry::MemberDefStart:
1328 break;
1329 case LayoutDocEntry::MemberDef:
1330 {
1331 const LayoutDocEntryMemberDef *lmd = dynamic_cast<const LayoutDocEntryMemberDef*>(lde.get());
1332 if (lmd)
1333 {
1334 writeMemberDocumentation(ol,lmd->type,lmd->title(lang));
1335 }
1336 }
1337 break;
1338 case LayoutDocEntry::MemberDefEnd:
1340 break;
1341 case LayoutDocEntry::GroupNestedGroups:
1342 if (ls) writeNestedGroups(ol,ls->title(lang));
1343 break;
1344 case LayoutDocEntry::GroupPageDocs:
1346 break;
1347 case LayoutDocEntry::GroupDirs:
1348 if (ls) writeDirs(ol,ls->title(lang));
1349 break;
1350 case LayoutDocEntry::GroupFiles:
1351 if (ls) writeFiles(ol,ls->title(lang));
1352 break;
1353 case LayoutDocEntry::GroupGraph:
1354 writeGroupGraph(ol);
1355 break;
1356 case LayoutDocEntry::AuthorSection:
1358 break;
1359 case LayoutDocEntry::ClassIncludes:
1360 case LayoutDocEntry::ClassInheritanceGraph:
1361 case LayoutDocEntry::ClassNestedClasses:
1362 case LayoutDocEntry::ClassCollaborationGraph:
1363 case LayoutDocEntry::ClassAllMembersLink:
1364 case LayoutDocEntry::ClassUsedFiles:
1365 case LayoutDocEntry::ClassInlineClasses:
1366 case LayoutDocEntry::NamespaceNestedNamespaces:
1367 case LayoutDocEntry::NamespaceNestedConstantGroups:
1368 case LayoutDocEntry::NamespaceClasses:
1369 case LayoutDocEntry::NamespaceConcepts:
1370 case LayoutDocEntry::NamespaceInterfaces:
1371 case LayoutDocEntry::NamespaceStructs:
1372 case LayoutDocEntry::NamespaceExceptions:
1373 case LayoutDocEntry::NamespaceInlineClasses:
1374 case LayoutDocEntry::ConceptDefinition:
1375 case LayoutDocEntry::FileClasses:
1376 case LayoutDocEntry::FileConcepts:
1377 case LayoutDocEntry::FileInterfaces:
1378 case LayoutDocEntry::FileStructs:
1379 case LayoutDocEntry::FileExceptions:
1380 case LayoutDocEntry::FileNamespaces:
1381 case LayoutDocEntry::FileConstantGroups:
1382 case LayoutDocEntry::FileIncludes:
1383 case LayoutDocEntry::FileIncludeGraph:
1384 case LayoutDocEntry::FileIncludedByGraph:
1385 case LayoutDocEntry::FileSourceLink:
1386 case LayoutDocEntry::FileInlineClasses:
1387 case LayoutDocEntry::ModuleExports:
1388 case LayoutDocEntry::ModuleClasses:
1389 case LayoutDocEntry::ModuleConcepts:
1390 case LayoutDocEntry::ModuleUsedFiles:
1391 case LayoutDocEntry::DirSubDirs:
1392 case LayoutDocEntry::DirFiles:
1393 case LayoutDocEntry::DirGraph:
1394 err("Internal inconsistency: member '{}' should not be part of "
1395 "LayoutDocManager::Group entry list\n",lde->entryToString());
1396 break;
1397 }
1398 }
1399
1400 //---------------------------------------- end flexible part -------------------------------
1401
1402 for (auto &subgd : getSubGroups())
1403 {
1404 if (!subgd->isReference())
1405 {
1406 if (subgd->partOfGroups().front() == this)
1407 {
1408 ol.writePageLink(subgd->getOutputFileBase(), FALSE);
1409 }
1410 else
1411 {
1412 // Could write a note explaining that the subgroup belongs to another
1413 // group and add a link here.
1414 }
1415 }
1416 }
1417 if (generateTreeView && Config_getBool(PAGE_OUTLINE_PANEL))
1418 {
1419 ol.pushGeneratorState();
1421 ol.endContents();
1422 ol.writeString("</div><!-- doc-content -->\n");
1424 ol.writeString("</div><!-- container -->\n");
1425 ol.popGeneratorState();
1426 endFile(ol,true,true);
1427 }
1428 else
1429 {
1430 endFile(ol);
1431 }
1432
1433 ol.popGeneratorState();
1434
1435 if (Config_getBool(SEPARATE_MEMBER_PAGES))
1436 {
1437 m_allMemberList.sort();
1438 writeMemberPages(ol, hierarchyLevel + 1);
1439 }
1440}
virtual const GroupList & partOfGroups() const =0
int getStartBodyLine() const override
void endMemberDeclarations(OutputList &ol)
void startMemberDocumentation(OutputList &ol)
void writeSummaryLinks(OutputList &ol) const override
void startMemberDeclarations(OutputList &ol)
void writeNamespaces(OutputList &ol, const QCString &title)
Definition groupdef.cpp:964
void writeDirs(OutputList &ol, const QCString &title)
void writeInlineClasses(OutputList &ol)
void writeMemberDeclarations(OutputList &ol, MemberListType lt, const QCString &title)
void writeModules(OutputList &ol, const QCString &title)
void writeGroupGraph(OutputList &ol)
Definition groupdef.cpp:901
void writeAuthorSection(OutputList &ol)
void endMemberDocumentation(OutputList &ol)
const GroupList & getSubGroups() const override
Definition groupdef.cpp:115
void writePageDocumentation(OutputList &ol)
void writeMemberGroups(OutputList &ol)
void writeMemberPages(OutputList &ol, int hierarchyLevel) override
void writePageNavigation(OutputList &ol) const override
void writeFiles(OutputList &ol, const QCString &title)
Definition groupdef.cpp:926
void writeMemberDocumentation(OutputList &ol, MemberListType lt, const QCString &title)
void writeConcepts(OutputList &ol, const QCString &title)
void writeNestedGroups(OutputList &ol, const QCString &title)
Definition groupdef.cpp:970
void writeDetailedDescription(OutputList &ol, const QCString &title)
Definition groupdef.cpp:782
void writeBriefDescription(OutputList &ol)
Definition groupdef.cpp:859
void writeClasses(OutputList &ol, const QCString &title)
static LayoutDocManager & instance()
Returns a reference to this singleton.
Definition layout.cpp:1437
void endTitleHead(const QCString &fileName, const QCString &name)
Definition outputlist.h:405
void startTitleHead(const QCString &fileName)
Definition outputlist.h:403
void endContents()
Definition outputlist.h:620
void endHeaderSection()
Definition outputlist.h:467
void startHeaderSection()
Definition outputlist.h:465
void startContents()
Definition outputlist.h:618
void writePageLink(const QCString &name, bool first)
Definition outputlist.h:389
void endFile(OutputList &ol, bool skipNavIndex, bool skipEndContents, const QCString &navPath)
Definition index.cpp:427
void startFile(OutputList &ol, const QCString &name, bool isSource, const QCString &manName, const QCString &title, HighlightedItem hli, bool additionalIndices, const QCString &altSidebarName, int hierarchyLevel, const QCString &allMembersFile)
Definition index.cpp:401
QCString title(SrcLangExt lang) const
Definition layout.cpp:1788
MemberListType type
Definition layout.h:118
MemberListType type
Definition layout.h:137
QCString title(SrcLangExt lang) const
Definition layout.cpp:1800
QCString title(SrcLangExt lang) const
Definition layout.cpp:1781
SrcLangExt
Definition types.h:207
void addGroupListToTitle(OutputList &ol, const Definition *d)
Definition util.cpp:4833

References addGroupListToTitle(), Config_getBool, OutputList::disable(), OutputList::disableAllBut(), DefinitionMixin< GroupDef >::docFile(), OutputList::endContents(), endFile(), OutputList::endHeaderSection(), endMemberDeclarations(), endMemberDocumentation(), OutputList::endTitleHead(), err, FALSE, OutputList::generateDoc(), DefinitionMixin< GroupDef >::getLanguage(), getOutputFileBase(), DefinitionMixin< GroupDef >::getStartBodyLine(), getSubGroups(), Html, LayoutDocManager::instance(), m_allMemberList, m_title, Man, DefinitionMixin< GroupDef >::name(), OutputList::parseText(), Definition::partOfGroups(), OutputList::popGeneratorState(), OutputList::pushGeneratorState(), OutputList::startContents(), startFile(), OutputList::startHeaderSection(), startMemberDeclarations(), startMemberDocumentation(), OutputList::startTitleHead(), LayoutDocEntryMemberDecl::title(), LayoutDocEntryMemberDef::title(), LayoutDocEntrySection::title(), Topics, LayoutDocEntryMemberDecl::type, LayoutDocEntryMemberDef::type, writeAuthorSection(), writeBriefDescription(), writeClasses(), writeConcepts(), writeDetailedDescription(), writeDirs(), writeFiles(), writeGroupGraph(), writeInlineClasses(), writeMemberDeclarations(), writeMemberDocumentation(), writeMemberGroups(), writeMemberPages(), writeModules(), writeNamespaces(), writeNestedGroups(), writePageDocumentation(), OutputList::writePageLink(), writePageNavigation(), OutputList::writeString(), and writeSummaryLinks().

◆ writeFiles()

void GroupDefImpl::writeFiles ( OutputList & ol,
const QCString & title )
private

Definition at line 926 of file groupdef.cpp.

927{
928 // write list of files
929 if (!m_fileList.empty())
930 {
931 ol.startMemberHeader("files");
932 ol.parseText(title);
933 ol.endMemberHeader();
934 ol.startMemberList();
935 for (const auto &fd : m_fileList)
936 {
937 if (!fd->hasDocumentation()) continue;
939 QCString anc = fd->anchor();
940 if (anc.isEmpty()) anc=fd->displayName(); else anc.prepend(fd->displayName()+"_");
944 ol.writeObjectLink(fd->getReference(),fd->getOutputFileBase(),QCString(),fd->displayName());
946 if (!fd->briefDescription().isEmpty() && Config_getBool(BRIEF_MEMBER_DESC))
947 {
948 ol.startMemberDescription(fd->getOutputFileBase());
950 briefLine(),
951 fd,
952 nullptr,
953 fd->briefDescription(),
954 DocOptions()
955 .setSingleLine(true));
957 }
958 ol.endMemberDeclaration(QCString(),QCString());
959 }
960 ol.endMemberList();
961 }
962}
void docify(const QCString &s)
Definition outputlist.h:437
virtual QCString trFile(bool first_capital, bool singular)=0

References DefinitionMixin< GroupDef >::briefFile(), DefinitionMixin< GroupDef >::briefLine(), Config_getBool, OutputList::docify(), OutputList::endMemberDeclaration(), OutputList::endMemberDescription(), OutputList::endMemberHeader(), OutputList::endMemberItem(), OutputList::endMemberList(), FALSE, OutputList::generateDoc(), OutputList::insertMemberAlign(), QCString::isEmpty(), m_fileList, OutputGenerator::Normal, OutputList::parseText(), QCString::prepend(), OutputList::startMemberDeclaration(), OutputList::startMemberDescription(), OutputList::startMemberHeader(), OutputList::startMemberItem(), OutputList::startMemberList(), theTranslator, TRUE, and OutputList::writeObjectLink().

Referenced by writeDocumentation().

◆ writeGroupGraph()

void GroupDefImpl::writeGroupGraph ( OutputList & ol)
private

Definition at line 901 of file groupdef.cpp.

902{
903 if (Config_getBool(HAVE_DOT) && m_hasGroupGraph /*&& Config_getBool(GROUP_GRAPHS)*/)
904 {
905 DotGroupCollaboration graph(this);
906 if (graph.isTooBig())
907 {
908 warn_uncond("Group dependency graph for '{}' not generated, too many nodes ({}), threshold is {}. Consider increasing DOT_GRAPH_MAX_NODES.\n",
909 name(), graph.numNodes(), Config_getInt(DOT_GRAPH_MAX_NODES));
910 }
911 else if (!graph.isTrivial())
912 {
913 msg("Generating dependency graph for group {}\n",qualifiedName());
916 //ol.startParagraph();
919 ol.endGroupCollaboration(graph);
920 //ol.endParagraph();
922 }
923 }
924}
QCString qualifiedName() const override
void endGroupCollaboration(DotGroupCollaboration &g)
Definition outputlist.h:666
void startGroupCollaboration()
Definition outputlist.h:664
virtual QCString trCollaborationDiagram(const QCString &clName)=0
#define Config_getInt(name)
Definition config.h:34
#define warn_uncond(fmt,...)
Definition message.h:122
#define msg(fmt,...)
Definition message.h:94

References Config_getBool, Config_getInt, OutputList::disable(), OutputList::endGroupCollaboration(), DotGroupCollaboration::isTooBig(), DotGroupCollaboration::isTrivial(), m_hasGroupGraph, m_title, Man, msg, DefinitionMixin< GroupDef >::name(), DotGroupCollaboration::numNodes(), OutputList::parseText(), OutputList::popGeneratorState(), OutputList::pushGeneratorState(), DefinitionMixin< GroupDef >::qualifiedName(), OutputList::startGroupCollaboration(), theTranslator, and warn_uncond.

Referenced by writeDocumentation().

◆ writeInlineClasses()

void GroupDefImpl::writeInlineClasses ( OutputList & ol)
private

Definition at line 1082 of file groupdef.cpp.

1083{
1084 m_classes.writeDocumentation(ol);
1085}

References m_classes.

Referenced by writeDocumentation().

◆ writeMemberDeclarations()

void GroupDefImpl::writeMemberDeclarations ( OutputList & ol,
MemberListType lt,
const QCString & title )
private

Definition at line 1964 of file groupdef.cpp.

1965{
1966 bool optimizeVhdl = Config_getBool(OPTIMIZE_OUTPUT_VHDL);
1967
1968 MemberList * ml = getMemberList(lt);
1969 if (optimizeVhdl && ml)
1970 {
1971 VhdlDocGen::writeVhdlDeclarations(ml,ol,this,nullptr,nullptr,nullptr,nullptr);
1972 return;
1973 }
1974 if (ml)
1975 {
1976 ml->writeDeclarations(ol,nullptr,nullptr,nullptr,this,nullptr,title,QCString());
1977 }
1978}
void writeDeclarations(OutputList &ol, const ClassDef *cd, const NamespaceDef *nd, const FileDef *fd, const GroupDef *gd, const ModuleDef *mod, const QCString &title, const QCString &subtitle, bool showEnumValues=FALSE, bool showInline=FALSE, const ClassDef *inheritedFrom=nullptr, MemberListType lt=MemberListType::PubMethods(), bool showSectionTitle=true) const
Writes the list of members to the output.
static void writeVhdlDeclarations(const MemberList *, OutputList &, const GroupDef *, const ClassDef *, const FileDef *, const NamespaceDef *, const ModuleDef *)

References Config_getBool, getMemberList(), MemberList::writeDeclarations(), and VhdlDocGen::writeVhdlDeclarations().

Referenced by writeDocumentation().

◆ writeMemberDocumentation()

void GroupDefImpl::writeMemberDocumentation ( OutputList & ol,
MemberListType lt,
const QCString & title )
private

Definition at line 1980 of file groupdef.cpp.

1981{
1982 MemberList * ml = getMemberList(lt);
1983 if (ml) ml->writeDocumentation(ol,name(),this,title,ml->listType().toLabel());
1984}
MemberListType listType() const
Definition memberlist.h:130
void writeDocumentation(OutputList &ol, const QCString &scopeName, const Definition *container, const QCString &title, const QCString &anchor, bool showEnumValues=FALSE, bool showInline=FALSE) const
constexpr const char * toLabel() const noexcept
Definition types.h:402

References getMemberList(), MemberList::listType(), DefinitionMixin< GroupDef >::name(), MemberListType::toLabel(), and MemberList::writeDocumentation().

Referenced by writeDocumentation().

◆ writeMemberGroups()

void GroupDefImpl::writeMemberGroups ( OutputList & ol)
private

Definition at line 1114 of file groupdef.cpp.

1115{
1116 /* write user defined member groups */
1117 for (const auto &mg : m_memberGroups)
1118 {
1119 mg->writeDeclarations(ol,nullptr,nullptr,nullptr,this,nullptr);
1120 }
1121}

References m_memberGroups.

Referenced by writeDocumentation().

◆ writeMemberPages()

void GroupDefImpl::writeMemberPages ( OutputList & ol,
int hierarchyLevel )
overridevirtual

Implements GroupDef.

Definition at line 1442 of file groupdef.cpp.

1443{
1444 ol.pushGeneratorState();
1446
1447 for (const auto &ml : m_memberLists)
1448 {
1449 if (ml->listType().isDocumentation())
1450 {
1451 ml->writeDocumentationPage(ol,name(),this,hierarchyLevel);
1452 }
1453 }
1454
1455 ol.popGeneratorState();
1456}

References OutputList::disableAllBut(), Html, m_memberLists, DefinitionMixin< GroupDef >::name(), OutputList::popGeneratorState(), and OutputList::pushGeneratorState().

Referenced by writeDocumentation().

◆ writeModules()

void GroupDefImpl::writeModules ( OutputList & ol,
const QCString & title )
private

Definition at line 1075 of file groupdef.cpp.

1076{
1077 // write list of modules
1078 m_modules.writeDeclaration(ol,title,FALSE);
1079}

References FALSE, and m_modules.

Referenced by writeDocumentation().

◆ writeNamespaces()

void GroupDefImpl::writeNamespaces ( OutputList & ol,
const QCString & title )
private

Definition at line 964 of file groupdef.cpp.

965{
966 // write list of namespaces
967 m_namespaces.writeDeclaration(ol,title);
968}

References m_namespaces.

Referenced by writeDocumentation().

◆ writeNestedGroups()

void GroupDefImpl::writeNestedGroups ( OutputList & ol,
const QCString & title )
private

Definition at line 970 of file groupdef.cpp.

971{
972 // write list of groups
973 int count=0;
974 for (const auto &gd : m_groups)
975 {
976 if (gd->isVisible()) count++;
977 }
978 if (count>0)
979 {
980 ol.startMemberHeader("groups");
981 ol.parseText(title);
982 ol.endMemberHeader();
983 ol.startMemberList();
984 for (const auto &gd : m_groups)
985 {
986 if (gd->isVisible())
987 {
988 if (!gd->hasDocumentation()) continue;
990 QCString anc = gd->anchor();
991 if (anc.isEmpty()) anc=gd->name(); else anc.prepend(gd->name()+"_");
994 ol.startIndexItem(gd->getReference(),gd->getOutputFileBase());
995 ol.generateDoc(gd->getDefFileName(),
996 gd->getDefLine(),
997 gd,
998 nullptr,
999 gd->groupTitle(),
1000 DocOptions()
1001 .setSingleLine(true)
1002 .setAutolinkSupport(false));
1003 ol.endIndexItem(gd->getReference(),gd->getOutputFileBase());
1005 if (!gd->briefDescription().isEmpty() && Config_getBool(BRIEF_MEMBER_DESC))
1006 {
1007 ol.startMemberDescription(gd->getOutputFileBase());
1009 briefLine(),
1010 gd,
1011 nullptr,
1012 gd->briefDescription(),
1013 DocOptions()
1014 .setSingleLine(true));
1016 }
1017 ol.endMemberDeclaration(QCString(),QCString());
1018 }
1019 }
1020 ol.endMemberList();
1021 }
1022}
void startIndexItem(const QCString &ref, const QCString &file)
Definition outputlist.h:433
void endIndexItem(const QCString &ref, const QCString &file)
Definition outputlist.h:435

References DefinitionMixin< GroupDef >::briefFile(), DefinitionMixin< GroupDef >::briefLine(), Config_getBool, OutputList::endIndexItem(), OutputList::endMemberDeclaration(), OutputList::endMemberDescription(), OutputList::endMemberHeader(), OutputList::endMemberItem(), OutputList::endMemberList(), OutputList::generateDoc(), OutputList::insertMemberAlign(), QCString::isEmpty(), m_groups, OutputGenerator::Normal, OutputList::parseText(), QCString::prepend(), OutputList::startIndexItem(), OutputList::startMemberDeclaration(), OutputList::startMemberDescription(), OutputList::startMemberHeader(), OutputList::startMemberItem(), and OutputList::startMemberList().

Referenced by writeDocumentation().

◆ writePageDocumentation()

void GroupDefImpl::writePageDocumentation ( OutputList & ol)
private

Definition at line 1087 of file groupdef.cpp.

1088{
1089 for (const auto *pd : m_pages)
1090 {
1091 if (!pd->isReference())
1092 {
1093 const SectionInfo *si=nullptr;
1094 if (pd->hasTitle() && !pd->name().isEmpty() &&
1095 (si=SectionManager::instance().find(pd->name()))!=nullptr)
1096 {
1098 ol.docify(si->title());
1100 }
1101 ol.startTextBlock();
1102 ol.generateDoc(pd->docFile(),
1103 pd->docLine(),
1104 pd,
1105 nullptr,
1106 (pd->documentation()+pd->inbodyDocumentation()),
1107 DocOptions()
1108 .setIndexWords(true));
1109 ol.endTextBlock();
1110 }
1111 }
1112}
const T * find(const std::string &key) const
Definition linkedmap.h:47
void endTextBlock(bool paraBreak=FALSE)
Definition outputlist.h:672
void endSection(const QCString &lab, SectionType t)
Definition outputlist.h:588
void startTextBlock(bool dense=FALSE)
Definition outputlist.h:670
void startSection(const QCString &lab, const QCString &title, SectionType t)
Definition outputlist.h:586
QCString label() const
Definition section.h:68
QCString title() const
Definition section.h:69
static SectionManager & instance()
returns a reference to the singleton
Definition section.h:178
static constexpr int Subsection
Definition section.h:34

References OutputList::docify(), OutputList::endSection(), OutputList::endTextBlock(), OutputList::generateDoc(), SectionManager::instance(), SectionInfo::label(), m_pages, OutputList::startSection(), OutputList::startTextBlock(), SectionType::Subsection, and SectionInfo::title().

Referenced by writeDocumentation().

◆ writePageNavigation()

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

Reimplemented from DefinitionMixin< GroupDef >.

Definition at line 1218 of file groupdef.cpp.

1219{
1220 ol.writePageOutline();
1221}
void writePageOutline()
Definition outputlist.h:616

References OutputList::writePageOutline().

Referenced by writeDocumentation().

◆ writeQuickMemberLinks()

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

Reimplemented from DefinitionMixin< GroupDef >.

Definition at line 1458 of file groupdef.cpp.

1459{
1460 bool createSubDirs=Config_getBool(CREATE_SUBDIRS);
1461
1462 ol.writeString(" <div class=\"navtab\">\n");
1463 ol.writeString(" <table>\n");
1464
1465 for (const auto *md : m_allMemberList)
1466 {
1467 if (md->getGroupDef()==this && md->isLinkable() && !md->isEnumValue())
1468 {
1469 if (md->isLinkableInProject())
1470 {
1471 QCString fn = md->getOutputFileBase();
1473 if (md==currentMd) // selected item => highlight
1474 {
1475 ol.writeString(" <tr><td class=\"navtabHL\">");
1476 }
1477 else
1478 {
1479 ol.writeString(" <tr><td class=\"navtab\">");
1480 }
1481 ol.writeString("<span class=\"label\"><a ");
1482 ol.writeString("href=\"");
1483 if (createSubDirs) ol.writeString("../../");
1484 ol.writeString(fn+"#"+md->anchor());
1485 ol.writeString("\">");
1486 ol.writeString(convertToHtml(md->localName()));
1487 ol.writeString("</a></span>");
1488 ol.writeString("</td></tr>\n");
1489 }
1490 }
1491 }
1492 ol.writeString(" </table>\n");
1493 ol.writeString(" </div>\n");
1494}
QCString convertToHtml(const QCString &s, bool keepEntities)
Definition util.cpp:3893
void createSubDirs(const Dir &d)
Definition util.cpp:3570
void addHtmlExtensionIfMissing(QCString &fName)
Definition util.cpp:4843

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

◆ writeSummaryLinks()

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

Reimplemented from DefinitionMixin< GroupDef >.

Definition at line 1166 of file groupdef.cpp.

1167{
1168 ol.pushGeneratorState();
1170 bool first=TRUE;
1171 SrcLangExt lang = getLanguage();
1172 for (const auto &lde : LayoutDocManager::instance().docEntries(LayoutDocManager::Group))
1173 {
1174 if ((lde->kind()==LayoutDocEntry::GroupClasses && m_classes.declVisible()) ||
1175 (lde->kind()==LayoutDocEntry::GroupConcepts && m_concepts.declVisible()) ||
1176 (lde->kind()==LayoutDocEntry::GroupModules && m_modules.declVisible()) ||
1177 (lde->kind()==LayoutDocEntry::GroupNamespaces && m_namespaces.declVisible(false)) ||
1178 (lde->kind()==LayoutDocEntry::GroupFiles && !m_fileList.empty()) ||
1179 (lde->kind()==LayoutDocEntry::GroupNestedGroups && !m_groups.empty()) ||
1180 (lde->kind()==LayoutDocEntry::GroupDirs && !m_dirList.empty())
1181 )
1182 {
1183 const LayoutDocEntrySection *ls = dynamic_cast<const LayoutDocEntrySection*>(lde.get());
1184 if (ls)
1185 {
1186 QCString label = lde->kind()==LayoutDocEntry::GroupClasses ? "nested-classes" :
1187 lde->kind()==LayoutDocEntry::GroupConcepts ? "concepts" :
1188 lde->kind()==LayoutDocEntry::GroupModules ? "modules" :
1189 lde->kind()==LayoutDocEntry::GroupNamespaces ? "namespaces" :
1190 lde->kind()==LayoutDocEntry::GroupFiles ? "files" :
1191 lde->kind()==LayoutDocEntry::GroupNestedGroups ? "groups" :
1192 "dirs";
1193 ol.writeSummaryLink(QCString(),label,ls->title(lang),first);
1194 first=FALSE;
1195 }
1196 }
1197 else if (lde->kind()==LayoutDocEntry::MemberDecl)
1198 {
1199 const LayoutDocEntryMemberDecl *lmd = dynamic_cast<const LayoutDocEntryMemberDecl*>(lde.get());
1200 if (lmd)
1201 {
1202 MemberList * ml = getMemberList(lmd->type);
1203 if (ml && ml->declVisible())
1204 {
1205 ol.writeSummaryLink(QCString(),ml->listType().toLabel(),lmd->title(lang),first);
1206 first=FALSE;
1207 }
1208 }
1209 }
1210 }
1211 if (!first)
1212 {
1213 ol.writeString(" </div>\n");
1214 }
1215 ol.popGeneratorState();
1216}
bool declVisible() const
void writeSummaryLink(const QCString &file, const QCString &anchor, const QCString &title, bool first)
Definition outputlist.h:614

References MemberList::declVisible(), OutputList::disableAllBut(), FALSE, DefinitionMixin< GroupDef >::getLanguage(), getMemberList(), Html, LayoutDocManager::instance(), MemberList::listType(), m_classes, m_concepts, m_dirList, m_fileList, m_groups, m_modules, m_namespaces, OutputList::popGeneratorState(), OutputList::pushGeneratorState(), LayoutDocEntryMemberDecl::title(), LayoutDocEntrySection::title(), MemberListType::toLabel(), TRUE, LayoutDocEntryMemberDecl::type, OutputList::writeString(), and OutputList::writeSummaryLink().

Referenced by writeDocumentation().

◆ writeTagFile()

void GroupDefImpl::writeTagFile ( TextStream & tagFile)
overridevirtual

Implements GroupDef.

Definition at line 648 of file groupdef.cpp.

649{
650 QCString fn = getOutputFileBase();
652 tagFile << " <compound kind=\"group\">\n";
653 tagFile << " <name>" << convertToXML(name()) << "</name>\n";
654 tagFile << " <title>" << convertToXML(m_title) << "</title>\n";
655 tagFile << " <filename>" << fn << "</filename>\n";
656 for (const auto &lde : LayoutDocManager::instance().docEntries(LayoutDocManager::Group))
657 {
658 switch (lde->kind())
659 {
660 case LayoutDocEntry::GroupClasses:
661 {
662 for (const auto &cd : m_classes)
663 {
664 if (cd->isLinkableInProject())
665 {
666 tagFile << " <class kind=\"" << cd->compoundTypeString()
667 << "\">" << convertToXML(cd->name()) << "</class>\n";
668 }
669 }
670 }
671 break;
672 case LayoutDocEntry::GroupConcepts:
673 {
674 for (const auto &cd : m_concepts)
675 {
676 if (cd->isLinkableInProject())
677 {
678 tagFile << " <concept>" << convertToXML(cd->name())
679 << "</concept>\n";
680 }
681 }
682 }
683 break;
684 case LayoutDocEntry::GroupModules:
685 {
686 for (const auto &mod : m_modules)
687 {
688 if (mod->isLinkableInProject())
689 {
690 tagFile << " <module>" << convertToXML(mod->name())
691 << "</module>\n";
692 }
693 }
694 }
695 break;
696 case LayoutDocEntry::GroupNamespaces:
697 {
698 for (const auto &nd : m_namespaces)
699 {
700 if (nd->isLinkableInProject())
701 {
702 tagFile << " <namespace>" << convertToXML(nd->name())
703 << "</namespace>\n";
704 }
705 }
706 }
707 break;
708 case LayoutDocEntry::GroupFiles:
709 {
710 for (const auto &fd : m_fileList)
711 {
712 if (fd->isLinkableInProject())
713 {
714 tagFile << " <file>" << convertToXML(fd->name()) << "</file>\n";
715 }
716 }
717 }
718 break;
719 case LayoutDocEntry::GroupPageDocs:
720 {
721 for (const auto &pd : m_pages)
722 {
723 QCString pageName = pd->getOutputFileBase();
724 if (pd->isLinkableInProject())
725 {
726 tagFile << " <page>" << convertToXML(pageName) << "</page>\n";
727 }
728 }
729 }
730 break;
731 case LayoutDocEntry::GroupDirs:
732 {
733 for (const auto &dd : m_dirList)
734 {
735 if (dd->isLinkableInProject())
736 {
737 tagFile << " <dir>" << convertToXML(dd->displayName()) << "</dir>\n";
738 }
739 }
740 }
741 break;
742 case LayoutDocEntry::GroupNestedGroups:
743 {
744 for (const auto &gd : m_groups)
745 {
746 if (gd->isVisible())
747 {
748 tagFile << " <subgroup>" << convertToXML(gd->name()) << "</subgroup>\n";
749 }
750 }
751 }
752 break;
753 case LayoutDocEntry::MemberDecl:
754 {
755 const LayoutDocEntryMemberDecl *lmd = dynamic_cast<const LayoutDocEntryMemberDecl*>(lde.get());
756 if (lmd)
757 {
758 MemberList * ml = getMemberList(lmd->type);
759 if (ml)
760 {
761 ml->writeTagFile(tagFile,true);
762 }
763 }
764 }
765 break;
766 case LayoutDocEntry::MemberGroups:
767 {
768 for (const auto &mg : m_memberGroups)
769 {
770 mg->writeTagFile(tagFile,true);
771 }
772 }
773 break;
774 default:
775 break;
776 }
777 }
779 tagFile << " </compound>\n";
780}
void writeDocAnchorsToTagFile(TextStream &fs) const override
void writeTagFile(TextStream &, bool useQualifiedName=false, bool showNamespaceMembers=true)
QCString convertToXML(const QCString &s, bool keepEntities)
Definition util.cpp:3842

References addHtmlExtensionIfMissing(), convertToXML(), getMemberList(), getOutputFileBase(), LayoutDocManager::instance(), m_classes, m_concepts, m_dirList, m_fileList, m_groups, m_memberGroups, m_modules, m_namespaces, m_pages, m_title, DefinitionMixin< GroupDef >::name(), LayoutDocEntryMemberDecl::type, DefinitionMixin< GroupDef >::writeDocAnchorsToTagFile(), and MemberList::writeTagFile().

Member Data Documentation

◆ m_allMemberList

MemberList GroupDefImpl::m_allMemberList
private

◆ m_allMemberNameInfoLinkedMap

MemberNameInfoLinkedMap GroupDefImpl::m_allMemberNameInfoLinkedMap
private

Definition at line 166 of file groupdef.cpp.

Referenced by insertMember(), and removeMember().

◆ m_classes

◆ m_concepts

ConceptLinkedRefMap GroupDefImpl::m_concepts
private

◆ m_dirList

DirList GroupDefImpl::m_dirList
private

◆ m_examples

PageLinkedRefMap GroupDefImpl::m_examples
private

Definition at line 163 of file groupdef.cpp.

Referenced by addExample(), getExamples(), and numDocMembers().

◆ m_fileList

FileList GroupDefImpl::m_fileList
private

◆ m_fileName

QCString GroupDefImpl::m_fileName
private

Definition at line 155 of file groupdef.cpp.

Referenced by getOutputFileBase().

◆ m_groups

GroupList GroupDefImpl::m_groups
private

◆ m_groupScope

Definition* GroupDefImpl::m_groupScope
private

Definition at line 167 of file groupdef.cpp.

Referenced by getGroupScope(), GroupDefImpl(), and setGroupScope().

◆ m_hasGroupGraph

bool GroupDefImpl::m_hasGroupGraph = false
private

Definition at line 171 of file groupdef.cpp.

Referenced by GroupDefImpl(), hasGroupGraph(), overrideGroupGraph(), and writeGroupGraph().

◆ m_memberGroups

◆ m_memberLists

◆ m_modules

ModuleLinkedRefMap GroupDefImpl::m_modules
private

◆ m_namespaces

NamespaceLinkedRefMap GroupDefImpl::m_namespaces
private

◆ m_pages

◆ m_subGrouping

bool GroupDefImpl::m_subGrouping
private

Definition at line 170 of file groupdef.cpp.

Referenced by GroupDefImpl(), and subGrouping().

◆ m_title

QCString GroupDefImpl::m_title
private

◆ m_titleSet

bool GroupDefImpl::m_titleSet
private

Definition at line 154 of file groupdef.cpp.

Referenced by hasGroupTitle(), and setGroupTitleLocal().


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