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 QCString &defFileName, int defLine, int defColumn, const QCString &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 QCStringname () const
bool isAnonymous () const
const QCStringlocalName () const
QCString qualifiedName () const
QCString symbolName () const
QCString getSourceFileBase () const
QCString getSourceAnchor () const
QCString documentation () const
int docLine () const
QCString docFile () const
QCString briefDescription (bool abbreviate=FALSE) const
QCString briefDescriptionAsTooltip () const
int briefLine () const
QCString inbodyDocumentation () const
QCString inbodyFile () const
int inbodyLine () const
QCString briefFile () const
QCString getDefFileName () const
QCString getDefFileExtension () const
int getDefLine () const
int getDefColumn () const
bool hasDocumentation () const
bool hasUserDocumentation () const
bool isVisibleInProject () const
bool isVisible () const
bool isHidden () const
bool isArtificial () const
bool isExported () const
QCString getReference () const
bool isReference () const
QCString externalReference (const QCString &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 QCString &name) const
DefinitiongetOuterScope () const
const MemberVectorgetReferencesMembers () const
const MemberVectorgetReferencedByMembers () const
bool hasSections () const
bool hasSources () const
bool hasBriefDescription () const
QCString id () const
const SectionRefsgetSectionRefs () const
void setName (const QCString &name)
void setId (const QCString &name)
void setDefFile (const QCString &df, int defLine, int defColumn)
void setDocumentation (const QCString &d, const QCString &docFile, int docLine, bool stripWhiteSpace=TRUE)
void setBriefDescription (const QCString &b, const QCString &briefFile, int briefLine)
void setInbodyDocumentation (const QCString &d, const QCString &docFile, int docLine)
void setReference (const QCString &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 QCString &sourceRefName)
void addSourceReferences (MemberDef *d, const QCString &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 QCString &scopeName) const
bool hasSourceRefs () const
bool hasSourceReffedBy () const
void writeSourceRefs (OutputList &ol, const QCString &scopeName) const
void writeSourceReffedBy (OutputList &ol, const QCString &scopeName) const
bool hasRequirementRefs () const
void writeRequirementRefs (OutputList &ol) const
void makePartOfGroup (GroupDef *gd)
void writeNavigationPath (OutputList &ol) const
QCString navigationPathAsString () const
void writeQuickMemberLinks (OutputList &, const MemberDef *) const
void writeSummaryLinks (OutputList &) const
void writePageNavigation (OutputList &ol) const
QCString pathFragment () const
void writeDocAnchorsToTagFile (TextStream &) const
void setLocalName (const QCString &name)
void writeToc (OutputList &ol, const LocalToc &lt) const
void computeTooltip ()
void _setSymbolName (const QCString &name)
QCString _symbolName () const

Private Member Functions

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

Private Attributes

std::unique_ptr< Privatep

Detailed Description

Definition at line 27 of file definitionimpl.h.

Constructor & Destructor Documentation

◆ DefinitionImpl() [1/3]

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

Definition at line 239 of file definition.cpp.

243 : p(std::make_unique<Private>())
244{
245 setName(name);
246 p->def = def;
247 p->defLine = dl;
248 p->defColumn = dc;
249 p->init(df,name);
250 p->isSymbol = isSymbol;
251 if (isSymbol) addToMap(name,def);
252 _setBriefDescription(b,df,dl);
255 {
256 p->hidden = TRUE;
257 }
258}
void setName(const QCString &name)
void _setBriefDescription(const QCString &b, const QCString &briefFile, int briefLine)
const QCString & name() const
void _setDocumentation(const QCString &d, const QCString &docFile, int docLine, bool stripWhiteSpace, bool atTop)
std::unique_ptr< Private > p
static void addToMap(const QCString &name, Definition *d)
static bool matchExcludedSymbols(const QCString &name)
#define TRUE
Definition qcstring.h:37
#define FALSE
Definition qcstring.h:34

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

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

◆ ~DefinitionImpl()

DefinitionImpl::~DefinitionImpl ( )

Definition at line 275 of file definition.cpp.

276{
277 if (p->isSymbol)
278 {
279 removeFromMap(p->symbolName,p->def);
280 }
281}
static void removeFromMap(const QCString &name, Definition *d)

References p, and removeFromMap().

◆ DefinitionImpl() [2/3]

DefinitionImpl::DefinitionImpl ( const DefinitionImpl & d)

Definition at line 260 of file definition.cpp.

261 : p(std::make_unique<Private>(*d.p))
262{
263 if (p->isSymbol) addToMap(p->name,p->def);
264}

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

◆ DefinitionImpl() [3/3]

DefinitionImpl::DefinitionImpl ( DefinitionImpl && d)
delete

References DefinitionImpl().

Member Function Documentation

◆ _docsAlreadyAdded()

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

Definition at line 368 of file definition.cpp.

369{
370 uint8_t md5_sig[16];
371 char sigStr[33];
372 // to avoid mismatches due to differences in indenting, we first remove
373 // double whitespaces...
374 QCString docStr = doc.simplifyWhiteSpace();
375 MD5Buffer(docStr.data(),static_cast<unsigned int>(docStr.length()),md5_sig);
376 MD5SigToString(md5_sig,sigStr);
377 //printf("%s:_docsAlreadyAdded doc='%s' sig='%s' docSigs='%s'\n",
378 // qPrint(name()),qPrint(doc),qPrint(sigStr),qPrint(sigList));
379 if (sigList.find(sigStr)==-1) // new docs, add signature to prevent re-adding it
380 {
381 sigList+=QCString(":")+sigStr;
382 return FALSE;
383 }
384 else
385 {
386 return TRUE;
387 }
388}
int find(char c, int index=0, bool cs=TRUE) const
Definition qcstring.cpp:43
size_t length() const
Returns the length of the string, not counting the 0-terminator.
Definition qcstring.h:166
QCString simplifyWhiteSpace() const
return a copy of this string with leading and trailing whitespace removed and multiple whitespace cha...
Definition qcstring.cpp:190
const char * data() const
Returns a pointer to the contents of the string in the form of a 0-terminated C string.
Definition qcstring.h:172

References QCString::data(), FALSE, QCString::find(), QCString::length(), QCString::simplifyWhiteSpace(), and TRUE.

Referenced by _setBriefDescription(), and _setInbodyDocumentation().

◆ _getXRefListId()

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

Definition at line 1377 of file definition.cpp.

1378{
1379 for (const RefItem *item : p->xrefListItems)
1380 {
1381 if (item->list()->listName()==listName)
1382 {
1383 return item->id();
1384 }
1385 }
1386 return -1;
1387}
int id() const
Definition reflist.h:52
RefList * list() const
Definition reflist.h:53
QCString listName() const
Definition reflist.h:101

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

◆ _setBriefDescription()

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

Definition at line 443 of file definition.cpp.

444{
445 QCString brief = b;
446 brief = brief.stripWhiteSpace();
448 brief = brief.stripWhiteSpace();
449 if (brief.isEmpty()) return;
450 size_t bl = brief.length();
451 if (bl>0)
452 {
453 if (!theTranslator || theTranslator->needsPunctuation()) // add punctuation if needed
454 {
455 int c = brief.at(bl-1);
456 switch(c)
457 {
458 case '.': case '!': case '?': case ':': break;
459 default:
460 if (isUTF8CharUpperCase(brief.str(),0) && !lastUTF8CharIsMultibyte(brief.str())) brief+='.';
461 break;
462 }
463 }
464 }
465
466 if (!_docsAlreadyAdded(brief,p->briefSignatures))
467 {
468 if (p->brief && !p->brief->doc.isEmpty())
469 {
470 //printf("adding to details\n");
472 }
473 else
474 {
475 //fprintf(stderr,"DefinitionImpl::setBriefDescription(%s,%s,%d)\n",b,briefFile,briefLine);
476 if (!p->brief.has_value())
477 {
478 p->brief = std::make_optional<BriefInfo>();
479 }
480 BriefInfo &briefInfo = p->brief.value();
481 briefInfo.doc=brief;
482 if (briefLine!=-1)
483 {
484 briefInfo.file = briefFile;
485 briefInfo.line = briefLine;
486 }
487 else
488 {
489 briefInfo.file = briefFile;
490 briefInfo.line = 1;
491 }
492 }
493 }
494 else
495 {
496 //printf("do nothing!\n");
497 }
498}
int briefLine() const
bool _docsAlreadyAdded(const QCString &doc, QCString &sigList)
QCString briefFile() const
char & at(size_t i)
Returns a reference to the character at index i.
Definition qcstring.h:593
bool isEmpty() const
Returns TRUE iff the string is empty.
Definition qcstring.h:163
QCString stripWhiteSpace() const
returns a copy of this string with leading and trailing whitespace removed
Definition qcstring.h:260
const std::string & str() const
Definition qcstring.h:552
virtual bool needsPunctuation()
add punctuation at the end of a brief description when needed and supported by the language
Definition translator.h:154
Translator * theTranslator
Definition language.cpp:71
QCString file
Definition definition.h:59
QCString doc
Definition definition.h:56
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:218
bool lastUTF8CharIsMultibyte(const std::string &input)
Returns true iff the last character in input is a multibyte character.
Definition utf8.cpp:212
QCString stripLeadingAndTrailingEmptyLines(const QCString &s, int &docLine)
Special version of QCString::stripWhiteSpace() that only strips completely blank lines.
Definition util.cpp:5010

References _docsAlreadyAdded(), _setDocumentation(), QCString::at(), briefFile(), briefLine(), BriefInfo::doc, FALSE, BriefInfo::file, QCString::isEmpty(), isUTF8CharUpperCase(), lastUTF8CharIsMultibyte(), QCString::length(), BriefInfo::line, p, QCString::str(), stripLeadingAndTrailingEmptyLines(), QCString::stripWhiteSpace(), theTranslator, and TRUE.

Referenced by DefinitionImpl(), and setBriefDescription().

◆ _setDocumentation()

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

Definition at line 390 of file definition.cpp.

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

References docFile(), docLine(), QCString::isEmpty(), and stripWhiteSpace().

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

◆ _setInbodyDocumentation()

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

Definition at line 506 of file definition.cpp.

507{
508 if (!_docsAlreadyAdded(doc,p->docSignatures))
509 {
510 if (!p->inbodyDocs.has_value())
511 {
512 p->inbodyDocs = std::make_optional<DocInfo>();
513 }
514 DocInfo &inbodyDocs = p->inbodyDocs.value();
515 if (inbodyDocs.doc.isEmpty()) // fresh inbody docs
516 {
517 inbodyDocs.doc = doc;
518 inbodyDocs.file = inbodyFile;
519 inbodyDocs.line = inbodyLine;
520 }
521 else // another inbody documentation fragment, append this to the end
522 {
523 inbodyDocs.doc += QCString("\n\n")+doc;
524 }
525 }
526}
int inbodyLine() const
QCString inbodyFile() const

References _docsAlreadyAdded(), DocInfo::doc, DocInfo::file, inbodyFile(), inbodyLine(), QCString::isEmpty(), DocInfo::line, and p.

Referenced by setInbodyDocumentation().

◆ _setSymbolName()

void DefinitionImpl::_setSymbolName ( const QCString & name)

Definition at line 1882 of file definition.cpp.

1883{
1884 p->symbolName=name;
1885}

References name(), and p.

◆ _symbolName()

QCString DefinitionImpl::_symbolName ( ) const

Definition at line 1887 of file definition.cpp.

1888{
1889 return p->symbolName;
1890}

References p.

◆ _writeSourceRefList()

void DefinitionImpl::_writeSourceRefList ( OutputList & ol,
const QCString & scopeName,
const QCString & 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 1102 of file definition.cpp.

1105{
1106 if (!membersMap.empty())
1107 {
1108 auto members = refMapToVector(membersMap);
1109
1110 auto replaceFunc = [this,&members,scopeName,&ol](size_t entryIndex)
1111 {
1112 bool sourceBrowser = Config_getBool(SOURCE_BROWSER);
1113 bool refLinkSource = Config_getBool(REFERENCES_LINK_SOURCE);
1114 const MemberDef *md=members[entryIndex];
1115 if (md)
1116 {
1117 QCString scope=md->getScopeString();
1118 QCString name=md->name();
1119 //printf("class=%p scope=%s scopeName=%s\n",md->getClassDef(),qPrint(scope),scopeName);
1120 if (!scope.isEmpty() && scope!=scopeName)
1121 {
1122 name.prepend(scope+getLanguageSpecificSeparator(p->lang));
1123 }
1124 if (!md->isObjCMethod() &&
1125 (md->isFunction() || md->isSlot() ||
1126 md->isPrototype() || md->isSignal()
1127 )
1128 )
1129 {
1130 name+="()";
1131 }
1132 if (sourceBrowser &&
1133 !(md->isLinkable() && !refLinkSource) &&
1134 md->getStartBodyLine()!=-1 &&
1135 md->getBodyDef()
1136 )
1137 {
1138 const int maxLineNrStr = 10;
1139 char anchorStr[maxLineNrStr];
1140 qsnprintf(anchorStr,maxLineNrStr,"l%05d",md->getStartBodyLine());
1141 //printf("Write object link to %s\n",qPrint(md->getBodyDef()->getSourceFileBase()));
1142 ol.writeObjectLink(QCString(),md->getBodyDef()->getSourceFileBase(),anchorStr,name);
1143 }
1144 else if (md->isLinkable())
1145 {
1147 md->getOutputFileBase(),
1148 md->anchor(),name);
1149 }
1150 else
1151 {
1152 ol.docify(name);
1153 }
1154 }
1155 };
1156
1157 ol.startParagraph("reference");
1158 ol.parseText(text);
1159 ol.docify(" ");
1160 writeMarkerList(ol,
1161 theTranslator->trWriteList(static_cast<int>(members.size())).str(),
1162 members.size(),
1163 replaceFunc);
1164 ol.writeString(".");
1165 ol.endParagraph();
1166
1167 }
1168}
virtual bool isLinkable() const =0
virtual QCString anchor() const =0
virtual const FileDef * getBodyDef() const =0
virtual QCString getReference() const =0
virtual QCString getSourceFileBase() const =0
virtual QCString getOutputFileBase() const =0
virtual int getStartBodyLine() const =0
virtual const QCString & name() const =0
virtual bool isSignal() const =0
virtual bool isObjCMethod() const =0
virtual bool isSlot() const =0
virtual bool isFunction() const =0
virtual QCString getScopeString() const =0
virtual bool isPrototype() const =0
void writeString(const QCString &text)
Definition outputlist.h:411
void writeObjectLink(const QCString &ref, const QCString &file, const QCString &anchor, const QCString &name)
Definition outputlist.h:439
void docify(const QCString &s)
Definition outputlist.h:437
void startParagraph(const QCString &classDef=QCString())
Definition outputlist.h:407
void endParagraph()
Definition outputlist.h:409
void parseText(const QCString &textStr)
virtual QCString trWriteList(int numEntries)=0
#define Config_getBool(name)
Definition config.h:33
static MemberVector refMapToVector(const std::unordered_map< std::string, MemberDef * > &map)
#define qsnprintf
Definition qcstring.h:49
QCString getLanguageSpecificSeparator(SrcLangExt lang, bool classScope)
Returns the scope separator to use given the programming language lang.
Definition util.cpp:5897
void writeMarkerList(OutputList &ol, const std::string &markerText, size_t numMarkers, std::function< void(size_t)> replaceFunc)
Definition util.cpp:1106

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

Referenced by writeSourceReffedBy(), and writeSourceRefs().

◆ addInnerCompound()

void DefinitionImpl::addInnerCompound ( Definition * d)

Definition at line 1267 of file definition.cpp.

1268{
1269 err("DefinitionImpl::addInnerCompound() called\n");
1270}
#define err(fmt,...)
Definition message.h:127

References err.

◆ addSectionsToDefinition()

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

Definition at line 308 of file definition.cpp.

309{
310 //printf("%s: addSectionsToDefinition(%d)\n",qPrint(name()),anchorList->count());
311 for (const SectionInfo *si : anchorList)
312 {
313 //printf("Add section '%s' to definition '%s'\n",
314 // qPrint(si->label()),qPrint(name()));
315 SectionManager &sm = SectionManager::instance();
316 SectionInfo *gsi=sm.find(si->label());
317 //printf("===== label=%s gsi=%p\n",qPrint(si->label()),(void*)gsi);
318 if (gsi==nullptr)
319 {
320 gsi = sm.add(*si);
321 }
322 if (p->sectionRefs.find(gsi->label())==nullptr)
323 {
324 p->sectionRefs.add(gsi);
325 }
326 gsi->setDefinition(p->def);
327 }
328}
const T * find(const std::string &key) const
Definition linkedmap.h:47
QCString label() const
Definition section.h:69
void setDefinition(Definition *d)
Definition section.h:83
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().

◆ addSourceReferencedBy()

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

Definition at line 1246 of file definition.cpp.

1247{
1248 if (md)
1249 {
1250 p->sourceRefByDict.emplace(sourceRefName.str(),md);
1251 }
1252}

References p, and QCString::str().

◆ addSourceReferences()

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

Definition at line 1254 of file definition.cpp.

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

References p, and QCString::str().

◆ briefDescription()

QCString DefinitionImpl::briefDescription ( bool abbreviate = FALSE) const

Definition at line 1653 of file definition.cpp.

1654{
1655 //printf("%s::briefDescription(%d)='%s'\n",qPrint(name()),abbr,p->brief?qPrint(p->brief->doc):"<none>");
1656 return p->brief ?
1657 (abbr ? abbreviate(p->brief->doc,p->def->displayName()) : p->brief->doc) :
1658 QCString("");
1659}
static QCString abbreviate(const QCString &s, const QCString &name)

References abbreviate(), and p.

Referenced by hasBriefDescription().

◆ briefDescriptionAsTooltip()

QCString DefinitionImpl::briefDescriptionAsTooltip ( ) const

Definition at line 1672 of file definition.cpp.

1673{
1674 return p->brief ? p->brief->tooltip : QCString();
1675}

References p.

◆ briefFile()

QCString DefinitionImpl::briefFile ( ) const

Definition at line 1682 of file definition.cpp.

1683{
1684 return p->brief && !p->brief->file.isEmpty() ? p->brief->file : QCString("<"+p->name+">");
1685}

References p.

Referenced by _setBriefDescription(), operator=(), and setBriefDescription().

◆ briefLine()

int DefinitionImpl::briefLine ( ) const

Definition at line 1677 of file definition.cpp.

1678{
1679 return p->brief ? p->brief->line : 1;
1680}

References p.

Referenced by _setBriefDescription(), operator=(), and setBriefDescription().

◆ computeTooltip()

void DefinitionImpl::computeTooltip ( )

Definition at line 1661 of file definition.cpp.

1662{
1663 if (p->brief && p->brief->tooltip.isEmpty() && !p->brief->doc.isEmpty())
1664 {
1665 const MemberDef *md = p->def->definitionType()==Definition::TypeMember ? toMemberDef(p->def) : nullptr;
1666 const Definition *scope = p->def->definitionType()==Definition::TypeMember ? p->def->getOuterScope() : p->def;
1667 p->brief->tooltip = parseCommentAsText(scope,md,
1668 p->brief->doc, p->brief->file, p->brief->line);
1669 }
1670}
MemberDef * toMemberDef(Definition *d)
QCString parseCommentAsText(const Definition *scope, const MemberDef *md, const QCString &doc, const QCString &fileName, int lineNr)
Definition util.cpp:5349

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

◆ docFile()

QCString DefinitionImpl::docFile ( ) const

Definition at line 1598 of file definition.cpp.

1599{
1600 if (p->details && !p->details->file.isEmpty()) return p->details->file;
1601 else if (p->brief && !p->brief->file.isEmpty()) return p->brief->file;
1602 else return "<" + p->name + ">";
1603}

References p.

Referenced by _setDocumentation(), operator=(), setDocumentation(), and writeToc().

◆ docLine()

int DefinitionImpl::docLine ( ) const

Definition at line 1593 of file definition.cpp.

1594{
1595 return p->details ? p->details->line : p->brief ? p->brief->line : 1;
1596}

References p.

Referenced by _setDocumentation(), operator=(), setDocumentation(), and toDefinition().

◆ documentation()

QCString DefinitionImpl::documentation ( ) const

Definition at line 1588 of file definition.cpp.

1589{
1590 return p->details ? p->details->doc : QCString("");
1591}

References p.

◆ externalReference()

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

Definition at line 1898 of file definition.cpp.

1899{
1900 QCString ref = getReference();
1901 if (!ref.isEmpty())
1902 {
1903 auto it = Doxygen::tagDestinationMap.find(ref.str());
1905 {
1906 QCString result(it->second);
1907 size_t l = result.length();
1908 if (!relPath.isEmpty() && l>0 && result.at(0)=='.')
1909 { // relative path -> prepend relPath.
1910 result.prepend(relPath);
1911 l+=relPath.length();
1912 }
1913 if (l>0 && result.at(l-1)!='/') result+='/';
1914 return result;
1915 }
1916 }
1917 return relPath;
1918}
QCString getReference() const
static StringMap tagDestinationMap
Definition doxygen.h:115
DirIterator end(const DirIterator &) noexcept
Definition dir.cpp:175

References QCString::at(), end(), getReference(), QCString::isEmpty(), QCString::length(), QCString::prepend(), QCString::str(), and Doxygen::tagDestinationMap.

◆ findInnerCompound()

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

Definition at line 1262 of file definition.cpp.

1263{
1264 return nullptr;
1265}

◆ getBodyDef()

const FileDef * DefinitionImpl::getBodyDef ( ) const

Definition at line 1767 of file definition.cpp.

1768{
1769 return p->body ? p->body->fileDef : nullptr;
1770}

References p.

◆ getDefColumn()

int DefinitionImpl::getDefColumn ( ) const

Definition at line 1935 of file definition.cpp.

1936{
1937 return p->defColumn;
1938}

References p.

◆ getDefFileExtension()

QCString DefinitionImpl::getDefFileExtension ( ) const

Definition at line 1712 of file definition.cpp.

1713{
1714 return p->defFileExt;
1715}

References p.

◆ getDefFileName()

QCString DefinitionImpl::getDefFileName ( ) const

Definition at line 1707 of file definition.cpp.

1708{
1709 return p->defFileName;
1710}

References p.

◆ getDefLine()

int DefinitionImpl::getDefLine ( ) const

Definition at line 1930 of file definition.cpp.

1931{
1932 return p->defLine;
1933}

References p.

◆ getEndBodyLine()

int DefinitionImpl::getEndBodyLine ( ) const

Definition at line 1762 of file definition.cpp.

1763{
1764 return p->body ? p->body->endLine : -1;
1765}

References p.

◆ getLanguage()

SrcLangExt DefinitionImpl::getLanguage ( ) const

Definition at line 1851 of file definition.cpp.

1852{
1853 return p->lang;
1854}

References p.

Referenced by qualifiedName().

◆ getOuterScope()

Definition * DefinitionImpl::getOuterScope ( ) const

Definition at line 1786 of file definition.cpp.

1787{
1788 return p->outerScope;
1789}

References p.

Referenced by navigationPathAsString().

◆ getReference()

QCString DefinitionImpl::getReference ( ) const

Definition at line 1742 of file definition.cpp.

1743{
1744 return p->ref;
1745}

References p.

Referenced by externalReference().

◆ getReferencedByMembers()

const MemberVector & DefinitionImpl::getReferencedByMembers ( ) const

Definition at line 1803 of file definition.cpp.

1804{
1805 std::lock_guard<std::mutex> lock(g_memberReferenceMutex);
1806 if (p->referencedByMembers.empty() && !p->sourceRefByDict.empty())
1807 {
1808 p->referencedByMembers = refMapToVector(p->sourceRefByDict);
1809 }
1810 return p->referencedByMembers;
1811}
static std::mutex g_memberReferenceMutex

References g_memberReferenceMutex, p, and refMapToVector().

◆ getReferencesMembers()

const MemberVector & DefinitionImpl::getReferencesMembers ( ) const

Definition at line 1793 of file definition.cpp.

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

References g_memberReferenceMutex, p, and refMapToVector().

◆ getSectionRefs()

const SectionRefs & DefinitionImpl::getSectionRefs ( ) const

Definition at line 1576 of file definition.cpp.

1577{
1578 return p->sectionRefs;
1579}

References p.

◆ getSourceAnchor()

QCString DefinitionImpl::getSourceAnchor ( ) const

Definition at line 939 of file definition.cpp.

940{
941 const int maxAnchorStrLen = 20;
942 char anchorStr[maxAnchorStrLen];
943 anchorStr[0]='\0';
944 if (p->body && p->body->startLine!=-1)
945 {
946 if (Htags::useHtags)
947 {
948 qsnprintf(anchorStr,maxAnchorStrLen,"L%d",p->body->defLine);
949 }
950 else
951 {
952 qsnprintf(anchorStr,maxAnchorStrLen,"l%05d",p->body->defLine);
953 }
954 }
955 return anchorStr;
956}
static bool useHtags
Definition htags.h:23

References p, qsnprintf, and Htags::useHtags.

Referenced by writeSourceDef().

◆ getSourceFileBase()

QCString DefinitionImpl::getSourceFileBase ( ) const

Definition at line 926 of file definition.cpp.

927{
928 ASSERT(p->def->definitionType()!=Definition::TypeFile); // file overloads this method
929 QCString fn;
930 bool sourceBrowser = Config_getBool(SOURCE_BROWSER);
931 if (sourceBrowser &&
932 p->body && p->body->startLine!=-1 && p->body->fileDef)
933 {
934 fn = p->body->fileDef->getSourceFileBase();
935 }
936 return fn;
937}
#define ASSERT(x)
Definition qcstring.h:39

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

Referenced by writeSourceDef().

◆ getStartBodyLine()

int DefinitionImpl::getStartBodyLine ( ) const

Definition at line 1757 of file definition.cpp.

1758{
1759 return p->body ? p->body->startLine : -1;
1760}

References p.

Referenced by writeToc().

◆ getStartDefLine()

int DefinitionImpl::getStartDefLine ( ) const

Definition at line 1752 of file definition.cpp.

1753{
1754 return p->body ? p->body->defLine : -1;
1755}

References p.

◆ hasBriefDescription()

bool DefinitionImpl::hasBriefDescription ( ) const

Definition at line 1892 of file definition.cpp.

1893{
1894 bool briefMemberDesc = Config_getBool(BRIEF_MEMBER_DESC);
1895 return !briefDescription().isEmpty() && briefMemberDesc;
1896}
QCString briefDescription(bool abbreviate=FALSE) const

References briefDescription(), Config_getBool, and QCString::isEmpty().

◆ hasDocumentation()

bool DefinitionImpl::hasDocumentation ( ) const

Definition at line 1222 of file definition.cpp.

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

References Config_getBool, and p.

◆ hasRequirementRefs()

bool DefinitionImpl::hasRequirementRefs ( ) const

Definition at line 1217 of file definition.cpp.

1218{
1219 return !p->requirementRefs.empty();
1220}

References p.

◆ hasSections()

bool DefinitionImpl::hasSections ( ) const

Definition at line 330 of file definition.cpp.

331{
332 //printf("DefinitionImpl::hasSections(%s) #sections=%zu\n",qPrint(name()), p->sectionRefs.size());
333 if (p->sectionRefs.empty()) return FALSE;
334 for (const SectionInfo *si : p->sectionRefs)
335 {
336 if (si->type().isSection())
337 {
338 return TRUE;
339 }
340 }
341 return FALSE;
342}
SectionType type() const
Definition section.h:71
constexpr bool isSection() const
Definition section.h:47

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

◆ hasSourceReffedBy()

bool DefinitionImpl::hasSourceReffedBy ( ) const

Definition at line 1207 of file definition.cpp.

1208{
1209 return !p->sourceRefByDict.empty();
1210}

References p.

◆ hasSourceRefs()

bool DefinitionImpl::hasSourceRefs ( ) const

Definition at line 1212 of file definition.cpp.

1213{
1214 return !p->sourceRefsDict.empty();
1215}

References p.

◆ hasSources()

bool DefinitionImpl::hasSources ( ) const

Definition at line 1029 of file definition.cpp.

1030{
1031 return p->body && p->body->startLine!=-1 &&
1032 p->body->endLine>=p->body->startLine &&
1033 p->body->fileDef;
1034}

References p.

Referenced by writeInlineCode().

◆ hasUserDocumentation()

bool DefinitionImpl::hasUserDocumentation ( ) const

Definition at line 1237 of file definition.cpp.

1238{
1239 bool hasDocs =
1240 (p->details && !p->details->doc.isEmpty()) ||
1241 (p->brief && !p->brief->doc.isEmpty()) ||
1242 (p->inbodyDocs && !p->inbodyDocs->doc.isEmpty());
1243 return hasDocs;
1244}

References p.

◆ id()

QCString DefinitionImpl::id ( ) const

Definition at line 303 of file definition.cpp.

304{
305 return p->id;
306}

References p.

Referenced by setId().

◆ inbodyDocumentation()

QCString DefinitionImpl::inbodyDocumentation ( ) const

Definition at line 1689 of file definition.cpp.

1690{
1691 return p->inbodyDocs ? p->inbodyDocs->doc : QCString("");
1692}

References p.

◆ inbodyFile()

QCString DefinitionImpl::inbodyFile ( ) const

Definition at line 1699 of file definition.cpp.

1700{
1701 return p->inbodyDocs && !p->inbodyDocs->file.isEmpty() ? p->inbodyDocs->file : QCString("<"+p->name+">");
1702}

References p.

Referenced by _setInbodyDocumentation(), and setInbodyDocumentation().

◆ inbodyLine()

int DefinitionImpl::inbodyLine ( ) const

Definition at line 1694 of file definition.cpp.

1695{
1696 return p->inbodyDocs ? p->inbodyDocs->line : 1;
1697}

References p.

Referenced by _setInbodyDocumentation(), and setInbodyDocumentation().

◆ isAnonymous()

bool DefinitionImpl::isAnonymous ( ) const

Definition at line 1925 of file definition.cpp.

1926{
1927 return p->isAnonymous;
1928}

References p.

◆ isArtificial()

bool DefinitionImpl::isArtificial ( ) const

Definition at line 1732 of file definition.cpp.

1733{
1734 return p->isArtificial;
1735}

References p.

◆ isExported()

bool DefinitionImpl::isExported ( ) const

Definition at line 1737 of file definition.cpp.

1738{
1739 return p->isExported;
1740}

References p.

◆ isHidden()

bool DefinitionImpl::isHidden ( ) const

Definition at line 1717 of file definition.cpp.

1718{
1719 return p->hidden;
1720}

References p.

◆ isLinkableViaGroup()

bool DefinitionImpl::isLinkableViaGroup ( ) const

Definition at line 1777 of file definition.cpp.

1778{
1779 for (const auto &gd : partOfGroups())
1780 {
1781 if (gd->isLinkable()) return true;
1782 }
1783 return false;
1784}
const GroupList & partOfGroups() const

References partOfGroups().

◆ isReference()

bool DefinitionImpl::isReference ( ) const

Definition at line 1747 of file definition.cpp.

1748{
1749 return !p->ref.isEmpty();
1750}

References p.

◆ isVisible()

bool DefinitionImpl::isVisible ( ) const

Definition at line 1727 of file definition.cpp.

1728{
1729 return p->def->isLinkable() && !p->hidden;
1730}

References p.

◆ isVisibleInProject()

bool DefinitionImpl::isVisibleInProject ( ) const

Definition at line 1722 of file definition.cpp.

1723{
1724 return p->def->isLinkableInProject() && !p->hidden;
1725}

References p.

◆ localName()

const QCString & DefinitionImpl::localName ( ) const

Definition at line 1331 of file definition.cpp.

1332{
1333 return p->localName;
1334}

References p.

Referenced by navigationPathAsString().

◆ makePartOfGroup()

void DefinitionImpl::makePartOfGroup ( GroupDef * gd)

Definition at line 1336 of file definition.cpp.

1337{
1338 p->partOfGroups.push_back(gd);
1339}

References p.

◆ mergeReferencedBy()

void DefinitionImpl::mergeReferencedBy ( const Definition * other)

Definition at line 1829 of file definition.cpp.

1830{
1831 const DefinitionImpl *defImpl = other->toDefinitionImpl_();
1832 if (defImpl)
1833 {
1834 for (const auto &kv : defImpl->p->sourceRefByDict)
1835 {
1836 auto it = p->sourceRefByDict.find(kv.first);
1837 if (it != p->sourceRefByDict.end())
1838 {
1839 p->sourceRefByDict.emplace(kv.first,kv.second);
1840 }
1841 }
1842 }
1843}
virtual const DefinitionImpl * toDefinitionImpl_() const =0
DefinitionImpl(Definition *def, const QCString &defFileName, int defLine, int defColumn, const QCString &name, const char *b=nullptr, const char *d=nullptr, bool isSymbol=TRUE)

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

◆ mergeReferences()

void DefinitionImpl::mergeReferences ( const Definition * other)

Definition at line 1813 of file definition.cpp.

1814{
1815 const DefinitionImpl *defImpl = other->toDefinitionImpl_();
1816 if (defImpl)
1817 {
1818 for (const auto &kv : defImpl->p->sourceRefsDict)
1819 {
1820 auto it = p->sourceRefsDict.find(kv.first);
1821 if (it != p->sourceRefsDict.end())
1822 {
1823 p->sourceRefsDict.insert(kv);
1824 }
1825 }
1826 }
1827}

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

◆ mergeRefItems()

void DefinitionImpl::mergeRefItems ( Definition * d)

Definition at line 1351 of file definition.cpp.

1352{
1353 auto otherXrefList = d->xrefListItems();
1354
1355 // append vectors
1356 p->xrefListItems.reserve(p->xrefListItems.size()+otherXrefList.size());
1357 p->xrefListItems.insert (p->xrefListItems.end(),
1358 otherXrefList.begin(),otherXrefList.end());
1359
1360 // sort results on itemId
1361 std::stable_sort(p->xrefListItems.begin(),p->xrefListItems.end(),
1362 [](RefItem *left,RefItem *right)
1363 { return left->id() <right->id() ||
1364 (left->id()==right->id() &&
1365 left->list()->listName() < right->list()->listName());
1366 });
1367
1368 // filter out duplicates
1369 auto last = std::unique(p->xrefListItems.begin(),p->xrefListItems.end(),
1370 [](const RefItem *left,const RefItem *right)
1371 { return left->id()==right->id() &&
1372 left->list()->listName()==right->list()->listName();
1373 });
1374 p->xrefListItems.erase(last, p->xrefListItems.end());
1375}
virtual const RefItemVector & xrefListItems() const =0

References p, and Definition::xrefListItems().

◆ name()

const QCString & DefinitionImpl::name ( ) const

◆ navigationPathAsString()

QCString DefinitionImpl::navigationPathAsString ( ) const

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

Definition at line 1437 of file definition.cpp.

1438{
1439 QCString result;
1440 Definition *outerScope = getOuterScope();
1441 QCString locName = localName();
1442 if (outerScope && outerScope!=Doxygen::globalScope)
1443 {
1444 result+=outerScope->navigationPathAsString();
1445 }
1446 else if (p->def->definitionType()==Definition::TypeFile &&
1447 toFileDef(p->def)->getDirDef())
1448 {
1449 result+=(toFileDef(p->def))->getDirDef()->navigationPathAsString();
1450 }
1451 result+="<li class=\"navelem\">";
1452 if (p->def->isLinkableInProject())
1453 {
1454 QCString fn = p->def->getOutputFileBase();
1456 if (p->def->definitionType()==Definition::TypeGroup &&
1457 !toGroupDef(p->def)->groupTitle().isEmpty())
1458 {
1459 QCString title = parseCommentAsHtml(p->def,nullptr,toGroupDef(p->def)->groupTitle(),
1460 p->def->getDefFileName(),p->def->getDefLine());
1461 result+="<a href=\"$relpath^"+fn+"\">"+title+"</a>";
1462 }
1463 else if (p->def->definitionType()==Definition::TypePage &&
1464 toPageDef(p->def)->hasTitle())
1465 {
1466 QCString title = parseCommentAsHtml(p->def,nullptr,toPageDef(p->def)->title(),
1467 p->def->getDefFileName(),p->def->getDefLine());
1468 result+="<a href=\"$relpath^"+fn+"\">"+title+"</a>";
1469 }
1470 else if (p->def->definitionType()==Definition::TypeClass)
1471 {
1472 QCString name = toClassDef(p->def)->className();
1473 if (name.endsWith("-p"))
1474 {
1475 name = name.left(name.length()-2);
1476 }
1477 result+="<a href=\"$relpath^"+fn;
1478 if (!p->def->anchor().isEmpty()) result+="#"+p->def->anchor();
1479 result+="\">"+convertToHtml(name)+"</a>";
1480 }
1481 else
1482 {
1483 result+="<a href=\"$relpath^"+fn+"\">"+
1484 convertToHtml(locName)+"</a>";
1485 }
1486 }
1487 else
1488 {
1489 result+="<b>"+convertToHtml(locName)+"</b>";
1490 }
1491 result+="</li>";
1492 return result;
1493}
virtual QCString className() const =0
Returns the name of the class including outer classes, but not including namespaces.
virtual QCString navigationPathAsString() const =0
const QCString & localName() const
Definition * getOuterScope() const
static NamespaceDefMutable * globalScope
Definition doxygen.h:120
virtual DirDef * getDirDef() const =0
virtual QCString groupTitle() const =0
virtual bool hasTitle() const =0
virtual QCString title() const =0
ClassDef * toClassDef(Definition *d)
FileDef * toFileDef(Definition *d)
Definition filedef.cpp:1967
GroupDef * toGroupDef(Definition *d)
PageDef * toPageDef(Definition *d)
Definition pagedef.cpp:502
QCString parseCommentAsHtml(const Definition *scope, const MemberDef *member, const QCString &doc, const QCString &fileName, int lineNr)
Definition util.cpp:5405
QCString convertToHtml(const QCString &s, bool keepEntities)
Definition util.cpp:3944
void addHtmlExtensionIfMissing(QCString &fName)
Definition util.cpp:4902

References addHtmlExtensionIfMissing(), ClassDef::className(), convertToHtml(), getOuterScope(), Doxygen::globalScope, localName(), name(), Definition::navigationPathAsString(), p, parseCommentAsHtml(), toClassDef(), toFileDef(), toGroupDef(), toPageDef(), Definition::TypeClass, Definition::TypeFile, Definition::TypeGroup, and Definition::TypePage.

Referenced by writeNavigationPath().

◆ operator=() [1/2]

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

Definition at line 266 of file definition.cpp.

267{
268 if (this!=&other)
269 {
270 p = std::make_unique<Private>(*other.p);
271 }
272 return *this;
273}

References DefinitionImpl(), and p.

◆ operator=() [2/2]

◆ partOfGroups()

const GroupList & DefinitionImpl::partOfGroups ( ) const

Definition at line 1772 of file definition.cpp.

1773{
1774 return p->partOfGroups;
1775}

References p.

Referenced by isLinkableViaGroup().

◆ pathFragment()

QCString DefinitionImpl::pathFragment ( ) const

Definition at line 1399 of file definition.cpp.

1400{
1401 QCString result;
1402 if (p->outerScope && p->outerScope!=Doxygen::globalScope)
1403 {
1404 result = p->outerScope->pathFragment();
1405 }
1406 if (p->def->isLinkable())
1407 {
1408 if (!result.isEmpty()) result+="/";
1409 if (p->def->definitionType()==Definition::TypeGroup &&
1410 !toGroupDef(p->def)->groupTitle().isEmpty())
1411 {
1412 result+=toGroupDef(p->def)->groupTitle();
1413 }
1414 else if (p->def->definitionType()==Definition::TypePage &&
1415 toPageDef(p->def)->hasTitle())
1416 {
1417 result+=toPageDef(p->def)->title();
1418 }
1419 else
1420 {
1421 result+=p->localName;
1422 }
1423 }
1424 else
1425 {
1426 result+=p->localName;
1427 }
1428 return result;
1429}

References Doxygen::globalScope, GroupDef::groupTitle(), QCString::isEmpty(), p, PageDef::title(), toGroupDef(), toPageDef(), Definition::TypeGroup, and Definition::TypePage.

◆ qualifiedName()

QCString DefinitionImpl::qualifiedName ( ) const

Definition at line 1274 of file definition.cpp.

1275{
1276 std::lock_guard<std::recursive_mutex> lock(g_qualifiedNameMutex);
1277 if (!p->qualifiedName.isEmpty())
1278 {
1279 return p->qualifiedName;
1280 }
1281
1282 //printf("start %s::qualifiedName() localName=%s\n",qPrint(name()),qPrint(p->localName));
1283 if (p->outerScope==nullptr)
1284 {
1285 if (p->localName=="<globalScope>")
1286 {
1287 return "";
1288 }
1289 else
1290 {
1291 return p->localName;
1292 }
1293 }
1294
1295 if (p->outerScope->name()=="<globalScope>")
1296 {
1297 p->qualifiedName = p->localName;
1298 }
1299 else
1300 {
1301 p->qualifiedName = p->outerScope->qualifiedName()+
1303 p->localName;
1304 }
1305 //printf("end %s::qualifiedName()=%s\n",qPrint(name()),qPrint(p->qualifiedName));
1306 //count--;
1307 return p->qualifiedName;
1308}
SrcLangExt getLanguage() const
static std::recursive_mutex g_qualifiedNameMutex

References g_qualifiedNameMutex, getLanguage(), getLanguageSpecificSeparator(), and p.

◆ requirementReferences()

const RequirementRefs & DefinitionImpl::requirementReferences ( ) const

Definition at line 1394 of file definition.cpp.

1395{
1396 return p->requirementRefs;
1397}

References p.

◆ setArtificial()

void DefinitionImpl::setArtificial ( bool b)

Definition at line 1861 of file definition.cpp.

1862{
1863 p->isArtificial = b;
1864}

References p.

◆ setBodyDef()

void DefinitionImpl::setBodyDef ( const FileDef * fd)

Definition at line 1020 of file definition.cpp.

1021{
1022 if (!p->body.has_value())
1023 {
1024 p->body = std::make_optional<BodyInfo>();
1025 }
1026 p->body.value().fileDef=fd;
1027}

References p.

◆ setBodySegment()

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

Definition at line 1008 of file definition.cpp.

1009{
1010 if (!p->body.has_value())
1011 {
1012 p->body = std::make_optional<BodyInfo>();
1013 }
1014 BodyInfo &body = p->body.value();
1015 body.defLine = defLine;
1016 body.startLine = bls;
1017 body.endLine = ble;
1018}
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.

◆ setBriefDescription()

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

Definition at line 500 of file definition.cpp.

501{
502 if (b.isEmpty()) return;
504}

References _setBriefDescription(), briefFile(), briefLine(), and QCString::isEmpty().

◆ setDefFile()

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

Definition at line 149 of file definition.cpp.

150{
151 p->setDefFileName(df);
152 p->defLine = defLine;
153 p->defColumn = defCol;
154}

References p.

◆ setDocumentation()

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

Definition at line 437 of file definition.cpp.

438{
439 if (d.isEmpty()) return;
441}

References _setDocumentation(), docFile(), docLine(), FALSE, QCString::isEmpty(), and stripWhiteSpace().

◆ setExported()

void DefinitionImpl::setExported ( bool b)

Definition at line 1866 of file definition.cpp.

1867{
1868 p->isExported = b;
1869}

References p.

◆ setHidden()

void DefinitionImpl::setHidden ( bool b)

Definition at line 1856 of file definition.cpp.

1857{
1858 p->hidden = p->hidden || b;
1859}

References p.

◆ setId()

void DefinitionImpl::setId ( const QCString & name)

Definition at line 292 of file definition.cpp.

293{
294 if (id.isEmpty()) return;
295 p->id = id;
297 {
298 //printf("DefinitionImpl::setId '%s'->'%s'\n",id,qPrint(p->name));
299 Doxygen::clangUsrMap->emplace(id.str(),p->def);
300 }
301}
QCString id() const
static ClangUsrMap * clangUsrMap
Definition doxygen.h:125

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

◆ setInbodyDocumentation()

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

Definition at line 528 of file definition.cpp.

529{
530 if (d.isEmpty()) return;
532}
void _setInbodyDocumentation(const QCString &d, const QCString &docFile, int docLine)

References _setInbodyDocumentation(), inbodyFile(), inbodyLine(), and QCString::isEmpty().

◆ setLanguage()

void DefinitionImpl::setLanguage ( SrcLangExt lang)

Definition at line 1876 of file definition.cpp.

1877{
1878 p->lang=lang;
1879}

References p.

◆ setLocalName()

void DefinitionImpl::setLocalName ( const QCString & name)

Definition at line 1871 of file definition.cpp.

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

References name(), and p.

◆ setName()

void DefinitionImpl::setName ( const QCString & name)

Definition at line 283 of file definition.cpp.

284{
285 if (name.isEmpty()) return;
286 p->name = name;
287 p->isAnonymous = p->name.isEmpty() ||
288 p->name.at(0)=='@' ||
289 p->name.find("::@")!=-1;
290}

References name(), and p.

Referenced by DefinitionImpl().

◆ setOuterScope()

void DefinitionImpl::setOuterScope ( Definition * d)

Definition at line 1310 of file definition.cpp.

1311{
1312 std::lock_guard<std::recursive_mutex> lock(g_qualifiedNameMutex);
1313 //printf("%s::setOuterScope(%s)\n",qPrint(name()),d?qPrint(d->name()):"<none>");
1314 Definition *outerScope = p->outerScope;
1315 bool found=false;
1316 // make sure that we are not creating a recursive scope relation.
1317 while (outerScope && !found)
1318 {
1319 found = (outerScope==d);
1320 outerScope = outerScope->getOuterScope();
1321 }
1322 if (!found)
1323 {
1324 p->qualifiedName.clear(); // flush cached scope name
1325 p->outerScope = d;
1326 }
1327 p->hidden = p->hidden || d->isHidden();
1328 assert(p->def!=p->outerScope);
1329}
virtual bool isHidden() const =0
virtual Definition * getOuterScope() const =0

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

◆ setReference()

void DefinitionImpl::setReference ( const QCString & r)

Definition at line 1846 of file definition.cpp.

1847{
1848 p->ref=r;
1849}

References p.

◆ setRefItems()

void DefinitionImpl::setRefItems ( const RefItemVector & sli)

Definition at line 1341 of file definition.cpp.

1342{
1343 p->xrefListItems.insert(p->xrefListItems.end(), sli.cbegin(), sli.cend());
1344}

References p.

◆ setRequirementReferences()

void DefinitionImpl::setRequirementReferences ( const RequirementRefs & rqli)

Definition at line 1346 of file definition.cpp.

1347{
1348 p->requirementRefs.insert(p->requirementRefs.end(), rqli.cbegin(), rqli.cend());
1349}

References p.

◆ symbolName()

QCString DefinitionImpl::symbolName ( ) const

Definition at line 1581 of file definition.cpp.

1582{
1583 return p->symbolName;
1584}

References p.

Referenced by addToMap().

◆ writeDocAnchorsToTagFile()

void DefinitionImpl::writeDocAnchorsToTagFile ( TextStream & tagFile) const

Definition at line 344 of file definition.cpp.

345{
346 if (!p->sectionRefs.empty())
347 {
348 //printf("%s: writeDocAnchorsToTagFile(%d)\n",qPrint(name()),p->sectionRef.size());
349 for (const SectionInfo *si : p->sectionRefs)
350 {
351 if (!si->generated() && si->ref().isEmpty() && !AnchorGenerator::instance().isGenerated(si->label().str()))
352 {
353 //printf("write an entry!\n");
354 if (p->def->definitionType()==Definition::TypeMember) tagFile << " ";
355 QCString fn = si->fileName();
357 tagFile << " <docanchor file=\"" << fn << "\"";
358 if (!si->title().isEmpty())
359 {
360 tagFile << " title=\"" << convertToXML(si->title()) << "\"";
361 }
362 tagFile << ">" << si->label() << "</docanchor>\n";
363 }
364 }
365 }
366}
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
QCString ref() const
Definition section.h:72
QCString fileName() const
Definition section.h:74
bool generated() const
Definition section.h:75
QCString title() const
Definition section.h:70
QCString convertToXML(const QCString &s, bool keepEntities)
Definition util.cpp:3893

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

◆ writeInlineCode()

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

Write code of this definition into the documentation

Definition at line 1037 of file definition.cpp.

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

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

◆ writeNavigationPath()

void DefinitionImpl::writeNavigationPath ( OutputList & ol) const

Definition at line 1496 of file definition.cpp.

1497{
1498 ol.pushGeneratorState();
1500
1501 QCString navPath;
1502 navPath += "<div id=\"nav-path\" class=\"navpath\">\n"
1503 " <ul>\n";
1504 navPath += navigationPathAsString();
1505 navPath += " </ul>\n"
1506 "</div>\n";
1507 ol.writeNavigationPath(navPath);
1508
1509 ol.popGeneratorState();
1510}
QCString navigationPathAsString() const
void disableAllBut(OutputType o)
void writeNavigationPath(const QCString &s)
Definition outputlist.h:608

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

◆ writePageNavigation()

void DefinitionImpl::writePageNavigation ( OutputList & ol) const

Definition at line 1948 of file definition.cpp.

1949{
1950}

◆ writeQuickMemberLinks()

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

Definition at line 1940 of file definition.cpp.

1941{
1942}

◆ writeRequirementRefs()

void DefinitionImpl::writeRequirementRefs ( OutputList & ol) const

Definition at line 1180 of file definition.cpp.

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

◆ writeSourceDef()

void DefinitionImpl::writeSourceDef ( OutputList & ol) const

Write a reference to the source code defining this definition

Definition at line 959 of file definition.cpp.

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

References OutputList::endParagraph(), err, QCString::find(), getSourceAnchor(), getSourceFileBase(), QCString::isEmpty(), QCString::left(), QCString::length(), QCString::mid(), p, OutputList::parseText(), QCString::right(), QCString::sprintf(), OutputList::startParagraph(), theTranslator, and OutputList::writeObjectLink().

◆ writeSourceReffedBy()

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

Definition at line 1170 of file definition.cpp.

1171{
1172 _writeSourceRefList(ol,scopeName,theTranslator->trReferencedBy(),p->sourceRefByDict,FALSE);
1173}
void _writeSourceRefList(OutputList &ol, const QCString &scopeName, const QCString &text, const std::unordered_map< std::string, MemberDef * > &members, bool) const
virtual QCString trReferencedBy()=0

References _writeSourceRefList(), FALSE, p, and theTranslator.

◆ writeSourceRefs()

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

Definition at line 1175 of file definition.cpp.

1176{
1177 _writeSourceRefList(ol,scopeName,theTranslator->trReferences(),p->sourceRefsDict,TRUE);
1178}
virtual QCString trReferences()=0

References _writeSourceRefList(), p, theTranslator, and TRUE.

◆ writeSummaryLinks()

void DefinitionImpl::writeSummaryLinks ( OutputList & ) const

Definition at line 1944 of file definition.cpp.

1945{
1946}

◆ writeToc()

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

Definition at line 1512 of file definition.cpp.

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

References Config_getBool, OutputList::disableAllBut(), Docbook, LocalToc::docbookLevel(), docFile(), OutputList::endLocalToc(), OutputList::endTocEntry(), OutputList::generateDoc(), getStartBodyLine(), Html, LocalToc::htmlLevel(), LocalToc::isDocbookEnabled(), QCString::isEmpty(), 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.

◆ xrefListItems()

const RefItemVector & DefinitionImpl::xrefListItems ( ) const

Definition at line 1389 of file definition.cpp.

1390{
1391 return p->xrefListItems;
1392}

References p.

Member Data Documentation

◆ p

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

Definition at line 148 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(), writeDocAnchorsToTagFile(), writeInlineCode(), writeRequirementRefs(), writeSourceDef(), writeSourceReffedBy(), writeSourceRefs(), writeToc(), xrefListItems(), and ~DefinitionImpl().


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