Doxygen
Loading...
Searching...
No Matches
DefinitionImpl Class Reference

#include <src/definitionimpl.h>

Classes

class  Private
 Private data associated with a Symbol DefinitionImpl object. More...

Public Member Functions

 DefinitionImpl (Definition *def, const DString &defFileName, int defLine, size_t defColumn, const DString &name, const char *b=nullptr, const char *d=nullptr, bool isSymbol=true)
 ~DefinitionImpl ()
 DefinitionImpl (const DefinitionImpl &d)
DefinitionImploperator= (const DefinitionImpl &d)
 DefinitionImpl (DefinitionImpl &&d)=delete
DefinitionImploperator= (DefinitionImpl &&d)=delete
const DStringname () const
bool isAnonymous () const
const DStringlocalName () const
DString qualifiedName () const
DString symbolName () const
DString getSourceFileBase () const
DString getSourceAnchor () const
DString documentation () const
int docLine () const
DString docFile () const
DString briefDescription (bool abbreviate=false) const
DString briefDescriptionAsTooltip () const
int briefLine () const
DString inbodyDocumentation () const
DString inbodyFile () const
int inbodyLine () const
DString briefFile () const
DString getDefFileName () const
DString getDefFileExtension () const
int getDefLine () const
size_t getDefColumn () const
bool hasDocumentation () const
bool hasUserDocumentation () const
bool isVisibleInProject () const
bool isVisible () const
bool isHidden () const
bool isArtificial () const
bool isExported () const
DString getReference () const
bool isReference () const
DString externalReference (const DString &relPath) const
int getStartDefLine () const
int getStartBodyLine () const
int getEndBodyLine () const
const FileDefgetBodyDef () const
SrcLangExt getLanguage () const
const GroupListpartOfGroups () const
bool isLinkableViaGroup () const
const RefItemVectorxrefListItems () const
const RequirementRefsrequirementReferences () const
const DefinitionfindInnerCompound (const DString &name) const
DefinitiongetOuterScope () const
const MemberVectorgetReferencesMembers () const
const MemberVectorgetReferencedByMembers () const
bool hasSections () const
bool hasSources () const
bool hasBriefDescription () const
DString id () const
const SectionRefsgetSectionRefs () const
void setName (const DString &name)
void setId (const DString &name)
void setDefFile (const DString &df, int defLine, size_t defColumn)
void setDocumentation (const DString &d, const DString &docFile, int docLine, bool stripWhiteSpace=true)
void setBriefDescription (const DString &b, const DString &briefFile, int briefLine)
void setInbodyDocumentation (const DString &d, const DString &docFile, int docLine)
void setReference (const DString &r)
void addSectionsToDefinition (const std::vector< const SectionInfo * > &anchorList)
void setBodySegment (int defLine, int bls, int ble)
void setBodyDef (const FileDef *fd)
void addSourceReferencedBy (MemberDef *d, const DString &sourceRefName)
void addSourceReferences (MemberDef *d, const DString &sourceRefName)
void setRefItems (const RefItemVector &sli)
void setRequirementReferences (const RequirementRefs &rqli)
void mergeRefItems (Definition *d)
void mergeReferences (const Definition *other)
void mergeReferencedBy (const Definition *other)
void addInnerCompound (Definition *d)
void setOuterScope (Definition *d)
void setHidden (bool b)
void setArtificial (bool b)
void setExported (bool b)
void setLanguage (SrcLangExt lang)
void writeSourceDef (OutputList &ol) const
void writeInlineCode (OutputList &ol, const DString &scopeName) const
bool hasSourceRefs () const
bool hasSourceReffedBy () const
void writeSourceRefs (OutputList &ol, const DString &scopeName) const
void writeSourceReffedBy (OutputList &ol, const DString &scopeName) const
bool hasRequirementRefs () const
void writeRequirementRefs (OutputList &ol) const
void makePartOfGroup (GroupDef *gd)
void writeNavigationPath (OutputList &ol) const
DString navigationPathAsString () const
void writeQuickMemberLinks (OutputList &, const MemberDef *) const
void writeSummaryLinks (OutputList &) const
void writePageNavigation (OutputList &ol) const
DString pathFragment () const
void writeDocAnchorsToTagFile (TextStream &) const
void setLocalName (const DString &name)
void writeToc (OutputList &ol, const LocalToc &lt) const
void computeTooltip ()
void _setSymbolName (const DString &name)
DString _symbolName () const

Private Member Functions

int _getXRefListId (const DString &listName) const
void _writeSourceRefList (OutputList &ol, const DString &scopeName, const DString &text, const std::unordered_map< std::string, MemberDef * > &members, bool) const
void _setBriefDescription (const DString &b, const DString &briefFile, int briefLine)
void _setDocumentation (const DString &d, const DString &docFile, int docLine, bool stripWhiteSpace, bool atTop)
void _setInbodyDocumentation (const DString &d, const DString &docFile, int docLine)
bool _docsAlreadyAdded (const DString &doc, DString &sigList)

Private Attributes

std::unique_ptr< Privatep

Detailed Description

Definition at line 25 of file definitionimpl.h.

Constructor & Destructor Documentation

◆ DefinitionImpl() [1/3]

DefinitionImpl::DefinitionImpl ( Definition * def,
const DString & defFileName,
int defLine,
size_t defColumn,
const DString & name,
const char * b = nullptr,
const char * d = nullptr,
bool isSymbol = true )

Definition at line 250 of file definition.cpp.

254 : p(std::make_unique<Private>())
255{
256 setName(name);
257 p->def = def;
258 p->defLine = dl;
259 p->defColumn = dc;
260 p->init(df,name);
261 p->isSymbol = isSymbol;
262 if (isSymbol) addToMap(name,def);
263 _setBriefDescription(b,df,dl);
264 _setDocumentation(d,df,dl,true,false);
266 {
267 p->hidden = true;
268 }
269}
void _setBriefDescription(const DString &b, const DString &briefFile, int briefLine)
void setName(const DString &name)
void _setDocumentation(const DString &d, const DString &docFile, int docLine, bool stripWhiteSpace, bool atTop)
const DString & name() const
std::unique_ptr< Private > p
static bool matchExcludedSymbols(const DString &name)
static void addToMap(const DString &name, Definition *d)

References _setBriefDescription(), _setDocumentation(), addToMap(), matchExcludedSymbols(), name(), p, and setName().

Referenced by DefinitionImpl(), DefinitionImpl(), mergeReferencedBy(), mergeReferences(), operator=(), and operator=().

◆ ~DefinitionImpl()

DefinitionImpl::~DefinitionImpl ( )

Definition at line 286 of file definition.cpp.

287{
288 if (p->isSymbol)
289 {
290 removeFromMap(p->symbolName,p->def);
291 }
292}
static void removeFromMap(const DString &name, Definition *d)

References p, and removeFromMap().

◆ DefinitionImpl() [2/3]

DefinitionImpl::DefinitionImpl ( const DefinitionImpl & d)

Definition at line 271 of file definition.cpp.

272 : p(std::make_unique<Private>(*d.p))
273{
274 if (p->isSymbol) addToMap(p->name,p->def);
275}

References addToMap(), DefinitionImpl(), and p.

◆ DefinitionImpl() [3/3]

DefinitionImpl::DefinitionImpl ( DefinitionImpl && d)
delete

References DefinitionImpl().

Member Function Documentation

◆ _docsAlreadyAdded()

bool DefinitionImpl::_docsAlreadyAdded ( const DString & doc,
DString & sigList )
private

Definition at line 379 of file definition.cpp.

380{
381 // to avoid mismatches due to differences in indenting, we first remove
382 // double whitespaces...
383 DString docStr = doc.simplifyWhiteSpace();
384 DString sigStr = md5str(docStr.view());
385 //printf("%s:_docsAlreadyAdded doc='%s' sig='%s' docSigs='%s'\n",
386 // qPrint(name()),qPrint(doc),qPrint(sigStr),qPrint(sigList));
387 if (sigList.find(sigStr)==DString::npos) // new docs, add signature to prevent re-adding it
388 {
389 sigList+=DString(":")+sigStr;
390 return false;
391 }
392 else
393 {
394 return true;
395 }
396}
DString simplifyWhiteSpace() const
return a copy of this string with leading and trailing whitespace removed and multiple internal white...
Definition dstring.cpp:123
std::string_view view() const
Definition dstring.h:166
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:182
size_t find(char c, size_t pos=0) const
Definition dstring.h:243
DString md5str(const std::string_view &str)
Definition md5hash.h:33

References DString::find(), md5str(), DString::npos, DString::simplifyWhiteSpace(), and DString::view().

Referenced by _setBriefDescription(), _setDocumentation(), and _setInbodyDocumentation().

◆ _getXRefListId()

int DefinitionImpl::_getXRefListId ( const DString & listName) const
private

Definition at line 1367 of file definition.cpp.

1368{
1369 for (const RefItem *item : p->xrefListItems)
1370 {
1371 if (item->list()->listName()==listName)
1372 {
1373 return item->id();
1374 }
1375 }
1376 return -1;
1377}
int id() const
Definition reflist.h:51
RefList * list() const
Definition reflist.h:52
DString listName() const
Definition reflist.h:100

References RefItem::id(), RefItem::list(), RefList::listName(), and p.

◆ _setBriefDescription()

void DefinitionImpl::_setBriefDescription ( const DString & b,
const DString & briefFile,
int briefLine )
private

Definition at line 451 of file definition.cpp.

452{
453 DString brief = b;
454 brief = brief.stripWhiteSpace();
456 brief = brief.stripWhiteSpace();
457 if (brief.empty()) return;
458 size_t bl = brief.length();
459 if (bl>0)
460 {
461 if (!theTranslator || theTranslator->needsPunctuation()) // add punctuation if needed
462 {
463 int c = brief.at(bl-1);
464 switch(c)
465 {
466 case '.': case '!': case '?': case ':': break;
467 default:
468 if (isUTF8CharUpperCase(brief.str(),0) && !lastUTF8CharIsMultibyte(brief.str())) brief+='.';
469 break;
470 }
471 }
472 }
473
474 if (!_docsAlreadyAdded(brief,p->briefSignatures))
475 {
476 if (p->brief && !p->brief->doc.empty())
477 {
478 //printf("adding to details\n");
479 _setDocumentation(brief,briefFile,briefLine,false,true);
480 }
481 else
482 {
483 //fprintf(stderr,"DefinitionImpl::setBriefDescription(%s,%s,%d)\n",b,briefFile,briefLine);
484 if (!p->brief.has_value())
485 {
486 p->brief = std::make_optional<BriefInfo>();
487 }
488 BriefInfo &briefInfo = p->brief.value();
489 briefInfo.doc=brief;
490 if (briefLine!=-1)
491 {
492 briefInfo.file = briefFile;
493 briefInfo.line = briefLine;
494 }
495 else
496 {
497 briefInfo.file = briefFile;
498 briefInfo.line = 1;
499 }
500 }
501 }
502 else
503 {
504 //printf("do nothing!\n");
505 }
506}
bool empty() const
Returns true iff the string is empty (std::string compatible alias for isEmpty()).
Definition dstring.h:152
char & at(size_t i)
Returns a reference to the character at index i.
Definition dstring.h:690
DString stripWhiteSpace() const
returns a copy of this string with leading and trailing whitespace removed
Definition dstring.h:341
const std::string & str() const
Definition dstring.h:649
size_t length() const
Returns the length of the string, not counting the 0-terminator.
Definition dstring.h:155
int briefLine() const
bool _docsAlreadyAdded(const DString &doc, DString &sigList)
DString briefFile() const
virtual bool needsPunctuation()
add punctuation at the end of a brief description when needed and supported by the language
Definition translator.h:152
Translator * theTranslator
Definition language.cpp:71
DString doc
Definition definition.h:56
DString file
Definition definition.h:59
bool isUTF8CharUpperCase(const std::string &input, size_t pos)
Returns true iff the input string at byte position pos holds an upper case character.
Definition utf8.cpp:219
bool lastUTF8CharIsMultibyte(const std::string &input)
Returns true iff the last character in input is a multibyte character.
Definition utf8.cpp:213
DString stripLeadingAndTrailingEmptyLines(const DString &s, int &docLine)
Special version of DString::stripWhiteSpace() that only strips completely blank lines.
Definition util.cpp:3989

References _docsAlreadyAdded(), _setDocumentation(), DString::at(), briefFile(), briefLine(), BriefInfo::doc, DString::empty(), BriefInfo::file, isUTF8CharUpperCase(), lastUTF8CharIsMultibyte(), DString::length(), BriefInfo::line, Translator::needsPunctuation(), p, DString::str(), stripLeadingAndTrailingEmptyLines(), DString::stripWhiteSpace(), and theTranslator.

Referenced by DefinitionImpl(), and setBriefDescription().

◆ _setDocumentation()

void DefinitionImpl::_setDocumentation ( const DString & d,
const DString & docFile,
int docLine,
bool stripWhiteSpace,
bool atTop )
private

Definition at line 398 of file definition.cpp.

400{
401 //printf("%s::setDocumentation(%s,%s,%d,%d)\n",qPrint(name()),d,docFile,docLine,stripWhiteSpace);
402 if (d.empty()) return;
403 DString doc = d;
404 if (stripWhiteSpace)
405 {
407 }
408 else // don't strip whitespace
409 {
410 doc=d;
411 }
412 if (!_docsAlreadyAdded(doc,p->docSignatures))
413 {
414 //printf("setting docs for %s: '%s'\n",qPrint(name()),qPrint(m_doc));
415 if (!p->details.has_value())
416 {
417 p->details = std::make_optional<DocInfo>();
418 }
419 DocInfo &details = p->details.value();
420 if (details.doc.empty()) // fresh detailed description
421 {
422 details.doc = doc;
423 }
424 else if (atTop) // another detailed description, append it to the start
425 {
426 details.doc = doc+"\n\n"+details.doc;
427 }
428 else // another detailed description, append it to the end
429 {
430 details.doc += "\n\n"+doc;
431 }
432 if (docLine!=-1) // store location if valid
433 {
434 details.file = docFile;
435 details.line = docLine;
436 }
437 else
438 {
439 details.file = docFile;
440 details.line = 1;
441 }
442 }
443}
int docLine() const
DString docFile() const
std::string_view stripWhiteSpace(std::string_view s)
Given a string view s, returns a new, narrower view on that string, skipping over any leading or trai...
Definition stringutil.h:75
DString doc
Definition definition.h:48
int line
Definition definition.h:49
DString file
Definition definition.h:50

References _docsAlreadyAdded(), docFile(), docLine(), DString::empty(), p, stripLeadingAndTrailingEmptyLines(), and stripWhiteSpace().

Referenced by _setBriefDescription(), DefinitionImpl(), and setDocumentation().

◆ _setInbodyDocumentation()

void DefinitionImpl::_setInbodyDocumentation ( const DString & d,
const DString & docFile,
int docLine )
private

Definition at line 514 of file definition.cpp.

515{
516 if (!_docsAlreadyAdded(doc,p->docSignatures))
517 {
518 if (!p->inbodyDocs.has_value())
519 {
520 p->inbodyDocs = std::make_optional<DocInfo>();
521 }
522 DocInfo &inbodyDocs = p->inbodyDocs.value();
523 if (inbodyDocs.doc.empty()) // fresh inbody docs
524 {
525 inbodyDocs.doc = doc;
526 inbodyDocs.file = inbodyFile;
527 inbodyDocs.line = inbodyLine;
528 }
529 else // another inbody documentation fragment, append this to the end
530 {
531 inbodyDocs.doc += DString("\n\n")+doc;
532 }
533 }
534}
DString inbodyFile() const
int inbodyLine() const

References _docsAlreadyAdded(), DocInfo::doc, DString::empty(), DocInfo::file, inbodyFile(), inbodyLine(), DocInfo::line, and p.

Referenced by setInbodyDocumentation().

◆ _setSymbolName()

void DefinitionImpl::_setSymbolName ( const DString & name)

Definition at line 1871 of file definition.cpp.

1872{
1873 p->symbolName=name;
1874}

References name(), and p.

Referenced by DefinitionMixin< Base >::_setSymbolName().

◆ _symbolName()

DString DefinitionImpl::_symbolName ( ) const

Definition at line 1876 of file definition.cpp.

1877{
1878 return p->symbolName;
1879}

References p.

Referenced by DefinitionMixin< Base >::_symbolName().

◆ _writeSourceRefList()

void DefinitionImpl::_writeSourceRefList ( OutputList & ol,
const DString & scopeName,
const DString & text,
const std::unordered_map< std::string, MemberDef * > & membersMap,
bool  ) const
private

Write a reference to the source code fragments in which this definition is used.

Definition at line 1110 of file definition.cpp.

1113{
1114 if (!membersMap.empty())
1115 {
1116 auto members = refMapToVector(membersMap);
1117
1118 auto replaceFunc = [this,&members,scopeName,&ol](size_t entryIndex)
1119 {
1120 bool sourceBrowser = Config_getBool(SOURCE_BROWSER);
1121 bool refLinkSource = Config_getBool(REFERENCES_LINK_SOURCE);
1122 const MemberDef *md=members[entryIndex];
1123 if (md)
1124 {
1125 DString scope=md->getScopeString();
1126 DString name=md->name();
1127 //printf("class=%p scope=%s scopeName=%s\n",md->getClassDef(),qPrint(scope),scopeName);
1128 if (!scope.empty() && scope!=scopeName)
1129 {
1131 }
1132 if (!md->isObjCMethod() &&
1133 (md->isFunction() || md->isSlot() ||
1134 md->isPrototype() || md->isSignal()
1135 )
1136 )
1137 {
1138 name+="()";
1139 }
1140 if (sourceBrowser &&
1141 !(md->isLinkable() && !refLinkSource) &&
1142 md->getStartBodyLine()!=-1 &&
1143 md->getBodyDef()
1144 )
1145 {
1146 const int maxLineNrStr = 10;
1147 char anchorStr[maxLineNrStr];
1148 snprintf(anchorStr,maxLineNrStr,"l%05d",md->getStartBodyLine());
1149 //printf("Write object link to %s\n",qPrint(md->getBodyDef()->getSourceFileBase()));
1150 ol.writeObjectLink(DString(),md->getBodyDef()->getSourceFileBase(),anchorStr,name);
1151 }
1152 else if (md->isLinkable())
1153 {
1155 md->getOutputFileBase(),
1156 md->anchor(),name);
1157 }
1158 else
1159 {
1160 ol.docify(name);
1161 }
1162 }
1163 };
1164
1165 ol.startParagraph("reference");
1166 ol.parseText(text);
1167 ol.docify(" ");
1168 writeMarkerList(ol,
1169 theTranslator->trWriteList(static_cast<int>(members.size())).str(),
1170 members.size(),
1171 replaceFunc);
1172 ol.writeString(".");
1173 ol.endParagraph();
1174
1175 }
1176}
DString & prepend(const char *s)
Definition dstring.h:519
virtual bool isLinkable() const =0
virtual const DString & name() const =0
virtual const FileDef * getBodyDef() const =0
virtual DString anchor() const =0
virtual DString getReference() const =0
virtual DString getSourceFileBase() const =0
virtual int getStartBodyLine() const =0
virtual DString getOutputFileBase() const =0
virtual bool isSignal() const =0
virtual bool isObjCMethod() const =0
virtual bool isSlot() const =0
virtual bool isFunction() const =0
virtual DString getScopeString() const =0
virtual bool isPrototype() const =0
void parseText(const DString &textStr)
void startParagraph(const DString &classDef=DString())
Definition outputlist.h:403
void writeObjectLink(const DString &ref, const DString &file, const DString &anchor, const DString &name)
Definition outputlist.h:435
void docify(const DString &s)
Definition outputlist.h:433
void writeString(const DString &text)
Definition outputlist.h:407
void endParagraph()
Definition outputlist.h:405
virtual DString trWriteList(int numEntries)=0
#define Config_getBool(name)
Definition config.h:33
static MemberVector refMapToVector(const std::unordered_map< std::string, MemberDef * > &map)
DString getLanguageSpecificSeparator(SrcLangExt lang, bool classScope)
Definition util.cpp:4631
void writeMarkerList(OutputList &ol, const std::string &markerText, size_t numMarkers, std::function< void(size_t)> replaceFunc)
Definition util.cpp:755

References Definition::anchor(), Config_getBool, OutputList::docify(), DString::empty(), OutputList::endParagraph(), Definition::getBodyDef(), getLanguageSpecificSeparator(), Definition::getOutputFileBase(), Definition::getReference(), MemberDef::getScopeString(), Definition::getSourceFileBase(), Definition::getStartBodyLine(), MemberDef::isFunction(), Definition::isLinkable(), MemberDef::isObjCMethod(), MemberDef::isPrototype(), MemberDef::isSignal(), MemberDef::isSlot(), Definition::name(), name(), p, OutputList::parseText(), DString::prepend(), refMapToVector(), OutputList::startParagraph(), DString::str(), theTranslator, Translator::trWriteList(), writeMarkerList(), OutputList::writeObjectLink(), and OutputList::writeString().

Referenced by writeSourceReffedBy(), and writeSourceRefs().

◆ addInnerCompound()

void DefinitionImpl::addInnerCompound ( Definition * d)

Definition at line 1275 of file definition.cpp.

1276{
1277 err("DefinitionImpl::addInnerCompound() called\n");
1278}
#define err(fmt,...)
Definition message.h:127

References err.

Referenced by DefinitionMixin< Base >::addInnerCompound().

◆ addSectionsToDefinition()

void DefinitionImpl::addSectionsToDefinition ( const std::vector< const SectionInfo * > & anchorList)

Definition at line 319 of file definition.cpp.

320{
321 //printf("%s: addSectionsToDefinition(%d)\n",qPrint(name()),anchorList->count());
322 for (const SectionInfo *si : anchorList)
323 {
324 //printf("Add section '%s' to definition '%s'\n",
325 // qPrint(si->label()),qPrint(name()));
326 SectionManager &sm = SectionManager::instance();
327 SectionInfo *gsi=sm.find(si->label());
328 //printf("===== label=%s gsi=%p\n",qPrint(si->label()),(void*)gsi);
329 if (gsi==nullptr)
330 {
331 gsi = sm.add(*si);
332 }
333 if (p->sectionRefs.find(gsi->label())==nullptr)
334 {
335 p->sectionRefs.add(gsi);
336 }
337 gsi->setDefinition(p->def);
338 }
339}
const T * find(const std::string &key) const
Definition linkedmap.h:47
void setDefinition(Definition *d)
Definition section.h:83
DString label() const
Definition section.h:69
SectionInfo * add(const SectionInfo &si)
Definition section.h:139
static SectionManager & instance()
returns a reference to the singleton
Definition section.h:179

References SectionManager::add(), LinkedMap< T, Hash, KeyEqual, Map >::find(), SectionManager::instance(), SectionInfo::label(), p, and SectionInfo::setDefinition().

Referenced by DefinitionMixin< Base >::addSectionsToDefinition().

◆ addSourceReferencedBy()

void DefinitionImpl::addSourceReferencedBy ( MemberDef * d,
const DString & sourceRefName )

Definition at line 1254 of file definition.cpp.

1255{
1256 if (md)
1257 {
1258 p->sourceRefByDict.emplace(sourceRefName.str(),md);
1259 }
1260}

References p, and DString::str().

Referenced by DefinitionMixin< Base >::addSourceReferencedBy().

◆ addSourceReferences()

void DefinitionImpl::addSourceReferences ( MemberDef * d,
const DString & sourceRefName )

Definition at line 1262 of file definition.cpp.

1263{
1264 if (md)
1265 {
1266 p->sourceRefsDict.emplace(sourceRefName.str(),md);
1267 }
1268}

References p, and DString::str().

Referenced by DefinitionMixin< Base >::addSourceReferences().

◆ briefDescription()

DString DefinitionImpl::briefDescription ( bool abbreviate = false) const

Definition at line 1642 of file definition.cpp.

1643{
1644 //printf("%s::briefDescription(%d)='%s'\n",qPrint(name()),abbr,p->brief?qPrint(p->brief->doc):"<none>");
1645 return p->brief ?
1646 (abbr ? abbreviate(p->brief->doc,p->def->displayName()) : p->brief->doc) :
1647 DString("");
1648}
static DString abbreviate(const DString &s, const DString &name)

References abbreviate(), and p.

Referenced by DefinitionMixin< Base >::briefDescription(), and hasBriefDescription().

◆ briefDescriptionAsTooltip()

DString DefinitionImpl::briefDescriptionAsTooltip ( ) const

Definition at line 1661 of file definition.cpp.

1662{
1663 return p->brief ? p->brief->tooltip : DString();
1664}

References p.

Referenced by DefinitionMixin< Base >::briefDescriptionAsTooltip().

◆ briefFile()

DString DefinitionImpl::briefFile ( ) const

Definition at line 1671 of file definition.cpp.

1672{
1673 return p->brief && !p->brief->file.empty() ? p->brief->file : DString("<"+p->name+">");
1674}

References p.

Referenced by _setBriefDescription(), DefinitionMixin< Base >::briefFile(), operator=(), and setBriefDescription().

◆ briefLine()

int DefinitionImpl::briefLine ( ) const

Definition at line 1666 of file definition.cpp.

1667{
1668 return p->brief ? p->brief->line : 1;
1669}

References p.

Referenced by _setBriefDescription(), DefinitionMixin< Base >::briefLine(), operator=(), and setBriefDescription().

◆ computeTooltip()

void DefinitionImpl::computeTooltip ( )

Definition at line 1650 of file definition.cpp.

1651{
1652 if (p->brief && p->brief->tooltip.empty() && !p->brief->doc.empty())
1653 {
1654 const MemberDef *md = p->def->definitionType()==Definition::TypeMember ? toMemberDef(p->def) : nullptr;
1655 const Definition *scope = p->def->definitionType()==Definition::TypeMember ? p->def->getOuterScope() : p->def;
1656 p->brief->tooltip = parseCommentAsText(scope,md,
1657 p->brief->doc, p->brief->file, p->brief->line);
1658 }
1659}
DString parseCommentAsText(const Definition *scope, const MemberDef *md, const DString &doc, const DString &fileName, int lineNr)
MemberDef * toMemberDef(Definition *d)

References p, parseCommentAsText(), toMemberDef(), and Definition::TypeMember.

Referenced by DefinitionMixin< Base >::computeTooltip().

◆ docFile()

DString DefinitionImpl::docFile ( ) const

Definition at line 1588 of file definition.cpp.

1589{
1590 if (p->details && !p->details->file.empty()) return p->details->file;
1591 else if (p->brief && !p->brief->file.empty()) return p->brief->file;
1592 else return "<" + p->name + ">";
1593}

References p.

Referenced by _setDocumentation(), DefinitionMixin< Base >::docFile(), operator=(), setDocumentation(), and writeToc().

◆ docLine()

int DefinitionImpl::docLine ( ) const

Definition at line 1583 of file definition.cpp.

1584{
1585 return p->details ? p->details->line : p->brief ? p->brief->line : 1;
1586}

References p.

Referenced by _setDocumentation(), DefinitionMixin< Base >::docLine(), operator=(), and setDocumentation().

◆ documentation()

DString DefinitionImpl::documentation ( ) const

Definition at line 1578 of file definition.cpp.

1579{
1580 return p->details ? p->details->doc : DString("");
1581}

References p.

Referenced by DefinitionMixin< Base >::documentation().

◆ externalReference()

DString DefinitionImpl::externalReference ( const DString & relPath) const

Definition at line 1887 of file definition.cpp.

1888{
1889 DString ref = getReference();
1890 if (!ref.empty())
1891 {
1892 auto it = Doxygen::tagDestinationMap.find(ref.str());
1894 {
1895 DString result(it->second);
1896 size_t l = result.length();
1897 if (!relPath.empty() && l>0 && result.at(0)=='.')
1898 { // relative path -> prepend relPath.
1899 result.prepend(relPath);
1900 l+=relPath.length();
1901 }
1902 if (l>0 && result.at(l-1)!='/') result+='/';
1903 return result;
1904 }
1905 }
1906 return relPath;
1907}
DString getReference() const
static StringMap tagDestinationMap
Definition doxygen.h:109
DirIterator end(const DirIterator &) noexcept
Definition dir.cpp:176

References DString::at(), DString::empty(), end(), getReference(), DString::length(), DString::prepend(), DString::str(), and Doxygen::tagDestinationMap.

Referenced by DefinitionMixin< Base >::externalReference().

◆ findInnerCompound()

const Definition * DefinitionImpl::findInnerCompound ( const DString & name) const

Definition at line 1270 of file definition.cpp.

1271{
1272 return nullptr;
1273}

Referenced by DefinitionMixin< Base >::findInnerCompound().

◆ getBodyDef()

const FileDef * DefinitionImpl::getBodyDef ( ) const

Definition at line 1756 of file definition.cpp.

1757{
1758 return p->body ? p->body->fileDef : nullptr;
1759}

References p.

Referenced by DefinitionMixin< Base >::getBodyDef().

◆ getDefColumn()

size_t DefinitionImpl::getDefColumn ( ) const

Definition at line 1924 of file definition.cpp.

1925{
1926 return p->defColumn;
1927}

References p.

Referenced by DefinitionMixin< Base >::getDefColumn().

◆ getDefFileExtension()

DString DefinitionImpl::getDefFileExtension ( ) const

Definition at line 1701 of file definition.cpp.

1702{
1703 return p->defFileExt;
1704}

References p.

Referenced by DefinitionMixin< Base >::getDefFileExtension().

◆ getDefFileName()

DString DefinitionImpl::getDefFileName ( ) const

Definition at line 1696 of file definition.cpp.

1697{
1698 return p->defFileName;
1699}

References p.

Referenced by DefinitionMixin< Base >::getDefFileName().

◆ getDefLine()

int DefinitionImpl::getDefLine ( ) const

Definition at line 1919 of file definition.cpp.

1920{
1921 return p->defLine;
1922}

References p.

Referenced by DefinitionMixin< Base >::getDefLine().

◆ getEndBodyLine()

int DefinitionImpl::getEndBodyLine ( ) const

Definition at line 1751 of file definition.cpp.

1752{
1753 return p->body ? p->body->endLine : -1;
1754}

References p.

Referenced by DefinitionMixin< Base >::getEndBodyLine().

◆ getLanguage()

SrcLangExt DefinitionImpl::getLanguage ( ) const

Definition at line 1840 of file definition.cpp.

1841{
1842 return p->lang;
1843}

References p.

Referenced by DefinitionMixin< Base >::getLanguage().

◆ getOuterScope()

Definition * DefinitionImpl::getOuterScope ( ) const

Definition at line 1775 of file definition.cpp.

1776{
1777 return p->outerScope;
1778}

References p.

Referenced by DefinitionMixin< Base >::getOuterScope(), and navigationPathAsString().

◆ getReference()

DString DefinitionImpl::getReference ( ) const

Definition at line 1731 of file definition.cpp.

1732{
1733 return p->ref;
1734}

References p.

Referenced by externalReference(), and DefinitionMixin< Base >::getReference().

◆ getReferencedByMembers()

const MemberVector & DefinitionImpl::getReferencedByMembers ( ) const

Definition at line 1792 of file definition.cpp.

1793{
1794 std::lock_guard<std::mutex> lock(g_memberReferenceMutex);
1795 if (p->referencedByMembers.empty() && !p->sourceRefByDict.empty())
1796 {
1797 p->referencedByMembers = refMapToVector(p->sourceRefByDict);
1798 }
1799 return p->referencedByMembers;
1800}
static std::mutex g_memberReferenceMutex

References g_memberReferenceMutex, p, and refMapToVector().

Referenced by DefinitionMixin< Base >::getReferencedByMembers().

◆ getReferencesMembers()

const MemberVector & DefinitionImpl::getReferencesMembers ( ) const

Definition at line 1782 of file definition.cpp.

1783{
1784 std::lock_guard<std::mutex> lock(g_memberReferenceMutex);
1785 if (p->referencesMembers.empty() && !p->sourceRefsDict.empty())
1786 {
1787 p->referencesMembers = refMapToVector(p->sourceRefsDict);
1788 }
1789 return p->referencesMembers;
1790}

References g_memberReferenceMutex, p, and refMapToVector().

Referenced by DefinitionMixin< Base >::getReferencesMembers().

◆ getSectionRefs()

const SectionRefs & DefinitionImpl::getSectionRefs ( ) const

Definition at line 1566 of file definition.cpp.

1567{
1568 return p->sectionRefs;
1569}

References p.

Referenced by DefinitionMixin< Base >::getSectionRefs().

◆ getSourceAnchor()

DString DefinitionImpl::getSourceAnchor ( ) const

Definition at line 947 of file definition.cpp.

948{
949 const int maxAnchorStrLen = 20;
950 char anchorStr[maxAnchorStrLen];
951 anchorStr[0]='\0';
952 if (p->body && p->body->startLine!=-1)
953 {
954 if (Htags::useHtags)
955 {
956 snprintf(anchorStr,maxAnchorStrLen,"L%d",p->body->defLine);
957 }
958 else
959 {
960 snprintf(anchorStr,maxAnchorStrLen,"l%05d",p->body->defLine);
961 }
962 }
963 return anchorStr;
964}
static bool useHtags
Definition htags.h:23

References p, and Htags::useHtags.

Referenced by DefinitionMixin< Base >::getSourceAnchor(), and writeSourceDef().

◆ getSourceFileBase()

DString DefinitionImpl::getSourceFileBase ( ) const

Definition at line 934 of file definition.cpp.

935{
936 ASSERT(p->def->definitionType()!=Definition::TypeFile); // file overloads this method
937 DString fn;
938 bool sourceBrowser = Config_getBool(SOURCE_BROWSER);
939 if (sourceBrowser &&
940 p->body && p->body->startLine!=-1 && p->body->fileDef)
941 {
942 fn = p->body->fileDef->getSourceFileBase();
943 }
944 return fn;
945}
#define ASSERT(x)
Definition dstring.h:28

References ASSERT, Config_getBool, p, and Definition::TypeFile.

Referenced by DefinitionMixin< Base >::getSourceFileBase(), and writeSourceDef().

◆ getStartBodyLine()

int DefinitionImpl::getStartBodyLine ( ) const

Definition at line 1746 of file definition.cpp.

1747{
1748 return p->body ? p->body->startLine : -1;
1749}

References p.

Referenced by DefinitionMixin< Base >::getStartBodyLine(), and writeToc().

◆ getStartDefLine()

int DefinitionImpl::getStartDefLine ( ) const

Definition at line 1741 of file definition.cpp.

1742{
1743 return p->body ? p->body->defLine : -1;
1744}

References p.

Referenced by DefinitionMixin< Base >::getStartDefLine().

◆ hasBriefDescription()

bool DefinitionImpl::hasBriefDescription ( ) const

Definition at line 1881 of file definition.cpp.

1882{
1883 bool briefMemberDesc = Config_getBool(BRIEF_MEMBER_DESC);
1884 return !briefDescription().empty() && briefMemberDesc;
1885}
DString briefDescription(bool abbreviate=false) const

References briefDescription(), Config_getBool, and DString::empty().

Referenced by DefinitionMixin< Base >::hasBriefDescription().

◆ hasDocumentation()

bool DefinitionImpl::hasDocumentation ( ) const

Definition at line 1230 of file definition.cpp.

1231{
1232 bool extractAll = Config_getBool(EXTRACT_ALL);
1233 //bool sourceBrowser = Config_getBool(SOURCE_BROWSER);
1234 bool hasDocs =
1235 (p->details && !p->details->doc.empty()) || // has detailed docs
1236 (p->brief && !p->brief->doc.empty()) || // has brief description
1237 (p->inbodyDocs && !p->inbodyDocs->doc.empty()) || // has inbody docs
1238 extractAll //|| // extract everything
1239 // (sourceBrowser && p->body &&
1240 // p->body->startLine!=-1 && p->body->fileDef)
1241 ; // link to definition
1242 return hasDocs;
1243}

References Config_getBool, and p.

Referenced by DefinitionMixin< Base >::hasDocumentation().

◆ hasRequirementRefs()

bool DefinitionImpl::hasRequirementRefs ( ) const

Definition at line 1225 of file definition.cpp.

1226{
1227 return !p->requirementRefs.empty();
1228}

References p.

Referenced by DefinitionMixin< Base >::hasRequirementRefs().

◆ hasSections()

bool DefinitionImpl::hasSections ( ) const

Definition at line 341 of file definition.cpp.

342{
343 //printf("DefinitionImpl::hasSections(%s) #sections=%zu\n",qPrint(name()), p->sectionRefs.size());
344 if (p->sectionRefs.empty()) return false;
345 for (const SectionInfo *si : p->sectionRefs)
346 {
347 if (si->type().isSection())
348 {
349 return true;
350 }
351 }
352 return false;
353}
SectionType type() const
Definition section.h:71
constexpr bool isSection() const
Definition section.h:47

References SectionType::isSection(), p, and SectionInfo::type().

Referenced by DefinitionMixin< Base >::hasSections().

◆ hasSourceReffedBy()

bool DefinitionImpl::hasSourceReffedBy ( ) const

Definition at line 1215 of file definition.cpp.

1216{
1217 return !p->sourceRefByDict.empty();
1218}

References p.

Referenced by DefinitionMixin< Base >::hasSourceReffedBy().

◆ hasSourceRefs()

bool DefinitionImpl::hasSourceRefs ( ) const

Definition at line 1220 of file definition.cpp.

1221{
1222 return !p->sourceRefsDict.empty();
1223}

References p.

Referenced by DefinitionMixin< Base >::hasSourceRefs().

◆ hasSources()

bool DefinitionImpl::hasSources ( ) const

Definition at line 1037 of file definition.cpp.

1038{
1039 return p->body && p->body->startLine!=-1 &&
1040 p->body->endLine>=p->body->startLine &&
1041 p->body->fileDef;
1042}

References p.

Referenced by DefinitionMixin< Base >::hasSources(), and writeInlineCode().

◆ hasUserDocumentation()

bool DefinitionImpl::hasUserDocumentation ( ) const

Definition at line 1245 of file definition.cpp.

1246{
1247 bool hasDocs =
1248 (p->details && !p->details->doc.empty()) ||
1249 (p->brief && !p->brief->doc.empty()) ||
1250 (p->inbodyDocs && !p->inbodyDocs->doc.empty());
1251 return hasDocs;
1252}

References p.

Referenced by DefinitionMixin< Base >::hasUserDocumentation().

◆ id()

DString DefinitionImpl::id ( ) const

Definition at line 314 of file definition.cpp.

315{
316 return p->id;
317}

References p.

Referenced by DefinitionMixin< Base >::id(), and setId().

◆ inbodyDocumentation()

DString DefinitionImpl::inbodyDocumentation ( ) const

Definition at line 1678 of file definition.cpp.

1679{
1680 return p->inbodyDocs ? p->inbodyDocs->doc : DString("");
1681}

References p.

Referenced by DefinitionMixin< Base >::inbodyDocumentation().

◆ inbodyFile()

DString DefinitionImpl::inbodyFile ( ) const

Definition at line 1688 of file definition.cpp.

1689{
1690 return p->inbodyDocs && !p->inbodyDocs->file.empty() ? p->inbodyDocs->file : DString("<"+p->name+">");
1691}

References p.

Referenced by _setInbodyDocumentation(), DefinitionMixin< Base >::inbodyFile(), and setInbodyDocumentation().

◆ inbodyLine()

int DefinitionImpl::inbodyLine ( ) const

Definition at line 1683 of file definition.cpp.

1684{
1685 return p->inbodyDocs ? p->inbodyDocs->line : 1;
1686}

References p.

Referenced by _setInbodyDocumentation(), DefinitionMixin< Base >::inbodyLine(), and setInbodyDocumentation().

◆ isAnonymous()

bool DefinitionImpl::isAnonymous ( ) const

Definition at line 1914 of file definition.cpp.

1915{
1916 return p->isAnonymous;
1917}

References p.

Referenced by DefinitionMixin< Base >::isAnonymous().

◆ isArtificial()

bool DefinitionImpl::isArtificial ( ) const

Definition at line 1721 of file definition.cpp.

1722{
1723 return p->isArtificial;
1724}

References p.

Referenced by DefinitionMixin< Base >::isArtificial().

◆ isExported()

bool DefinitionImpl::isExported ( ) const

Definition at line 1726 of file definition.cpp.

1727{
1728 return p->isExported;
1729}

References p.

Referenced by DefinitionMixin< Base >::isExported().

◆ isHidden()

bool DefinitionImpl::isHidden ( ) const

Definition at line 1706 of file definition.cpp.

1707{
1708 return p->hidden;
1709}

References p.

Referenced by DefinitionMixin< Base >::isHidden().

◆ isLinkableViaGroup()

bool DefinitionImpl::isLinkableViaGroup ( ) const

Definition at line 1766 of file definition.cpp.

1767{
1768 for (const auto &gd : partOfGroups())
1769 {
1770 if (gd->isLinkable()) return true;
1771 }
1772 return false;
1773}
const GroupList & partOfGroups() const

References partOfGroups().

Referenced by DefinitionMixin< Base >::isLinkableViaGroup().

◆ isReference()

bool DefinitionImpl::isReference ( ) const

Definition at line 1736 of file definition.cpp.

1737{
1738 return !p->ref.empty();
1739}

References p.

Referenced by DefinitionMixin< Base >::isReference().

◆ isVisible()

bool DefinitionImpl::isVisible ( ) const

Definition at line 1716 of file definition.cpp.

1717{
1718 return p->def->isLinkable() && !p->hidden;
1719}

References p.

Referenced by DefinitionMixin< Base >::isVisible().

◆ isVisibleInProject()

bool DefinitionImpl::isVisibleInProject ( ) const

Definition at line 1711 of file definition.cpp.

1712{
1713 return p->def->isLinkableInProject() && !p->hidden;
1714}

References p.

Referenced by DefinitionMixin< Base >::isVisibleInProject().

◆ localName()

const DString & DefinitionImpl::localName ( ) const

Definition at line 1321 of file definition.cpp.

1322{
1323 return p->localName;
1324}

References p.

Referenced by DefinitionMixin< Base >::localName(), and navigationPathAsString().

◆ makePartOfGroup()

void DefinitionImpl::makePartOfGroup ( GroupDef * gd)

Definition at line 1326 of file definition.cpp.

1327{
1328 p->partOfGroups.push_back(gd);
1329}

References p.

Referenced by DefinitionMixin< Base >::makePartOfGroup().

◆ mergeReferencedBy()

void DefinitionImpl::mergeReferencedBy ( const Definition * other)

Definition at line 1818 of file definition.cpp.

1819{
1820 const DefinitionImpl *defImpl = other->toDefinitionImpl_();
1821 if (defImpl)
1822 {
1823 for (const auto &kv : defImpl->p->sourceRefByDict)
1824 {
1825 auto it = p->sourceRefByDict.find(kv.first);
1826 if (it != p->sourceRefByDict.end())
1827 {
1828 p->sourceRefByDict.emplace(kv.first,kv.second);
1829 }
1830 }
1831 }
1832}
virtual const DefinitionImpl * toDefinitionImpl_() const =0
DefinitionImpl(Definition *def, const DString &defFileName, int defLine, size_t defColumn, const DString &name, const char *b=nullptr, const char *d=nullptr, bool isSymbol=true)

References DefinitionImpl(), p, and Definition::toDefinitionImpl_().

Referenced by DefinitionMixin< Base >::mergeReferencedBy().

◆ mergeReferences()

void DefinitionImpl::mergeReferences ( const Definition * other)

Definition at line 1802 of file definition.cpp.

1803{
1804 const DefinitionImpl *defImpl = other->toDefinitionImpl_();
1805 if (defImpl)
1806 {
1807 for (const auto &kv : defImpl->p->sourceRefsDict)
1808 {
1809 auto it = p->sourceRefsDict.find(kv.first);
1810 if (it != p->sourceRefsDict.end())
1811 {
1812 p->sourceRefsDict.insert(kv);
1813 }
1814 }
1815 }
1816}

References DefinitionImpl(), p, and Definition::toDefinitionImpl_().

Referenced by DefinitionMixin< Base >::mergeReferences().

◆ mergeRefItems()

void DefinitionImpl::mergeRefItems ( Definition * d)

Definition at line 1341 of file definition.cpp.

1342{
1343 auto otherXrefList = d->xrefListItems();
1344
1345 // append vectors
1346 p->xrefListItems.reserve(p->xrefListItems.size()+otherXrefList.size());
1347 p->xrefListItems.insert (p->xrefListItems.end(),
1348 otherXrefList.begin(),otherXrefList.end());
1349
1350 // sort results on itemId
1351 std::stable_sort(p->xrefListItems.begin(),p->xrefListItems.end(),
1352 [](RefItem *left,RefItem *right)
1353 { return left->id() <right->id() ||
1354 (left->id()==right->id() &&
1355 left->list()->listName() < right->list()->listName());
1356 });
1357
1358 // filter out duplicates
1359 auto last = std::unique(p->xrefListItems.begin(),p->xrefListItems.end(),
1360 [](const RefItem *left,const RefItem *right)
1361 { return left->id()==right->id() &&
1362 left->list()->listName()==right->list()->listName();
1363 });
1364 p->xrefListItems.erase(last, p->xrefListItems.end());
1365}
virtual const RefItemVector & xrefListItems() const =0

References p, and Definition::xrefListItems().

Referenced by DefinitionMixin< Base >::mergeRefItems().

◆ name()

const DString & DefinitionImpl::name ( ) const

◆ navigationPathAsString()

DString DefinitionImpl::navigationPathAsString ( ) const

Returns the string used in the footer for $navpath when GENERATE_TREEVIEW is enabled

Definition at line 1427 of file definition.cpp.

1428{
1429 DString result;
1430 Definition *outerScope = getOuterScope();
1431 DString locName = localName();
1432 if (outerScope && outerScope!=Doxygen::globalScope)
1433 {
1434 result+=outerScope->navigationPathAsString();
1435 }
1436 else if (p->def->definitionType()==Definition::TypeFile &&
1437 toFileDef(p->def)->getDirDef())
1438 {
1439 result+=(toFileDef(p->def))->getDirDef()->navigationPathAsString();
1440 }
1441 result+="<li class=\"navelem\">";
1442 if (p->def->isLinkableInProject())
1443 {
1444 DString fn = p->def->getOutputFileBase();
1446 if (p->def->definitionType()==Definition::TypeGroup &&
1447 !toGroupDef(p->def)->groupTitle().empty())
1448 {
1449 DString title = parseCommentAsHtml(p->def,nullptr,toGroupDef(p->def)->groupTitle(),
1450 p->def->getDefFileName(),p->def->getDefLine());
1451 result+="<a href=\"$relpath^"+fn+"\">"+title+"</a>";
1452 }
1453 else if (p->def->definitionType()==Definition::TypePage &&
1454 toPageDef(p->def)->hasTitle())
1455 {
1456 DString title = parseCommentAsHtml(p->def,nullptr,toPageDef(p->def)->title(),
1457 p->def->getDefFileName(),p->def->getDefLine());
1458 result+="<a href=\"$relpath^"+fn+"\">"+title+"</a>";
1459 }
1460 else if (p->def->definitionType()==Definition::TypeClass)
1461 {
1462 DString name = toClassDef(p->def)->className();
1463 if (name.endsWith("-p"))
1464 {
1465 name = name.left(name.length()-2);
1466 }
1467 result+="<a href=\"$relpath^"+fn;
1468 if (!p->def->anchor().empty()) result+="#"+p->def->anchor();
1469 result+="\">"+convertToHtml(name)+"</a>";
1470 }
1471 else
1472 {
1473 result+="<a href=\"$relpath^"+fn+"\">"+
1474 convertToHtml(locName)+"</a>";
1475 }
1476 }
1477 else
1478 {
1479 result+="<b>"+convertToHtml(locName)+"</b>";
1480 }
1481 result+="</li>";
1482 return result;
1483}
virtual DString className() const =0
Returns the name of the class including outer classes, but not including namespaces.
DString left(size_t len) const
Definition dstring.h:310
bool endsWith(const char *s) const
Definition dstring.h:621
virtual DString navigationPathAsString() const =0
const DString & localName() const
Definition * getOuterScope() const
static NamespaceDefMutable * globalScope
Definition doxygen.h:114
virtual DirDef * getDirDef() const =0
virtual DString groupTitle() const =0
virtual bool hasTitle() const =0
virtual DString title() const =0
ClassDef * toClassDef(Definition *d)
DString parseCommentAsHtml(const Definition *scope, const MemberDef *member, const DString &doc, const DString &fileName, int lineNr)
FileDef * toFileDef(Definition *d)
Definition filedef.cpp:1976
GroupDef * toGroupDef(Definition *d)
PageDef * toPageDef(Definition *d)
Definition pagedef.cpp:653
DString convertToHtml(const DString &s, bool keepEntities)
Definition util.cpp:3293
void addHtmlExtensionIfMissing(DString &fName)
Definition util.cpp:3933

References addHtmlExtensionIfMissing(), ClassDef::className(), convertToHtml(), DString::empty(), DString::endsWith(), FileDef::getDirDef(), getOuterScope(), Doxygen::globalScope, GroupDef::groupTitle(), PageDef::hasTitle(), DString::left(), DString::length(), localName(), name(), Definition::navigationPathAsString(), p, parseCommentAsHtml(), PageDef::title(), toClassDef(), toFileDef(), toGroupDef(), toPageDef(), Definition::TypeClass, Definition::TypeFile, Definition::TypeGroup, and Definition::TypePage.

Referenced by DefinitionMixin< Base >::navigationPathAsString(), and writeNavigationPath().

◆ operator=() [1/2]

DefinitionImpl & DefinitionImpl::operator= ( const DefinitionImpl & d)

Definition at line 277 of file definition.cpp.

278{
279 if (this!=&other)
280 {
281 p = std::make_unique<Private>(*other.p);
282 }
283 return *this;
284}

References DefinitionImpl(), and p.

◆ operator=() [2/2]

DefinitionImpl & DefinitionImpl::operator= ( DefinitionImpl && d)
delete

◆ partOfGroups()

const GroupList & DefinitionImpl::partOfGroups ( ) const

Definition at line 1761 of file definition.cpp.

1762{
1763 return p->partOfGroups;
1764}

References p.

Referenced by isLinkableViaGroup(), and DefinitionMixin< Base >::partOfGroups().

◆ pathFragment()

DString DefinitionImpl::pathFragment ( ) const

Definition at line 1389 of file definition.cpp.

1390{
1391 DString result;
1392 if (p->outerScope && p->outerScope!=Doxygen::globalScope)
1393 {
1394 result = p->outerScope->pathFragment();
1395 }
1396 if (p->def->isLinkable())
1397 {
1398 if (!result.empty()) result+="/";
1399 if (p->def->definitionType()==Definition::TypeGroup &&
1400 !toGroupDef(p->def)->groupTitle().empty())
1401 {
1402 result+=toGroupDef(p->def)->groupTitle();
1403 }
1404 else if (p->def->definitionType()==Definition::TypePage &&
1405 toPageDef(p->def)->hasTitle())
1406 {
1407 result+=toPageDef(p->def)->title();
1408 }
1409 else
1410 {
1411 result+=p->localName;
1412 }
1413 }
1414 else
1415 {
1416 result+=p->localName;
1417 }
1418 return result;
1419}

References DString::empty(), Doxygen::globalScope, GroupDef::groupTitle(), PageDef::hasTitle(), p, PageDef::title(), toGroupDef(), toPageDef(), Definition::TypeGroup, and Definition::TypePage.

Referenced by DefinitionMixin< Base >::pathFragment().

◆ qualifiedName()

DString DefinitionImpl::qualifiedName ( ) const

Definition at line 1280 of file definition.cpp.

1281{
1282 std::call_once(p->qualifiedNameOnce.flag, [this]()
1283 {
1284 //printf("start %s::qualifiedName() localName=%s\n",qPrint(name()),qPrint(p->localName));
1285 if (p->outerScope==nullptr || p->outerScope->name()=="<globalScope>")
1286 {
1287 p->qualifiedName = (p->localName=="<globalScope>") ? DString() : p->localName;
1288 }
1289 else
1290 {
1291 p->qualifiedName = p->outerScope->qualifiedName()+
1292 getLanguageSpecificSeparator(getLanguage())+
1293 p->localName;
1294 }
1295 //printf("end %s::qualifiedName()=%s\n",qPrint(name()),qPrint(p->qualifiedName));
1296 });
1297 return p->qualifiedName;
1298}

References p.

Referenced by DefinitionMixin< Base >::qualifiedName().

◆ requirementReferences()

const RequirementRefs & DefinitionImpl::requirementReferences ( ) const

Definition at line 1384 of file definition.cpp.

1385{
1386 return p->requirementRefs;
1387}

References p.

Referenced by DefinitionMixin< Base >::requirementReferences().

◆ setArtificial()

void DefinitionImpl::setArtificial ( bool b)

Definition at line 1850 of file definition.cpp.

1851{
1852 p->isArtificial = b;
1853}

References p.

Referenced by DefinitionMixin< Base >::setArtificial().

◆ setBodyDef()

void DefinitionImpl::setBodyDef ( const FileDef * fd)

Definition at line 1028 of file definition.cpp.

1029{
1030 if (!p->body.has_value())
1031 {
1032 p->body = std::make_optional<BodyInfo>();
1033 }
1034 p->body.value().fileDef=fd;
1035}

References p.

Referenced by DefinitionMixin< Base >::setBodyDef().

◆ setBodySegment()

void DefinitionImpl::setBodySegment ( int defLine,
int bls,
int ble )

Definition at line 1016 of file definition.cpp.

1017{
1018 if (!p->body.has_value())
1019 {
1020 p->body = std::make_optional<BodyInfo>();
1021 }
1022 BodyInfo &body = p->body.value();
1023 body.defLine = defLine;
1024 body.startLine = bls;
1025 body.endLine = ble;
1026}
int startLine
line number of the start of the definition's body
Definition definition.h:66
int endLine
line number of the end of the definition's body
Definition definition.h:67
int defLine
line number of the start of the definition
Definition definition.h:65

References BodyInfo::defLine, BodyInfo::endLine, p, and BodyInfo::startLine.

Referenced by DefinitionMixin< Base >::setBodySegment().

◆ setBriefDescription()

void DefinitionImpl::setBriefDescription ( const DString & b,
const DString & briefFile,
int briefLine )

Definition at line 508 of file definition.cpp.

509{
510 if (b.empty()) return;
512}

References _setBriefDescription(), briefFile(), briefLine(), and DString::empty().

Referenced by DefinitionMixin< Base >::setBriefDescription().

◆ setDefFile()

void DefinitionImpl::setDefFile ( const DString & df,
int defLine,
size_t defColumn )

Definition at line 160 of file definition.cpp.

161{
162 p->setDefFileName(df);
163 p->defLine = defLine;
164 p->defColumn = defCol;
165}

References p.

Referenced by DefinitionMixin< Base >::setDefFile().

◆ setDocumentation()

void DefinitionImpl::setDocumentation ( const DString & d,
const DString & docFile,
int docLine,
bool stripWhiteSpace = true )

Definition at line 445 of file definition.cpp.

446{
447 if (d.empty()) return;
449}

References _setDocumentation(), docFile(), docLine(), DString::empty(), and stripWhiteSpace().

Referenced by DefinitionMixin< Base >::setDocumentation().

◆ setExported()

void DefinitionImpl::setExported ( bool b)

Definition at line 1855 of file definition.cpp.

1856{
1857 p->isExported = b;
1858}

References p.

Referenced by DefinitionMixin< Base >::setExported().

◆ setHidden()

void DefinitionImpl::setHidden ( bool b)

Definition at line 1845 of file definition.cpp.

1846{
1847 p->hidden = p->hidden || b;
1848}

References p.

Referenced by DefinitionMixin< Base >::setHidden().

◆ setId()

void DefinitionImpl::setId ( const DString & name)

Definition at line 303 of file definition.cpp.

304{
305 if (id.empty()) return;
306 p->id = id;
308 {
309 //printf("DefinitionImpl::setId '%s'->'%s'\n",id,qPrint(p->name));
310 Doxygen::clangUsrMap->emplace(id.str(),p->def);
311 }
312}
DString id() const
static ClangUsrMap * clangUsrMap
Definition doxygen.h:119

References Doxygen::clangUsrMap, id(), and p.

Referenced by DefinitionMixin< Base >::setId().

◆ setInbodyDocumentation()

void DefinitionImpl::setInbodyDocumentation ( const DString & d,
const DString & docFile,
int docLine )

Definition at line 536 of file definition.cpp.

537{
538 if (d.empty()) return;
540}
void _setInbodyDocumentation(const DString &d, const DString &docFile, int docLine)

References _setInbodyDocumentation(), DString::empty(), inbodyFile(), and inbodyLine().

Referenced by DefinitionMixin< Base >::setInbodyDocumentation().

◆ setLanguage()

void DefinitionImpl::setLanguage ( SrcLangExt lang)

Definition at line 1865 of file definition.cpp.

1866{
1867 p->lang=lang;
1868}

References p.

Referenced by DefinitionMixin< Base >::setLanguage().

◆ setLocalName()

void DefinitionImpl::setLocalName ( const DString & name)

Definition at line 1860 of file definition.cpp.

1861{
1862 p->localName=name;
1863}

References name(), and p.

Referenced by DefinitionMixin< Base >::setLocalName().

◆ setName()

void DefinitionImpl::setName ( const DString & name)

Definition at line 294 of file definition.cpp.

295{
296 if (name.empty()) return;
297 p->name = name;
298 p->isAnonymous = p->name.empty() ||
299 p->name.at(0)=='@' ||
300 p->name.find("::@")!=DString::npos;
301}

References DString::empty(), name(), DString::npos, and p.

Referenced by DefinitionImpl(), and DefinitionMixin< Base >::setName().

◆ setOuterScope()

void DefinitionImpl::setOuterScope ( Definition * d)

Definition at line 1300 of file definition.cpp.

1301{
1302 //printf("%s::setOuterScope(%s)\n",qPrint(name()),d?qPrint(d->name()):"<none>");
1303 Definition *outerScope = p->outerScope;
1304 bool found=false;
1305 // make sure that we are not creating a recursive scope relation.
1306 while (outerScope && !found)
1307 {
1308 found = (outerScope==d);
1309 outerScope = outerScope->getOuterScope();
1310 }
1311 if (!found)
1312 {
1313 p->qualifiedName.clear(); // flush cached scope name
1314 p->qualifiedNameOnce.reset();
1315 p->outerScope = d;
1316 }
1317 p->hidden = p->hidden || d->isHidden();
1318 assert(p->def!=p->outerScope);
1319}
virtual bool isHidden() const =0
virtual Definition * getOuterScope() const =0

References Definition::getOuterScope(), Definition::isHidden(), and p.

Referenced by DefinitionMixin< Base >::setOuterScope().

◆ setReference()

void DefinitionImpl::setReference ( const DString & r)

Definition at line 1835 of file definition.cpp.

1836{
1837 p->ref=r;
1838}

References p.

Referenced by DefinitionMixin< Base >::setReference().

◆ setRefItems()

void DefinitionImpl::setRefItems ( const RefItemVector & sli)

Definition at line 1331 of file definition.cpp.

1332{
1333 p->xrefListItems.insert(p->xrefListItems.end(), sli.cbegin(), sli.cend());
1334}

References p.

Referenced by DefinitionMixin< Base >::setRefItems().

◆ setRequirementReferences()

void DefinitionImpl::setRequirementReferences ( const RequirementRefs & rqli)

Definition at line 1336 of file definition.cpp.

1337{
1338 p->requirementRefs.insert(p->requirementRefs.end(), rqli.cbegin(), rqli.cend());
1339}

References p.

Referenced by DefinitionMixin< Base >::setRequirementReferences().

◆ symbolName()

DString DefinitionImpl::symbolName ( ) const

Definition at line 1571 of file definition.cpp.

1572{
1573 return p->symbolName;
1574}

References p.

Referenced by addToMap(), and DefinitionMixin< Base >::symbolName().

◆ writeDocAnchorsToTagFile()

void DefinitionImpl::writeDocAnchorsToTagFile ( TextStream & tagFile) const

Definition at line 355 of file definition.cpp.

356{
357 if (!p->sectionRefs.empty())
358 {
359 //printf("%s: writeDocAnchorsToTagFile(%d)\n",qPrint(name()),p->sectionRef.size());
360 for (const SectionInfo *si : p->sectionRefs)
361 {
362 if (!si->generated() && si->ref().empty() && !AnchorGenerator::instance().isGenerated(si->label().str()))
363 {
364 //printf("write an entry!\n");
365 if (p->def->definitionType()==Definition::TypeMember) tagFile << " ";
366 DString fn = si->fileName();
368 tagFile << " <docanchor file=\"" << fn << "\"";
369 if (!si->title().empty())
370 {
371 tagFile << " title=\"" << convertToXML(si->title()) << "\"";
372 }
373 tagFile << ">" << si->label() << "</docanchor>\n";
374 }
375 }
376 }
377}
bool isGenerated(const std::string &anchor) const
Returns true iff anchor is one of the generated anchors.
Definition anchor.cpp:122
static AnchorGenerator & instance()
Returns the singleton instance.
Definition anchor.cpp:38
DString fileName() const
Definition section.h:74
bool generated() const
Definition section.h:75
DString title() const
Definition section.h:70
DString ref() const
Definition section.h:72
DString convertToXML(const DString &s, bool keepEntities, const bool citeEntry)
Definition util.cpp:3234

References addHtmlExtensionIfMissing(), convertToXML(), DString::empty(), SectionInfo::fileName(), SectionInfo::generated(), AnchorGenerator::instance(), AnchorGenerator::isGenerated(), SectionInfo::label(), p, SectionInfo::ref(), DString::str(), SectionInfo::title(), and Definition::TypeMember.

Referenced by DefinitionMixin< Base >::writeDocAnchorsToTagFile().

◆ writeInlineCode()

void DefinitionImpl::writeInlineCode ( OutputList & ol,
const DString & scopeName ) const

Write code of this definition into the documentation

Definition at line 1045 of file definition.cpp.

1046{
1047 const MemberDef *thisMd = nullptr;
1048 if (p->def->definitionType()==Definition::TypeMember)
1049 {
1050 thisMd = toMemberDef(p->def);
1051 }
1052 bool inlineSources = thisMd && thisMd->hasInlineSource() && thisMd->initializer().empty();
1053 //printf("Source Fragment %s: %d-%d\n",qPrint(name()),
1054 // p->body->startLine,p->body->endLine);
1055 if (inlineSources && hasSources())
1056 {
1057 ol.pushGeneratorState();
1058 DString codeFragment;
1059 bool isMacro = thisMd && thisMd->memberType()==MemberType::Define;
1060 int actualStart=p->body->startLine,actualEnd=p->body->endLine;
1061 if (readCodeFragment(p->body->fileDef->absFilePath(),isMacro,
1062 actualStart,actualEnd,codeFragment)
1063 )
1064 {
1065 //printf("Adding code fragment '%s' ext='%s' range=%d-%d\n",
1066 // qPrint(codeFragment),qPrint(p->defFileExt),actualStart,actualEnd);
1067 auto intf = Doxygen::parserManager->getCodeParser(p->defFileExt);
1068 intf->resetCodeParserState();
1069 //printf("Read:\n'%s'\n\n",qPrint(codeFragment));
1070
1071 auto &codeOL = ol.codeGenerators();
1072 codeOL.startCodeFragment("DoxyCode");
1073 size_t indent = 0;
1074 intf->parseCode(codeOL, // codeOutIntf
1075 scopeName, // scope
1076 detab(codeFragment,indent), // input
1077 p->lang, // lang
1078 Config_getBool(STRIP_CODE_COMMENTS),
1079 CodeParserOptions()
1080 .setFileDef(p->body->fileDef)
1081 .setStartLine(actualStart)
1082 .setEndLine(actualEnd)
1083 .setInlineFragment(true)
1084 .setMemberDef(thisMd)
1085 );
1086 codeOL.endCodeFragment("DoxyCode");
1087 }
1088 ol.popGeneratorState();
1089 }
1090}
bool hasSources() const
static ParserManager * parserManager
Definition doxygen.h:122
virtual const DString & initializer() const =0
virtual bool hasInlineSource() const =0
virtual MemberType memberType() const =0
void startCodeFragment(const DString &style)
Definition outputlist.h:276
const OutputCodeList & codeGenerators() const
Definition outputlist.h:354
void pushGeneratorState()
void popGeneratorState()
std::unique_ptr< CodeParserInterface > getCodeParser(const DString &extension)
Gets the interface to the parser associated with a given extension.
Definition parserintf.h:253
bool readCodeFragment(const DString &fileName, bool isMacro, int &startLine, int &endLine, DString &result)
Reads a fragment from file fileName starting with line startLine and ending with line endLine.
DString detab(const DString &s, size_t &refIndent)
Definition util.cpp:5181

References OutputList::codeGenerators(), Config_getBool, detab(), DString::empty(), ParserManager::getCodeParser(), MemberDef::hasInlineSource(), hasSources(), MemberDef::initializer(), MemberDef::memberType(), p, Doxygen::parserManager, OutputList::popGeneratorState(), OutputList::pushGeneratorState(), readCodeFragment(), CodeParserOptions::setEndLine(), CodeParserOptions::setInlineFragment(), CodeParserOptions::setMemberDef(), CodeParserOptions::setStartLine(), OutputCodeList::startCodeFragment(), toMemberDef(), and Definition::TypeMember.

Referenced by DefinitionMixin< Base >::writeInlineCode().

◆ writeNavigationPath()

void DefinitionImpl::writeNavigationPath ( OutputList & ol) const

Definition at line 1486 of file definition.cpp.

1487{
1488 ol.pushGeneratorState();
1490
1491 DString navPath;
1492 navPath += "<div id=\"nav-path\" class=\"navpath\">\n"
1493 " <ul>\n";
1494 navPath += navigationPathAsString();
1495 navPath += " </ul>\n"
1496 "</div>\n";
1497 ol.writeNavigationPath(navPath);
1498
1499 ol.popGeneratorState();
1500}
DString navigationPathAsString() const
void writeNavigationPath(const DString &s)
Definition outputlist.h:604
void disableAllBut(OutputType o)

References OutputList::disableAllBut(), Html, navigationPathAsString(), OutputList::popGeneratorState(), OutputList::pushGeneratorState(), and OutputList::writeNavigationPath().

Referenced by DefinitionMixin< Base >::writeNavigationPath().

◆ writePageNavigation()

void DefinitionImpl::writePageNavigation ( OutputList & ol) const

Definition at line 1937 of file definition.cpp.

1938{
1939}

Referenced by DefinitionMixin< Base >::writePageNavigation().

◆ writeQuickMemberLinks()

void DefinitionImpl::writeQuickMemberLinks ( OutputList & ,
const MemberDef *  ) const

Definition at line 1929 of file definition.cpp.

1930{
1931}

Referenced by DefinitionMixin< Base >::writeQuickMemberLinks().

◆ writeRequirementRefs()

void DefinitionImpl::writeRequirementRefs ( OutputList & ol) const

Definition at line 1188 of file definition.cpp.

1189{
1190 if (!Config_getBool(GENERATE_REQUIREMENTS)) return;
1191 auto writeRefsForType = [&ol](const RequirementRefs &refs,const char *parType,const DString &text)
1192 {
1193 size_t num = refs.size();
1194 if (num>0)
1195 {
1196 ol.startParagraph(parType);
1197 ol.parseText(text);
1198 ol.docify(" ");
1199 writeMarkerList(ol,
1200 theTranslator->trWriteList(static_cast<int>(num)).str(), num,
1201 [&refs,&ol](size_t entryIndex) { RequirementManager::instance().writeRef(ol,refs[entryIndex]); }
1202 );
1203 ol.writeString(".");
1204 ol.endParagraph();
1205 }
1206 };
1207
1208 RequirementRefs satisfiesRefs;
1209 RequirementRefs verifiesRefs;
1210 splitRequirementRefs(p->requirementRefs,satisfiesRefs,verifiesRefs);
1211 writeRefsForType(satisfiesRefs,"satisfies",theTranslator->trSatisfies(satisfiesRefs.size()==1));
1212 writeRefsForType(verifiesRefs, "verifies", theTranslator->trVerifies(verifiesRefs.size()==1));
1213}
virtual DString trVerifies(bool singular)=0
virtual DString trSatisfies(bool singular)=0
void splitRequirementRefs(const RequirementRefs &inputReqRefs, RequirementRefs &satisfiesRefs, RequirementRefs &verifiesRefs)
std::vector< RequirementRef > RequirementRefs
List of requirement references.
Definition requirement.h:56

References Config_getBool, OutputList::docify(), OutputList::endParagraph(), p, OutputList::parseText(), splitRequirementRefs(), OutputList::startParagraph(), DString::str(), theTranslator, Translator::trSatisfies(), Translator::trVerifies(), Translator::trWriteList(), writeMarkerList(), and OutputList::writeString().

Referenced by DefinitionMixin< Base >::writeRequirementRefs().

◆ writeSourceDef()

void DefinitionImpl::writeSourceDef ( OutputList & ol) const

Write a reference to the source code defining this definition

Definition at line 967 of file definition.cpp.

968{
969 //printf("DefinitionImpl::writeSourceRef %d %p\n",bodyLine,bodyDef);
970 DString fn = getSourceFileBase();
971 if (!fn.empty())
972 {
973 DString refText = theTranslator->trDefinedAtLineInSourceFile();
974 size_t lineMarkerPos = refText.find("@0");
975 size_t fileMarkerPos = refText.find("@1");
976 if (lineMarkerPos!=DString::npos && fileMarkerPos!=DString::npos) // should always pass this.
977 {
978 DString lineStr;
979 lineStr.sprintf("%d",p->body->defLine);
980 DString anchorStr = getSourceAnchor();
981 ol.startParagraph("definition");
982 if (lineMarkerPos<fileMarkerPos) // line marker before file marker
983 {
984 // write text left from linePos marker
985 ol.parseText(refText.left(lineMarkerPos));
986 ol.writeObjectLink(DString(),fn,anchorStr,lineStr);
987 // write text between markers
988 ol.parseText(refText.mid(lineMarkerPos+2,fileMarkerPos-lineMarkerPos-2));
989 // write file link
990 ol.writeObjectLink(DString(),fn,DString(),p->body->fileDef->name());
991 // write text right from file marker
992 ol.parseText(refText.mid(fileMarkerPos+2));
993 }
994 else // file marker before line marker
995 {
996 // write text left from file marker
997 ol.parseText(refText.left(fileMarkerPos));
998 // write file link
999 ol.writeObjectLink(DString(),fn,DString(),p->body->fileDef->name());
1000 // write text between markers
1001 ol.parseText(refText.mid(fileMarkerPos+2,lineMarkerPos-fileMarkerPos-2));
1002 // write line link
1003 ol.writeObjectLink(DString(),fn,anchorStr,lineStr);
1004 // write text right from linePos marker
1005 ol.parseText(refText.mid(lineMarkerPos+2));
1006 }
1007 ol.endParagraph();
1008 }
1009 else
1010 {
1011 err("translation error: invalid markers in trDefinedAtLineInSourceFile()\n");
1012 }
1013 }
1014}
DString mid(size_t index, size_t len=npos) const
Definition dstring.h:322
DString & sprintf(const char *format,...)
Definition dstring.cpp:30
DString getSourceAnchor() const
DString getSourceFileBase() const
virtual DString trDefinedAtLineInSourceFile()=0

References DString::empty(), OutputList::endParagraph(), err, DString::find(), getSourceAnchor(), getSourceFileBase(), DString::left(), DString::mid(), DString::npos, p, OutputList::parseText(), DString::sprintf(), OutputList::startParagraph(), theTranslator, Translator::trDefinedAtLineInSourceFile(), and OutputList::writeObjectLink().

Referenced by DefinitionMixin< Base >::writeSourceDef().

◆ writeSourceReffedBy()

void DefinitionImpl::writeSourceReffedBy ( OutputList & ol,
const DString & scopeName ) const

Definition at line 1178 of file definition.cpp.

1179{
1180 _writeSourceRefList(ol,scopeName,theTranslator->trReferencedBy(),p->sourceRefByDict,false);
1181}
void _writeSourceRefList(OutputList &ol, const DString &scopeName, const DString &text, const std::unordered_map< std::string, MemberDef * > &members, bool) const
virtual DString trReferencedBy()=0

References _writeSourceRefList(), p, theTranslator, and Translator::trReferencedBy().

Referenced by DefinitionMixin< Base >::writeSourceReffedBy().

◆ writeSourceRefs()

void DefinitionImpl::writeSourceRefs ( OutputList & ol,
const DString & scopeName ) const

Definition at line 1183 of file definition.cpp.

1184{
1185 _writeSourceRefList(ol,scopeName,theTranslator->trReferences(),p->sourceRefsDict,true);
1186}
virtual DString trReferences()=0

References _writeSourceRefList(), p, theTranslator, and Translator::trReferences().

Referenced by DefinitionMixin< Base >::writeSourceRefs().

◆ writeSummaryLinks()

void DefinitionImpl::writeSummaryLinks ( OutputList & ) const

Definition at line 1933 of file definition.cpp.

1934{
1935}

Referenced by DefinitionMixin< Base >::writeSummaryLinks().

◆ writeToc()

void DefinitionImpl::writeToc ( OutputList & ol,
const LocalToc & lt ) const

Definition at line 1502 of file definition.cpp.

1503{
1504 // first check if we have anything to show or if the outline is already shown on the outline panel
1505 if (p->sectionRefs.empty() || (Config_getBool(GENERATE_TREEVIEW) && Config_getBool(PAGE_OUTLINE_PANEL))) return;
1506 // generate the embedded toc
1507 //ol.writeLocalToc(p->sectionRefs,localToc);
1508
1509 auto generateTocEntries = [this,&ol]()
1510 {
1511 for (const SectionInfo *si : p->sectionRefs)
1512 {
1513 if (si->type().isSection())
1514 {
1515 ol.startTocEntry(si);
1516 const MemberDef *md = p->def->definitionType()==Definition::TypeMember ? toMemberDef(p->def) : nullptr;
1517 const Definition *scope = p->def->definitionType()==Definition::TypeMember ? p->def->getOuterScope() : p->def;
1518 DString docTitle = si->title();
1519 if (docTitle.empty()) docTitle = si->label();
1520 ol.generateDoc(docFile(),
1522 scope,
1523 md,
1524 docTitle,
1525 DocOptions()
1526 .setIndexWords(true)
1527 .setSingleLine(true)
1528 .setSectionLevel(si->type().level())
1529 );
1530 ol.endTocEntry(si);
1531 }
1532 }
1533 };
1534
1535 if (localToc.isHtmlEnabled())
1536 {
1537 ol.pushGeneratorState();
1539 ol.startLocalToc(localToc.htmlLevel());
1540 generateTocEntries();
1541 ol.endLocalToc();
1542 ol.popGeneratorState();
1543 }
1544 if (localToc.isDocbookEnabled())
1545 {
1546 ol.pushGeneratorState();
1548 ol.startLocalToc(localToc.docbookLevel());
1549 generateTocEntries();
1550 ol.endLocalToc();
1551 ol.popGeneratorState();
1552 }
1553 if (localToc.isLatexEnabled())
1554 {
1555 ol.pushGeneratorState();
1557 ol.startLocalToc(localToc.latexLevel());
1558 // no gneerateTocEntries() needed for LaTeX
1559 ol.endLocalToc();
1560 ol.popGeneratorState();
1561 }
1562}
int getStartBodyLine() const
void startTocEntry(const SectionInfo *si)
Definition outputlist.h:744
void endLocalToc()
Definition outputlist.h:742
void endTocEntry(const SectionInfo *si)
Definition outputlist.h:746
void generateDoc(const DString &fileName, int startLine, const Definition *ctx, const MemberDef *md, const DString &docStr, const DocOptions &options)
void startLocalToc(int level)
Definition outputlist.h:740
constexpr int level() const
Definition section.h:46

References Config_getBool, OutputList::disableAllBut(), Docbook, LocalToc::docbookLevel(), docFile(), DString::empty(), OutputList::endLocalToc(), OutputList::endTocEntry(), OutputList::generateDoc(), getStartBodyLine(), Html, LocalToc::htmlLevel(), LocalToc::isDocbookEnabled(), LocalToc::isHtmlEnabled(), LocalToc::isLatexEnabled(), SectionType::isSection(), SectionInfo::label(), Latex, LocalToc::latexLevel(), SectionType::level(), p, OutputList::popGeneratorState(), OutputList::pushGeneratorState(), OutputList::startLocalToc(), OutputList::startTocEntry(), SectionInfo::title(), toMemberDef(), SectionInfo::type(), and Definition::TypeMember.

Referenced by DefinitionMixin< Base >::writeToc().

◆ xrefListItems()

const RefItemVector & DefinitionImpl::xrefListItems ( ) const

Definition at line 1379 of file definition.cpp.

1380{
1381 return p->xrefListItems;
1382}

References p.

Referenced by DefinitionMixin< Base >::xrefListItems().

Member Data Documentation

◆ p

std::unique_ptr<Private> DefinitionImpl::p
private

Definition at line 146 of file definitionimpl.h.

Referenced by _getXRefListId(), _setBriefDescription(), _setDocumentation(), _setInbodyDocumentation(), _setSymbolName(), _symbolName(), _writeSourceRefList(), addSectionsToDefinition(), addSourceReferencedBy(), addSourceReferences(), briefDescription(), briefDescriptionAsTooltip(), briefFile(), briefLine(), computeTooltip(), DefinitionImpl(), DefinitionImpl(), docFile(), docLine(), documentation(), getBodyDef(), getDefColumn(), getDefFileExtension(), getDefFileName(), getDefLine(), getEndBodyLine(), getLanguage(), getOuterScope(), getReference(), getReferencedByMembers(), getReferencesMembers(), getSectionRefs(), getSourceAnchor(), getSourceFileBase(), getStartBodyLine(), getStartDefLine(), hasDocumentation(), hasRequirementRefs(), hasSections(), hasSourceReffedBy(), hasSourceRefs(), hasSources(), hasUserDocumentation(), id(), inbodyDocumentation(), inbodyFile(), inbodyLine(), isAnonymous(), isArtificial(), isExported(), isHidden(), isReference(), isVisible(), isVisibleInProject(), localName(), makePartOfGroup(), mergeReferencedBy(), mergeReferences(), mergeRefItems(), name(), navigationPathAsString(), operator=(), partOfGroups(), pathFragment(), qualifiedName(), requirementReferences(), setArtificial(), setBodyDef(), setBodySegment(), setDefFile(), setExported(), setHidden(), setId(), setLanguage(), setLocalName(), setName(), setOuterScope(), setReference(), setRefItems(), setRequirementReferences(), symbolName(), writeDocAnchorsToTagFile(), writeInlineCode(), writeRequirementRefs(), writeSourceDef(), writeSourceReffedBy(), writeSourceRefs(), writeToc(), xrefListItems(), and ~DefinitionImpl().


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