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 246 of file definition.cpp.

250 : p(std::make_unique<Private>())
251{
252 setName(name);
253 p->def = def;
254 p->defLine = dl;
255 p->defColumn = dc;
256 p->init(df,name);
257 p->isSymbol = isSymbol;
258 if (isSymbol) addToMap(name,def);
259 _setBriefDescription(b,df,dl);
260 _setDocumentation(d,df,dl,true,false);
262 {
263 p->hidden = true;
264 }
265}
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 282 of file definition.cpp.

283{
284 if (p->isSymbol)
285 {
286 removeFromMap(p->symbolName,p->def);
287 }
288}
static void removeFromMap(const DString &name, Definition *d)

References p, and removeFromMap().

◆ DefinitionImpl() [2/3]

DefinitionImpl::DefinitionImpl ( const DefinitionImpl & d)

Definition at line 267 of file definition.cpp.

268 : p(std::make_unique<Private>(*d.p))
269{
270 if (p->isSymbol) addToMap(p->name,p->def);
271}

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 375 of file definition.cpp.

376{
377 // to avoid mismatches due to differences in indenting, we first remove
378 // double whitespaces...
379 DString docStr = doc.simplifyWhiteSpace();
380 DString sigStr = md5str(docStr.view());
381 //printf("%s:_docsAlreadyAdded doc='%s' sig='%s' docSigs='%s'\n",
382 // qPrint(name()),qPrint(doc),qPrint(sigStr),qPrint(sigList));
383 if (sigList.find(sigStr)==DString::npos) // new docs, add signature to prevent re-adding it
384 {
385 sigList+=DString(":")+sigStr;
386 return false;
387 }
388 else
389 {
390 return true;
391 }
392}
DString simplifyWhiteSpace() const
return a copy of this string with leading and trailing whitespace removed and multiple internal white...
Definition dstring.cpp:127
std::string_view view() const
Definition dstring.h:162
static constexpr size_t npos
value used to indicate 'not found' or 'to the end of the string', matching std::string::npos
Definition dstring.h:178
size_t find(char c, size_t pos=0) const
Definition dstring.h:239
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(), _setInbodyDocumentation(), and toDefinition().

◆ _getXRefListId()

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

Definition at line 1363 of file definition.cpp.

1364{
1365 for (const RefItem *item : p->xrefListItems)
1366 {
1367 if (item->list()->listName()==listName)
1368 {
1369 return item->id();
1370 }
1371 }
1372 return -1;
1373}
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 447 of file definition.cpp.

448{
449 DString brief = b;
450 brief = brief.stripWhiteSpace();
452 brief = brief.stripWhiteSpace();
453 if (brief.empty()) return;
454 size_t bl = brief.length();
455 if (bl>0)
456 {
457 if (!theTranslator || theTranslator->needsPunctuation()) // add punctuation if needed
458 {
459 int c = brief.at(bl-1);
460 switch(c)
461 {
462 case '.': case '!': case '?': case ':': break;
463 default:
464 if (isUTF8CharUpperCase(brief.str(),0) && !lastUTF8CharIsMultibyte(brief.str())) brief+='.';
465 break;
466 }
467 }
468 }
469
470 if (!_docsAlreadyAdded(brief,p->briefSignatures))
471 {
472 if (p->brief && !p->brief->doc.empty())
473 {
474 //printf("adding to details\n");
475 _setDocumentation(brief,briefFile,briefLine,false,true);
476 }
477 else
478 {
479 //fprintf(stderr,"DefinitionImpl::setBriefDescription(%s,%s,%d)\n",b,briefFile,briefLine);
480 if (!p->brief.has_value())
481 {
482 p->brief = std::make_optional<BriefInfo>();
483 }
484 BriefInfo &briefInfo = p->brief.value();
485 briefInfo.doc=brief;
486 if (briefLine!=-1)
487 {
488 briefInfo.file = briefFile;
489 briefInfo.line = briefLine;
490 }
491 else
492 {
493 briefInfo.file = briefFile;
494 briefInfo.line = 1;
495 }
496 }
497 }
498 else
499 {
500 //printf("do nothing!\n");
501 }
502}
bool empty() const
Returns true iff the string is empty (std::string compatible alias for isEmpty()).
Definition dstring.h:148
char & at(size_t i)
Returns a reference to the character at index i.
Definition dstring.h:686
DString stripWhiteSpace() const
returns a copy of this string with leading and trailing whitespace removed
Definition dstring.h:337
const std::string & str() const
Definition dstring.h:645
size_t length() const
Returns the length of the string, not counting the 0-terminator.
Definition dstring.h:151
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:76
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:222
bool lastUTF8CharIsMultibyte(const std::string &input)
Returns true iff the last character in input is a multibyte character.
Definition utf8.cpp:216
DString stripLeadingAndTrailingEmptyLines(const DString &s, int &docLine)
Special version of DString::stripWhiteSpace() that only strips completely blank lines.
Definition util.cpp:3987

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 394 of file definition.cpp.

396{
397 //printf("%s::setDocumentation(%s,%s,%d,%d)\n",qPrint(name()),d,docFile,docLine,stripWhiteSpace);
398 if (d.empty()) return;
399 DString doc = d;
400 if (stripWhiteSpace)
401 {
403 }
404 else // don't strip whitespace
405 {
406 doc=d;
407 }
408 if (!_docsAlreadyAdded(doc,p->docSignatures))
409 {
410 //printf("setting docs for %s: '%s'\n",qPrint(name()),qPrint(m_doc));
411 if (!p->details.has_value())
412 {
413 p->details = std::make_optional<DocInfo>();
414 }
415 DocInfo &details = p->details.value();
416 if (details.doc.empty()) // fresh detailed description
417 {
418 details.doc = doc;
419 }
420 else if (atTop) // another detailed description, append it to the start
421 {
422 details.doc = doc+"\n\n"+details.doc;
423 }
424 else // another detailed description, append it to the end
425 {
426 details.doc += "\n\n"+doc;
427 }
428 if (docLine!=-1) // store location if valid
429 {
430 details.file = docFile;
431 details.line = docLine;
432 }
433 else
434 {
435 details.file = docFile;
436 details.line = 1;
437 }
438 }
439}
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 docFile(), and docLine().

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

◆ _setInbodyDocumentation()

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

Definition at line 510 of file definition.cpp.

511{
512 if (!_docsAlreadyAdded(doc,p->docSignatures))
513 {
514 if (!p->inbodyDocs.has_value())
515 {
516 p->inbodyDocs = std::make_optional<DocInfo>();
517 }
518 DocInfo &inbodyDocs = p->inbodyDocs.value();
519 if (inbodyDocs.doc.empty()) // fresh inbody docs
520 {
521 inbodyDocs.doc = doc;
522 inbodyDocs.file = inbodyFile;
523 inbodyDocs.line = inbodyLine;
524 }
525 else // another inbody documentation fragment, append this to the end
526 {
527 inbodyDocs.doc += DString("\n\n")+doc;
528 }
529 }
530}
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 1867 of file definition.cpp.

1868{
1869 p->symbolName=name;
1870}

References name(), and p.

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

◆ _symbolName()

DString DefinitionImpl::_symbolName ( ) const

Definition at line 1872 of file definition.cpp.

1873{
1874 return p->symbolName;
1875}

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 1106 of file definition.cpp.

1109{
1110 if (!membersMap.empty())
1111 {
1112 auto members = refMapToVector(membersMap);
1113
1114 auto replaceFunc = [this,&members,scopeName,&ol](size_t entryIndex)
1115 {
1116 bool sourceBrowser = Config_getBool(SOURCE_BROWSER);
1117 bool refLinkSource = Config_getBool(REFERENCES_LINK_SOURCE);
1118 const MemberDef *md=members[entryIndex];
1119 if (md)
1120 {
1121 DString scope=md->getScopeString();
1122 DString name=md->name();
1123 //printf("class=%p scope=%s scopeName=%s\n",md->getClassDef(),qPrint(scope),scopeName);
1124 if (!scope.empty() && scope!=scopeName)
1125 {
1127 }
1128 if (!md->isObjCMethod() &&
1129 (md->isFunction() || md->isSlot() ||
1130 md->isPrototype() || md->isSignal()
1131 )
1132 )
1133 {
1134 name+="()";
1135 }
1136 if (sourceBrowser &&
1137 !(md->isLinkable() && !refLinkSource) &&
1138 md->getStartBodyLine()!=-1 &&
1139 md->getBodyDef()
1140 )
1141 {
1142 const int maxLineNrStr = 10;
1143 char anchorStr[maxLineNrStr];
1144 snprintf(anchorStr,maxLineNrStr,"l%05d",md->getStartBodyLine());
1145 //printf("Write object link to %s\n",qPrint(md->getBodyDef()->getSourceFileBase()));
1146 ol.writeObjectLink(DString(),md->getBodyDef()->getSourceFileBase(),anchorStr,name);
1147 }
1148 else if (md->isLinkable())
1149 {
1151 md->getOutputFileBase(),
1152 md->anchor(),name);
1153 }
1154 else
1155 {
1156 ol.docify(name);
1157 }
1158 }
1159 };
1160
1161 ol.startParagraph("reference");
1162 ol.parseText(text);
1163 ol.docify(" ");
1164 writeMarkerList(ol,
1165 theTranslator->trWriteList(static_cast<int>(members.size())).str(),
1166 members.size(),
1167 replaceFunc);
1168 ol.writeString(".");
1169 ol.endParagraph();
1170
1171 }
1172}
DString & prepend(const char *s)
Definition dstring.h:515
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:4629
void writeMarkerList(OutputList &ol, const std::string &markerText, size_t numMarkers, std::function< void(size_t)> replaceFunc)
Definition util.cpp:753

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 1271 of file definition.cpp.

1272{
1273 err("DefinitionImpl::addInnerCompound() called\n");
1274}
#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 315 of file definition.cpp.

316{
317 //printf("%s: addSectionsToDefinition(%d)\n",qPrint(name()),anchorList->count());
318 for (const SectionInfo *si : anchorList)
319 {
320 //printf("Add section '%s' to definition '%s'\n",
321 // qPrint(si->label()),qPrint(name()));
322 SectionManager &sm = SectionManager::instance();
323 SectionInfo *gsi=sm.find(si->label());
324 //printf("===== label=%s gsi=%p\n",qPrint(si->label()),(void*)gsi);
325 if (gsi==nullptr)
326 {
327 gsi = sm.add(*si);
328 }
329 if (p->sectionRefs.find(gsi->label())==nullptr)
330 {
331 p->sectionRefs.add(gsi);
332 }
333 gsi->setDefinition(p->def);
334 }
335}
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 1250 of file definition.cpp.

1251{
1252 if (md)
1253 {
1254 p->sourceRefByDict.emplace(sourceRefName.str(),md);
1255 }
1256}

References p, and DString::str().

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

◆ addSourceReferences()

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

Definition at line 1258 of file definition.cpp.

1259{
1260 if (md)
1261 {
1262 p->sourceRefsDict.emplace(sourceRefName.str(),md);
1263 }
1264}

References p, and DString::str().

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

◆ briefDescription()

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

Definition at line 1638 of file definition.cpp.

1639{
1640 //printf("%s::briefDescription(%d)='%s'\n",qPrint(name()),abbr,p->brief?qPrint(p->brief->doc):"<none>");
1641 return p->brief ?
1642 (abbr ? abbreviate(p->brief->doc,p->def->displayName()) : p->brief->doc) :
1643 DString("");
1644}
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 1657 of file definition.cpp.

1658{
1659 return p->brief ? p->brief->tooltip : DString();
1660}

References p.

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

◆ briefFile()

DString DefinitionImpl::briefFile ( ) const

Definition at line 1667 of file definition.cpp.

1668{
1669 return p->brief && !p->brief->file.empty() ? p->brief->file : DString("<"+p->name+">");
1670}

References p.

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

◆ briefLine()

int DefinitionImpl::briefLine ( ) const

Definition at line 1662 of file definition.cpp.

1663{
1664 return p->brief ? p->brief->line : 1;
1665}

References p.

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

◆ computeTooltip()

void DefinitionImpl::computeTooltip ( )

Definition at line 1646 of file definition.cpp.

1647{
1648 if (p->brief && p->brief->tooltip.empty() && !p->brief->doc.empty())
1649 {
1650 const MemberDef *md = p->def->definitionType()==Definition::TypeMember ? toMemberDef(p->def) : nullptr;
1651 const Definition *scope = p->def->definitionType()==Definition::TypeMember ? p->def->getOuterScope() : p->def;
1652 p->brief->tooltip = parseCommentAsText(scope,md,
1653 p->brief->doc, p->brief->file, p->brief->line);
1654 }
1655}
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 1584 of file definition.cpp.

1585{
1586 if (p->details && !p->details->file.empty()) return p->details->file;
1587 else if (p->brief && !p->brief->file.empty()) return p->brief->file;
1588 else return "<" + p->name + ">";
1589}

References p.

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

◆ docLine()

int DefinitionImpl::docLine ( ) const

Definition at line 1579 of file definition.cpp.

1580{
1581 return p->details ? p->details->line : p->brief ? p->brief->line : 1;
1582}

References p.

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

◆ documentation()

DString DefinitionImpl::documentation ( ) const

Definition at line 1574 of file definition.cpp.

1575{
1576 return p->details ? p->details->doc : DString("");
1577}

References p.

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

◆ externalReference()

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

Definition at line 1883 of file definition.cpp.

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

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 1266 of file definition.cpp.

1267{
1268 return nullptr;
1269}

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

◆ getBodyDef()

const FileDef * DefinitionImpl::getBodyDef ( ) const

Definition at line 1752 of file definition.cpp.

1753{
1754 return p->body ? p->body->fileDef : nullptr;
1755}

References p.

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

◆ getDefColumn()

size_t DefinitionImpl::getDefColumn ( ) const

Definition at line 1920 of file definition.cpp.

1921{
1922 return p->defColumn;
1923}

References p.

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

◆ getDefFileExtension()

DString DefinitionImpl::getDefFileExtension ( ) const

Definition at line 1697 of file definition.cpp.

1698{
1699 return p->defFileExt;
1700}

References p.

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

◆ getDefFileName()

DString DefinitionImpl::getDefFileName ( ) const

Definition at line 1692 of file definition.cpp.

1693{
1694 return p->defFileName;
1695}

References p.

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

◆ getDefLine()

int DefinitionImpl::getDefLine ( ) const

Definition at line 1915 of file definition.cpp.

1916{
1917 return p->defLine;
1918}

References p.

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

◆ getEndBodyLine()

int DefinitionImpl::getEndBodyLine ( ) const

Definition at line 1747 of file definition.cpp.

1748{
1749 return p->body ? p->body->endLine : -1;
1750}

References p.

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

◆ getLanguage()

SrcLangExt DefinitionImpl::getLanguage ( ) const

Definition at line 1836 of file definition.cpp.

1837{
1838 return p->lang;
1839}

References p.

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

◆ getOuterScope()

Definition * DefinitionImpl::getOuterScope ( ) const

Definition at line 1771 of file definition.cpp.

1772{
1773 return p->outerScope;
1774}

References p.

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

◆ getReference()

DString DefinitionImpl::getReference ( ) const

Definition at line 1727 of file definition.cpp.

1728{
1729 return p->ref;
1730}

References p.

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

◆ getReferencedByMembers()

const MemberVector & DefinitionImpl::getReferencedByMembers ( ) const

Definition at line 1788 of file definition.cpp.

1789{
1790 std::lock_guard<std::mutex> lock(g_memberReferenceMutex);
1791 if (p->referencedByMembers.empty() && !p->sourceRefByDict.empty())
1792 {
1793 p->referencedByMembers = refMapToVector(p->sourceRefByDict);
1794 }
1795 return p->referencedByMembers;
1796}
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 1778 of file definition.cpp.

1779{
1780 std::lock_guard<std::mutex> lock(g_memberReferenceMutex);
1781 if (p->referencesMembers.empty() && !p->sourceRefsDict.empty())
1782 {
1783 p->referencesMembers = refMapToVector(p->sourceRefsDict);
1784 }
1785 return p->referencesMembers;
1786}

References g_memberReferenceMutex, p, and refMapToVector().

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

◆ getSectionRefs()

const SectionRefs & DefinitionImpl::getSectionRefs ( ) const

Definition at line 1562 of file definition.cpp.

1563{
1564 return p->sectionRefs;
1565}

References p.

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

◆ getSourceAnchor()

DString DefinitionImpl::getSourceAnchor ( ) const

Definition at line 943 of file definition.cpp.

944{
945 const int maxAnchorStrLen = 20;
946 char anchorStr[maxAnchorStrLen];
947 anchorStr[0]='\0';
948 if (p->body && p->body->startLine!=-1)
949 {
950 if (Htags::useHtags)
951 {
952 snprintf(anchorStr,maxAnchorStrLen,"L%d",p->body->defLine);
953 }
954 else
955 {
956 snprintf(anchorStr,maxAnchorStrLen,"l%05d",p->body->defLine);
957 }
958 }
959 return anchorStr;
960}
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 930 of file definition.cpp.

931{
932 ASSERT(p->def->definitionType()!=Definition::TypeFile); // file overloads this method
933 DString fn;
934 bool sourceBrowser = Config_getBool(SOURCE_BROWSER);
935 if (sourceBrowser &&
936 p->body && p->body->startLine!=-1 && p->body->fileDef)
937 {
938 fn = p->body->fileDef->getSourceFileBase();
939 }
940 return fn;
941}
#define ASSERT(x)
Definition message.h:142

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

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

◆ getStartBodyLine()

int DefinitionImpl::getStartBodyLine ( ) const

Definition at line 1742 of file definition.cpp.

1743{
1744 return p->body ? p->body->startLine : -1;
1745}

References p.

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

◆ getStartDefLine()

int DefinitionImpl::getStartDefLine ( ) const

Definition at line 1737 of file definition.cpp.

1738{
1739 return p->body ? p->body->defLine : -1;
1740}

References p.

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

◆ hasBriefDescription()

bool DefinitionImpl::hasBriefDescription ( ) const

Definition at line 1877 of file definition.cpp.

1878{
1879 bool briefMemberDesc = Config_getBool(BRIEF_MEMBER_DESC);
1880 return !briefDescription().empty() && briefMemberDesc;
1881}
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 1226 of file definition.cpp.

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

References Config_getBool, and p.

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

◆ hasRequirementRefs()

bool DefinitionImpl::hasRequirementRefs ( ) const

Definition at line 1221 of file definition.cpp.

1222{
1223 return !p->requirementRefs.empty();
1224}

References p.

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

◆ hasSections()

bool DefinitionImpl::hasSections ( ) const

Definition at line 337 of file definition.cpp.

338{
339 //printf("DefinitionImpl::hasSections(%s) #sections=%zu\n",qPrint(name()), p->sectionRefs.size());
340 if (p->sectionRefs.empty()) return false;
341 for (const SectionInfo *si : p->sectionRefs)
342 {
343 if (si->type().isSection())
344 {
345 return true;
346 }
347 }
348 return false;
349}
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 1211 of file definition.cpp.

1212{
1213 return !p->sourceRefByDict.empty();
1214}

References p.

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

◆ hasSourceRefs()

bool DefinitionImpl::hasSourceRefs ( ) const

Definition at line 1216 of file definition.cpp.

1217{
1218 return !p->sourceRefsDict.empty();
1219}

References p.

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

◆ hasSources()

bool DefinitionImpl::hasSources ( ) const

Definition at line 1033 of file definition.cpp.

1034{
1035 return p->body && p->body->startLine!=-1 &&
1036 p->body->endLine>=p->body->startLine &&
1037 p->body->fileDef;
1038}

References p.

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

◆ hasUserDocumentation()

bool DefinitionImpl::hasUserDocumentation ( ) const

Definition at line 1241 of file definition.cpp.

1242{
1243 bool hasDocs =
1244 (p->details && !p->details->doc.empty()) ||
1245 (p->brief && !p->brief->doc.empty()) ||
1246 (p->inbodyDocs && !p->inbodyDocs->doc.empty());
1247 return hasDocs;
1248}

References p.

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

◆ id()

DString DefinitionImpl::id ( ) const

Definition at line 310 of file definition.cpp.

311{
312 return p->id;
313}

References p.

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

◆ inbodyDocumentation()

DString DefinitionImpl::inbodyDocumentation ( ) const

Definition at line 1674 of file definition.cpp.

1675{
1676 return p->inbodyDocs ? p->inbodyDocs->doc : DString("");
1677}

References p.

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

◆ inbodyFile()

DString DefinitionImpl::inbodyFile ( ) const

Definition at line 1684 of file definition.cpp.

1685{
1686 return p->inbodyDocs && !p->inbodyDocs->file.empty() ? p->inbodyDocs->file : DString("<"+p->name+">");
1687}

References p.

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

◆ inbodyLine()

int DefinitionImpl::inbodyLine ( ) const

Definition at line 1679 of file definition.cpp.

1680{
1681 return p->inbodyDocs ? p->inbodyDocs->line : 1;
1682}

References p.

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

◆ isAnonymous()

bool DefinitionImpl::isAnonymous ( ) const

Definition at line 1910 of file definition.cpp.

1911{
1912 return p->isAnonymous;
1913}

References p.

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

◆ isArtificial()

bool DefinitionImpl::isArtificial ( ) const

Definition at line 1717 of file definition.cpp.

1718{
1719 return p->isArtificial;
1720}

References p.

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

◆ isExported()

bool DefinitionImpl::isExported ( ) const

Definition at line 1722 of file definition.cpp.

1723{
1724 return p->isExported;
1725}

References p.

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

◆ isHidden()

bool DefinitionImpl::isHidden ( ) const

Definition at line 1702 of file definition.cpp.

1703{
1704 return p->hidden;
1705}

References p.

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

◆ isLinkableViaGroup()

bool DefinitionImpl::isLinkableViaGroup ( ) const

Definition at line 1762 of file definition.cpp.

1763{
1764 for (const auto &gd : partOfGroups())
1765 {
1766 if (gd->isLinkable()) return true;
1767 }
1768 return false;
1769}
const GroupList & partOfGroups() const

References partOfGroups().

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

◆ isReference()

bool DefinitionImpl::isReference ( ) const

Definition at line 1732 of file definition.cpp.

1733{
1734 return !p->ref.empty();
1735}

References p.

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

◆ isVisible()

bool DefinitionImpl::isVisible ( ) const

Definition at line 1712 of file definition.cpp.

1713{
1714 return p->def->isLinkable() && !p->hidden;
1715}

References p.

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

◆ isVisibleInProject()

bool DefinitionImpl::isVisibleInProject ( ) const

Definition at line 1707 of file definition.cpp.

1708{
1709 return p->def->isLinkableInProject() && !p->hidden;
1710}

References p.

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

◆ localName()

const DString & DefinitionImpl::localName ( ) const

Definition at line 1317 of file definition.cpp.

1318{
1319 return p->localName;
1320}

References p.

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

◆ makePartOfGroup()

void DefinitionImpl::makePartOfGroup ( GroupDef * gd)

Definition at line 1322 of file definition.cpp.

1323{
1324 p->partOfGroups.push_back(gd);
1325}

References p.

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

◆ mergeReferencedBy()

void DefinitionImpl::mergeReferencedBy ( const Definition * other)

Definition at line 1814 of file definition.cpp.

1815{
1816 const DefinitionImpl *defImpl = other->toDefinitionImpl_();
1817 if (defImpl)
1818 {
1819 for (const auto &kv : defImpl->p->sourceRefByDict)
1820 {
1821 auto it = p->sourceRefByDict.find(kv.first);
1822 if (it != p->sourceRefByDict.end())
1823 {
1824 p->sourceRefByDict.emplace(kv.first,kv.second);
1825 }
1826 }
1827 }
1828}
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 1798 of file definition.cpp.

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

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

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

◆ mergeRefItems()

void DefinitionImpl::mergeRefItems ( Definition * d)

Definition at line 1337 of file definition.cpp.

1338{
1339 auto otherXrefList = d->xrefListItems();
1340
1341 // append vectors
1342 p->xrefListItems.reserve(p->xrefListItems.size()+otherXrefList.size());
1343 p->xrefListItems.insert (p->xrefListItems.end(),
1344 otherXrefList.begin(),otherXrefList.end());
1345
1346 // sort results on itemId
1347 std::stable_sort(p->xrefListItems.begin(),p->xrefListItems.end(),
1348 [](RefItem *left,RefItem *right)
1349 { return left->id() <right->id() ||
1350 (left->id()==right->id() &&
1351 left->list()->listName() < right->list()->listName());
1352 });
1353
1354 // filter out duplicates
1355 auto last = std::unique(p->xrefListItems.begin(),p->xrefListItems.end(),
1356 [](const RefItem *left,const RefItem *right)
1357 { return left->id()==right->id() &&
1358 left->list()->listName()==right->list()->listName();
1359 });
1360 p->xrefListItems.erase(last, p->xrefListItems.end());
1361}
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 1423 of file definition.cpp.

1424{
1425 DString result;
1426 Definition *outerScope = getOuterScope();
1427 DString locName = localName();
1428 if (outerScope && outerScope!=Doxygen::globalScope)
1429 {
1430 result+=outerScope->navigationPathAsString();
1431 }
1432 else if (p->def->definitionType()==Definition::TypeFile &&
1433 toFileDef(p->def)->getDirDef())
1434 {
1435 result+=(toFileDef(p->def))->getDirDef()->navigationPathAsString();
1436 }
1437 result+="<li class=\"navelem\">";
1438 if (p->def->isLinkableInProject())
1439 {
1440 DString fn = p->def->getOutputFileBase();
1442 if (p->def->definitionType()==Definition::TypeGroup &&
1443 !toGroupDef(p->def)->groupTitle().empty())
1444 {
1445 DString title = parseCommentAsHtml(p->def,nullptr,toGroupDef(p->def)->groupTitle(),
1446 p->def->getDefFileName(),p->def->getDefLine());
1447 result+="<a href=\"$relpath^"+fn+"\">"+title+"</a>";
1448 }
1449 else if (p->def->definitionType()==Definition::TypePage &&
1450 toPageDef(p->def)->hasTitle())
1451 {
1452 DString title = parseCommentAsHtml(p->def,nullptr,toPageDef(p->def)->title(),
1453 p->def->getDefFileName(),p->def->getDefLine());
1454 result+="<a href=\"$relpath^"+fn+"\">"+title+"</a>";
1455 }
1456 else if (p->def->definitionType()==Definition::TypeClass)
1457 {
1458 DString name = toClassDef(p->def)->className();
1459 if (name.endsWith("-p"))
1460 {
1461 name = name.left(name.length()-2);
1462 }
1463 result+="<a href=\"$relpath^"+fn;
1464 if (!p->def->anchor().empty()) result+="#"+p->def->anchor();
1465 result+="\">"+convertToHtml(name)+"</a>";
1466 }
1467 else
1468 {
1469 result+="<a href=\"$relpath^"+fn+"\">"+
1470 convertToHtml(locName)+"</a>";
1471 }
1472 }
1473 else
1474 {
1475 result+="<b>"+convertToHtml(locName)+"</b>";
1476 }
1477 result+="</li>";
1478 return result;
1479}
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:306
bool endsWith(const char *s) const
Definition dstring.h:617
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:1973
GroupDef * toGroupDef(Definition *d)
PageDef * toPageDef(Definition *d)
Definition pagedef.cpp:656
DString convertToHtml(const DString &s, bool keepEntities)
Definition util.cpp:3291
void addHtmlExtensionIfMissing(DString &fName)
Definition util.cpp:3931

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 273 of file definition.cpp.

274{
275 if (this!=&other)
276 {
277 p = std::make_unique<Private>(*other.p);
278 }
279 return *this;
280}

References DefinitionImpl(), and p.

◆ operator=() [2/2]

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

◆ partOfGroups()

const GroupList & DefinitionImpl::partOfGroups ( ) const

Definition at line 1757 of file definition.cpp.

1758{
1759 return p->partOfGroups;
1760}

References p.

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

◆ pathFragment()

DString DefinitionImpl::pathFragment ( ) const

Definition at line 1385 of file definition.cpp.

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

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 1276 of file definition.cpp.

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

References p.

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

◆ requirementReferences()

const RequirementRefs & DefinitionImpl::requirementReferences ( ) const

Definition at line 1380 of file definition.cpp.

1381{
1382 return p->requirementRefs;
1383}

References p.

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

◆ setArtificial()

void DefinitionImpl::setArtificial ( bool b)

Definition at line 1846 of file definition.cpp.

1847{
1848 p->isArtificial = b;
1849}

References p.

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

◆ setBodyDef()

void DefinitionImpl::setBodyDef ( const FileDef * fd)

Definition at line 1024 of file definition.cpp.

1025{
1026 if (!p->body.has_value())
1027 {
1028 p->body = std::make_optional<BodyInfo>();
1029 }
1030 p->body.value().fileDef=fd;
1031}

References p.

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

◆ setBodySegment()

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

Definition at line 1012 of file definition.cpp.

1013{
1014 if (!p->body.has_value())
1015 {
1016 p->body = std::make_optional<BodyInfo>();
1017 }
1018 BodyInfo &body = p->body.value();
1019 body.defLine = defLine;
1020 body.startLine = bls;
1021 body.endLine = ble;
1022}
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 504 of file definition.cpp.

505{
506 if (b.empty()) return;
508}

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 156 of file definition.cpp.

157{
158 p->setDefFileName(df);
159 p->defLine = defLine;
160 p->defColumn = defCol;
161}

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 441 of file definition.cpp.

442{
443 if (d.empty()) return;
445}

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

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

◆ setExported()

void DefinitionImpl::setExported ( bool b)

Definition at line 1851 of file definition.cpp.

1852{
1853 p->isExported = b;
1854}

References p.

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

◆ setHidden()

void DefinitionImpl::setHidden ( bool b)

Definition at line 1841 of file definition.cpp.

1842{
1843 p->hidden = p->hidden || b;
1844}

References p.

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

◆ setId()

void DefinitionImpl::setId ( const DString & name)

Definition at line 299 of file definition.cpp.

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

References id(), and p.

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

◆ setInbodyDocumentation()

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

Definition at line 532 of file definition.cpp.

533{
534 if (d.empty()) return;
536}
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 1861 of file definition.cpp.

1862{
1863 p->lang=lang;
1864}

References p.

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

◆ setLocalName()

void DefinitionImpl::setLocalName ( const DString & name)

Definition at line 1856 of file definition.cpp.

1857{
1858 p->localName=name;
1859}

References name(), and p.

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

◆ setName()

void DefinitionImpl::setName ( const DString & name)

Definition at line 290 of file definition.cpp.

291{
292 if (name.empty()) return;
293 p->name = name;
294 p->isAnonymous = p->name.empty() ||
295 p->name.at(0)=='@' ||
296 p->name.find("::@")!=DString::npos;
297}

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

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

◆ setOuterScope()

void DefinitionImpl::setOuterScope ( Definition * d)

Definition at line 1296 of file definition.cpp.

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

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

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

◆ setReference()

void DefinitionImpl::setReference ( const DString & r)

Definition at line 1831 of file definition.cpp.

1832{
1833 p->ref=r;
1834}

References p.

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

◆ setRefItems()

void DefinitionImpl::setRefItems ( const RefItemVector & sli)

Definition at line 1327 of file definition.cpp.

1328{
1329 p->xrefListItems.insert(p->xrefListItems.end(), sli.cbegin(), sli.cend());
1330}

References p.

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

◆ setRequirementReferences()

void DefinitionImpl::setRequirementReferences ( const RequirementRefs & rqli)

Definition at line 1332 of file definition.cpp.

1333{
1334 p->requirementRefs.insert(p->requirementRefs.end(), rqli.cbegin(), rqli.cend());
1335}

References p.

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

◆ symbolName()

DString DefinitionImpl::symbolName ( ) const

Definition at line 1567 of file definition.cpp.

1568{
1569 return p->symbolName;
1570}

References p.

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

◆ writeDocAnchorsToTagFile()

void DefinitionImpl::writeDocAnchorsToTagFile ( TextStream & tagFile) const

Definition at line 351 of file definition.cpp.

352{
353 if (!p->sectionRefs.empty())
354 {
355 //printf("%s: writeDocAnchorsToTagFile(%d)\n",qPrint(name()),p->sectionRef.size());
356 for (const SectionInfo *si : p->sectionRefs)
357 {
358 if (!si->generated() && si->ref().empty() && !AnchorGenerator::instance().isGenerated(si->label().str()))
359 {
360 //printf("write an entry!\n");
361 if (p->def->definitionType()==Definition::TypeMember) tagFile << " ";
362 DString fn = si->fileName();
364 tagFile << " <docanchor file=\"" << fn << "\"";
365 if (!si->title().empty())
366 {
367 tagFile << " title=\"" << convertToXML(si->title()) << "\"";
368 }
369 tagFile << ">" << si->label() << "</docanchor>\n";
370 }
371 }
372 }
373}
bool isGenerated(const std::string &anchor) const
Returns true iff anchor is one of the generated anchors.
Definition anchor.cpp:125
static AnchorGenerator & instance()
Returns the singleton instance.
Definition anchor.cpp:41
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:3232

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 1041 of file definition.cpp.

1042{
1043 const MemberDef *thisMd = nullptr;
1044 if (p->def->definitionType()==Definition::TypeMember)
1045 {
1046 thisMd = toMemberDef(p->def);
1047 }
1048 bool inlineSources = thisMd && thisMd->hasInlineSource() && thisMd->initializer().empty();
1049 //printf("Source Fragment %s: %d-%d\n",qPrint(name()),
1050 // p->body->startLine,p->body->endLine);
1051 if (inlineSources && hasSources())
1052 {
1053 ol.pushGeneratorState();
1054 DString codeFragment;
1055 bool isMacro = thisMd && thisMd->memberType()==MemberType::Define;
1056 int actualStart=p->body->startLine,actualEnd=p->body->endLine;
1057 if (readCodeFragment(p->body->fileDef->absFilePath(),isMacro,
1058 actualStart,actualEnd,codeFragment)
1059 )
1060 {
1061 //printf("Adding code fragment '%s' ext='%s' range=%d-%d\n",
1062 // qPrint(codeFragment),qPrint(p->defFileExt),actualStart,actualEnd);
1063 auto intf = Doxygen::parserManager->getCodeParser(p->defFileExt);
1064 intf->resetCodeParserState();
1065 //printf("Read:\n'%s'\n\n",qPrint(codeFragment));
1066
1067 auto &codeOL = ol.codeGenerators();
1068 codeOL.startCodeFragment("DoxyCode");
1069 size_t indent = 0;
1070 intf->parseCode(codeOL, // codeOutIntf
1071 scopeName, // scope
1072 detab(codeFragment,indent), // input
1073 p->lang, // lang
1074 Config_getBool(STRIP_CODE_COMMENTS),
1075 CodeParserOptions()
1076 .setFileDef(p->body->fileDef)
1077 .setStartLine(actualStart)
1078 .setEndLine(actualEnd)
1079 .setInlineFragment(true)
1080 .setMemberDef(thisMd)
1081 );
1082 codeOL.endCodeFragment("DoxyCode");
1083 }
1084 ol.popGeneratorState();
1085 }
1086}
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:5179

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 1482 of file definition.cpp.

1483{
1484 ol.pushGeneratorState();
1486
1487 DString navPath;
1488 navPath += "<div id=\"nav-path\" class=\"navpath\">\n"
1489 " <ul>\n";
1490 navPath += navigationPathAsString();
1491 navPath += " </ul>\n"
1492 "</div>\n";
1493 ol.writeNavigationPath(navPath);
1494
1495 ol.popGeneratorState();
1496}
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 1933 of file definition.cpp.

1934{
1935}

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

◆ writeQuickMemberLinks()

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

Definition at line 1925 of file definition.cpp.

1926{
1927}

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

◆ writeRequirementRefs()

void DefinitionImpl::writeRequirementRefs ( OutputList & ol) const

Definition at line 1184 of file definition.cpp.

1185{
1186 if (!Config_getBool(GENERATE_REQUIREMENTS)) return;
1187 auto writeRefsForType = [&ol](const RequirementRefs &refs,const char *parType,const DString &text)
1188 {
1189 size_t num = refs.size();
1190 if (num>0)
1191 {
1192 ol.startParagraph(parType);
1193 ol.parseText(text);
1194 ol.docify(" ");
1195 writeMarkerList(ol,
1196 theTranslator->trWriteList(static_cast<int>(num)).str(), num,
1197 [&refs,&ol](size_t entryIndex) { RequirementManager::instance().writeRef(ol,refs[entryIndex]); }
1198 );
1199 ol.writeString(".");
1200 ol.endParagraph();
1201 }
1202 };
1203
1204 RequirementRefs satisfiesRefs;
1205 RequirementRefs verifiesRefs;
1206 splitRequirementRefs(p->requirementRefs,satisfiesRefs,verifiesRefs);
1207 writeRefsForType(satisfiesRefs,"satisfies",theTranslator->trSatisfies(satisfiesRefs.size()==1));
1208 writeRefsForType(verifiesRefs, "verifies", theTranslator->trVerifies(verifiesRefs.size()==1));
1209}
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 963 of file definition.cpp.

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

1175{
1176 _writeSourceRefList(ol,scopeName,theTranslator->trReferencedBy(),p->sourceRefByDict,false);
1177}
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 1179 of file definition.cpp.

1180{
1181 _writeSourceRefList(ol,scopeName,theTranslator->trReferences(),p->sourceRefsDict,true);
1182}
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 1929 of file definition.cpp.

1930{
1931}

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

◆ writeToc()

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

Definition at line 1498 of file definition.cpp.

1499{
1500 // first check if we have anything to show or if the outline is already shown on the outline panel
1501 if (p->sectionRefs.empty() || (Config_getBool(GENERATE_TREEVIEW) && Config_getBool(PAGE_OUTLINE_PANEL))) return;
1502 // generate the embedded toc
1503 //ol.writeLocalToc(p->sectionRefs,localToc);
1504
1505 auto generateTocEntries = [this,&ol]()
1506 {
1507 for (const SectionInfo *si : p->sectionRefs)
1508 {
1509 if (si->type().isSection())
1510 {
1511 ol.startTocEntry(si);
1512 const MemberDef *md = p->def->definitionType()==Definition::TypeMember ? toMemberDef(p->def) : nullptr;
1513 const Definition *scope = p->def->definitionType()==Definition::TypeMember ? p->def->getOuterScope() : p->def;
1514 DString docTitle = si->title();
1515 if (docTitle.empty()) docTitle = si->label();
1516 ol.generateDoc(docFile(),
1518 scope,
1519 md,
1520 docTitle,
1521 DocOptions()
1522 .setIndexWords(true)
1523 .setSingleLine(true)
1524 .setSectionLevel(si->type().level())
1525 );
1526 ol.endTocEntry(si);
1527 }
1528 }
1529 };
1530
1531 if (localToc.isHtmlEnabled())
1532 {
1533 ol.pushGeneratorState();
1535 ol.startLocalToc(localToc.htmlLevel());
1536 generateTocEntries();
1537 ol.endLocalToc();
1538 ol.popGeneratorState();
1539 }
1540 if (localToc.isDocbookEnabled())
1541 {
1542 ol.pushGeneratorState();
1544 ol.startLocalToc(localToc.docbookLevel());
1545 generateTocEntries();
1546 ol.endLocalToc();
1547 ol.popGeneratorState();
1548 }
1549 if (localToc.isLatexEnabled())
1550 {
1551 ol.pushGeneratorState();
1553 ol.startLocalToc(localToc.latexLevel());
1554 // no gneerateTocEntries() needed for LaTeX
1555 ol.endLocalToc();
1556 ol.popGeneratorState();
1557 }
1558}
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 1375 of file definition.cpp.

1376{
1377 return p->xrefListItems;
1378}

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(), _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(), toDefinition(), toDefinitionMutable(), writeDocAnchorsToTagFile(), writeInlineCode(), writeRequirementRefs(), writeSourceDef(), writeSourceReffedBy(), writeSourceRefs(), writeToc(), xrefListItems(), and ~DefinitionImpl().


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