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

242 : p(std::make_unique<Private>())
243{
244 setName(name);
245 p->def = def;
246 p->defLine = dl;
247 p->defColumn = dc;
248 p->init(df,name);
249 p->isSymbol = isSymbol;
250 if (isSymbol) addToMap(name,def);
251 _setBriefDescription(b,df,dl);
254 {
255 p->hidden = TRUE;
256 }
257}
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 274 of file definition.cpp.

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

References p, and removeFromMap().

◆ DefinitionImpl() [2/3]

DefinitionImpl::DefinitionImpl ( const DefinitionImpl & d)

Definition at line 259 of file definition.cpp.

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

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

368{
369 uint8_t md5_sig[16];
370 char sigStr[33];
371 // to avoid mismatches due to differences in indenting, we first remove
372 // double whitespaces...
373 QCString docStr = doc.simplifyWhiteSpace();
374 MD5Buffer(docStr.data(),static_cast<unsigned int>(docStr.length()),md5_sig);
375 MD5SigToString(md5_sig,sigStr);
376 //printf("%s:_docsAlreadyAdded doc='%s' sig='%s' docSigs='%s'\n",
377 // qPrint(name()),qPrint(doc),qPrint(sigStr),qPrint(sigList));
378 if (sigList.find(sigStr)==-1) // new docs, add signature to prevent re-adding it
379 {
380 sigList+=QCString(":")+sigStr;
381 return FALSE;
382 }
383 else
384 {
385 return TRUE;
386 }
387}
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 1376 of file definition.cpp.

1377{
1378 for (const RefItem *item : p->xrefListItems)
1379 {
1380 if (item->list()->listName()==listName)
1381 {
1382 return item->id();
1383 }
1384 }
1385 return -1;
1386}
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 442 of file definition.cpp.

443{
444 QCString brief = b;
445 brief = brief.stripWhiteSpace();
447 brief = brief.stripWhiteSpace();
448 if (brief.isEmpty()) return;
449 size_t bl = brief.length();
450 if (bl>0)
451 {
452 if (!theTranslator || theTranslator->needsPunctuation()) // add punctuation if needed
453 {
454 int c = brief.at(bl-1);
455 switch(c)
456 {
457 case '.': case '!': case '?': case ':': break;
458 default:
459 if (isUTF8CharUpperCase(brief.str(),0) && !lastUTF8CharIsMultibyte(brief.str())) brief+='.';
460 break;
461 }
462 }
463 }
464
465 if (!_docsAlreadyAdded(brief,p->briefSignatures))
466 {
467 if (p->brief && !p->brief->doc.isEmpty())
468 {
469 //printf("adding to details\n");
471 }
472 else
473 {
474 //fprintf(stderr,"DefinitionImpl::setBriefDescription(%s,%s,%d)\n",b,briefFile,briefLine);
475 if (!p->brief.has_value())
476 {
477 p->brief = std::make_optional<BriefInfo>();
478 }
479 BriefInfo &briefInfo = p->brief.value();
480 briefInfo.doc=brief;
481 if (briefLine!=-1)
482 {
483 briefInfo.file = briefFile;
484 briefInfo.line = briefLine;
485 }
486 else
487 {
488 briefInfo.file = briefFile;
489 briefInfo.line = 1;
490 }
491 }
492 }
493 else
494 {
495 //printf("do nothing!\n");
496 }
497}
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:5012

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

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

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

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

References name(), and p.

◆ _symbolName()

QCString DefinitionImpl::_symbolName ( ) const

Definition at line 1886 of file definition.cpp.

1887{
1888 return p->symbolName;
1889}

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

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

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

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

References err.

◆ addSectionsToDefinition()

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

Definition at line 307 of file definition.cpp.

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

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

References p, and QCString::str().

◆ addSourceReferences()

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

Definition at line 1253 of file definition.cpp.

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

References p, and QCString::str().

◆ briefDescription()

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

Definition at line 1652 of file definition.cpp.

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

References abbreviate(), and p.

Referenced by hasBriefDescription().

◆ briefDescriptionAsTooltip()

QCString DefinitionImpl::briefDescriptionAsTooltip ( ) const

Definition at line 1671 of file definition.cpp.

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

References p.

◆ briefFile()

QCString DefinitionImpl::briefFile ( ) const

Definition at line 1681 of file definition.cpp.

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

References p.

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

◆ briefLine()

int DefinitionImpl::briefLine ( ) const

Definition at line 1676 of file definition.cpp.

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

References p.

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

◆ computeTooltip()

void DefinitionImpl::computeTooltip ( )

Definition at line 1660 of file definition.cpp.

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

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

◆ docFile()

QCString DefinitionImpl::docFile ( ) const

Definition at line 1597 of file definition.cpp.

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

References p.

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

◆ docLine()

int DefinitionImpl::docLine ( ) const

Definition at line 1592 of file definition.cpp.

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

References p.

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

◆ documentation()

QCString DefinitionImpl::documentation ( ) const

Definition at line 1587 of file definition.cpp.

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

References p.

◆ externalReference()

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

Definition at line 1897 of file definition.cpp.

1898{
1899 QCString ref = getReference();
1900 if (!ref.isEmpty())
1901 {
1902 auto it = Doxygen::tagDestinationMap.find(ref.str());
1904 {
1905 QCString result(it->second);
1906 size_t l = result.length();
1907 if (!relPath.isEmpty() && l>0 && result.at(0)=='.')
1908 { // relative path -> prepend relPath.
1909 result.prepend(relPath);
1910 l+=relPath.length();
1911 }
1912 if (l>0 && result.at(l-1)!='/') result+='/';
1913 return result;
1914 }
1915 }
1916 return relPath;
1917}
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 1261 of file definition.cpp.

1262{
1263 return nullptr;
1264}

◆ getBodyDef()

const FileDef * DefinitionImpl::getBodyDef ( ) const

Definition at line 1766 of file definition.cpp.

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

References p.

◆ getDefColumn()

int DefinitionImpl::getDefColumn ( ) const

Definition at line 1934 of file definition.cpp.

1935{
1936 return p->defColumn;
1937}

References p.

◆ getDefFileExtension()

QCString DefinitionImpl::getDefFileExtension ( ) const

Definition at line 1711 of file definition.cpp.

1712{
1713 return p->defFileExt;
1714}

References p.

◆ getDefFileName()

QCString DefinitionImpl::getDefFileName ( ) const

Definition at line 1706 of file definition.cpp.

1707{
1708 return p->defFileName;
1709}

References p.

◆ getDefLine()

int DefinitionImpl::getDefLine ( ) const

Definition at line 1929 of file definition.cpp.

1930{
1931 return p->defLine;
1932}

References p.

◆ getEndBodyLine()

int DefinitionImpl::getEndBodyLine ( ) const

Definition at line 1761 of file definition.cpp.

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

References p.

◆ getLanguage()

SrcLangExt DefinitionImpl::getLanguage ( ) const

Definition at line 1850 of file definition.cpp.

1851{
1852 return p->lang;
1853}

References p.

Referenced by qualifiedName().

◆ getOuterScope()

Definition * DefinitionImpl::getOuterScope ( ) const

Definition at line 1785 of file definition.cpp.

1786{
1787 return p->outerScope;
1788}

References p.

Referenced by navigationPathAsString().

◆ getReference()

QCString DefinitionImpl::getReference ( ) const

Definition at line 1741 of file definition.cpp.

1742{
1743 return p->ref;
1744}

References p.

Referenced by externalReference().

◆ getReferencedByMembers()

const MemberVector & DefinitionImpl::getReferencedByMembers ( ) const

Definition at line 1802 of file definition.cpp.

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

References g_memberReferenceMutex, p, and refMapToVector().

◆ getReferencesMembers()

const MemberVector & DefinitionImpl::getReferencesMembers ( ) const

Definition at line 1792 of file definition.cpp.

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

References g_memberReferenceMutex, p, and refMapToVector().

◆ getSectionRefs()

const SectionRefs & DefinitionImpl::getSectionRefs ( ) const

Definition at line 1575 of file definition.cpp.

1576{
1577 return p->sectionRefs;
1578}

References p.

◆ getSourceAnchor()

QCString DefinitionImpl::getSourceAnchor ( ) const

Definition at line 938 of file definition.cpp.

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

References p, qsnprintf, and Htags::useHtags.

Referenced by writeSourceDef().

◆ getSourceFileBase()

QCString DefinitionImpl::getSourceFileBase ( ) const

Definition at line 925 of file definition.cpp.

926{
927 ASSERT(p->def->definitionType()!=Definition::TypeFile); // file overloads this method
928 QCString fn;
929 bool sourceBrowser = Config_getBool(SOURCE_BROWSER);
930 if (sourceBrowser &&
931 p->body && p->body->startLine!=-1 && p->body->fileDef)
932 {
933 fn = p->body->fileDef->getSourceFileBase();
934 }
935 return fn;
936}
#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 1756 of file definition.cpp.

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

References p.

Referenced by writeToc().

◆ getStartDefLine()

int DefinitionImpl::getStartDefLine ( ) const

Definition at line 1751 of file definition.cpp.

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

References p.

◆ hasBriefDescription()

bool DefinitionImpl::hasBriefDescription ( ) const

Definition at line 1891 of file definition.cpp.

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

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

◆ hasDocumentation()

bool DefinitionImpl::hasDocumentation ( ) const

Definition at line 1221 of file definition.cpp.

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

References Config_getBool, and p.

◆ hasRequirementRefs()

bool DefinitionImpl::hasRequirementRefs ( ) const

Definition at line 1216 of file definition.cpp.

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

References p.

◆ hasSections()

bool DefinitionImpl::hasSections ( ) const

Definition at line 329 of file definition.cpp.

330{
331 //printf("DefinitionImpl::hasSections(%s) #sections=%zu\n",qPrint(name()), p->sectionRefs.size());
332 if (p->sectionRefs.empty()) return FALSE;
333 for (const SectionInfo *si : p->sectionRefs)
334 {
335 if (si->type().isSection())
336 {
337 return TRUE;
338 }
339 }
340 return FALSE;
341}
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 1206 of file definition.cpp.

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

References p.

◆ hasSourceRefs()

bool DefinitionImpl::hasSourceRefs ( ) const

Definition at line 1211 of file definition.cpp.

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

References p.

◆ hasSources()

bool DefinitionImpl::hasSources ( ) const

Definition at line 1028 of file definition.cpp.

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

References p.

Referenced by writeInlineCode().

◆ hasUserDocumentation()

bool DefinitionImpl::hasUserDocumentation ( ) const

Definition at line 1236 of file definition.cpp.

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

References p.

◆ id()

QCString DefinitionImpl::id ( ) const

Definition at line 302 of file definition.cpp.

303{
304 return p->id;
305}

Referenced by setId().

◆ inbodyDocumentation()

QCString DefinitionImpl::inbodyDocumentation ( ) const

Definition at line 1688 of file definition.cpp.

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

References p.

◆ inbodyFile()

QCString DefinitionImpl::inbodyFile ( ) const

Definition at line 1698 of file definition.cpp.

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

References p.

Referenced by _setInbodyDocumentation(), and setInbodyDocumentation().

◆ inbodyLine()

int DefinitionImpl::inbodyLine ( ) const

Definition at line 1693 of file definition.cpp.

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

References p.

Referenced by _setInbodyDocumentation(), and setInbodyDocumentation().

◆ isAnonymous()

bool DefinitionImpl::isAnonymous ( ) const

Definition at line 1924 of file definition.cpp.

1925{
1926 return p->isAnonymous;
1927}

References p.

◆ isArtificial()

bool DefinitionImpl::isArtificial ( ) const

Definition at line 1731 of file definition.cpp.

1732{
1733 return p->isArtificial;
1734}

References p.

◆ isExported()

bool DefinitionImpl::isExported ( ) const

Definition at line 1736 of file definition.cpp.

1737{
1738 return p->isExported;
1739}

References p.

◆ isHidden()

bool DefinitionImpl::isHidden ( ) const

Definition at line 1716 of file definition.cpp.

1717{
1718 return p->hidden;
1719}

References p.

◆ isLinkableViaGroup()

bool DefinitionImpl::isLinkableViaGroup ( ) const

Definition at line 1776 of file definition.cpp.

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

References partOfGroups().

◆ isReference()

bool DefinitionImpl::isReference ( ) const

Definition at line 1746 of file definition.cpp.

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

References p.

◆ isVisible()

bool DefinitionImpl::isVisible ( ) const

Definition at line 1726 of file definition.cpp.

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

References p.

◆ isVisibleInProject()

bool DefinitionImpl::isVisibleInProject ( ) const

Definition at line 1721 of file definition.cpp.

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

References p.

◆ localName()

const QCString & DefinitionImpl::localName ( ) const

Definition at line 1330 of file definition.cpp.

1331{
1332 return p->localName;
1333}

References p.

Referenced by navigationPathAsString().

◆ makePartOfGroup()

void DefinitionImpl::makePartOfGroup ( GroupDef * gd)

Definition at line 1335 of file definition.cpp.

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

References p.

◆ mergeReferencedBy()

void DefinitionImpl::mergeReferencedBy ( const Definition * other)

Definition at line 1828 of file definition.cpp.

1829{
1830 const DefinitionImpl *defImpl = other->toDefinitionImpl_();
1831 if (defImpl)
1832 {
1833 for (const auto &kv : defImpl->p->sourceRefByDict)
1834 {
1835 auto it = p->sourceRefByDict.find(kv.first);
1836 if (it != p->sourceRefByDict.end())
1837 {
1838 p->sourceRefByDict.emplace(kv.first,kv.second);
1839 }
1840 }
1841 }
1842}
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 1812 of file definition.cpp.

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

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

◆ mergeRefItems()

void DefinitionImpl::mergeRefItems ( Definition * d)

Definition at line 1350 of file definition.cpp.

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

1437{
1438 QCString result;
1439 Definition *outerScope = getOuterScope();
1440 QCString locName = localName();
1441 if (outerScope && outerScope!=Doxygen::globalScope)
1442 {
1443 result+=outerScope->navigationPathAsString();
1444 }
1445 else if (p->def->definitionType()==Definition::TypeFile &&
1446 toFileDef(p->def)->getDirDef())
1447 {
1448 result+=(toFileDef(p->def))->getDirDef()->navigationPathAsString();
1449 }
1450 result+="<li class=\"navelem\">";
1451 if (p->def->isLinkableInProject())
1452 {
1453 QCString fn = p->def->getOutputFileBase();
1455 if (p->def->definitionType()==Definition::TypeGroup &&
1456 !toGroupDef(p->def)->groupTitle().isEmpty())
1457 {
1458 QCString title = parseCommentAsHtml(p->def,nullptr,toGroupDef(p->def)->groupTitle(),
1459 p->def->getDefFileName(),p->def->getDefLine());
1460 result+="<a href=\"$relpath^"+fn+"\">"+title+"</a>";
1461 }
1462 else if (p->def->definitionType()==Definition::TypePage &&
1463 toPageDef(p->def)->hasTitle())
1464 {
1465 QCString title = parseCommentAsHtml(p->def,nullptr,toPageDef(p->def)->title(),
1466 p->def->getDefFileName(),p->def->getDefLine());
1467 result+="<a href=\"$relpath^"+fn+"\">"+title+"</a>";
1468 }
1469 else if (p->def->definitionType()==Definition::TypeClass)
1470 {
1471 QCString name = toClassDef(p->def)->className();
1472 if (name.endsWith("-p"))
1473 {
1474 name = name.left(name.length()-2);
1475 }
1476 result+="<a href=\"$relpath^"+fn;
1477 if (!p->def->anchor().isEmpty()) result+="#"+p->def->anchor();
1478 result+="\">"+convertToHtml(name)+"</a>";
1479 }
1480 else
1481 {
1482 result+="<a href=\"$relpath^"+fn+"\">"+
1483 convertToHtml(locName)+"</a>";
1484 }
1485 }
1486 else
1487 {
1488 result+="<b>"+convertToHtml(locName)+"</b>";
1489 }
1490 result+="</li>";
1491 return result;
1492}
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:1966
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:5407
QCString convertToHtml(const QCString &s, bool keepEntities)
Definition util.cpp:3946
void addHtmlExtensionIfMissing(QCString &fName)
Definition util.cpp:4904

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

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

References DefinitionImpl(), and p.

◆ operator=() [2/2]

◆ partOfGroups()

const GroupList & DefinitionImpl::partOfGroups ( ) const

Definition at line 1771 of file definition.cpp.

1772{
1773 return p->partOfGroups;
1774}

References p.

Referenced by isLinkableViaGroup().

◆ pathFragment()

QCString DefinitionImpl::pathFragment ( ) const

Definition at line 1398 of file definition.cpp.

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

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

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

1394{
1395 return p->requirementRefs;
1396}

References p.

◆ setArtificial()

void DefinitionImpl::setArtificial ( bool b)

Definition at line 1860 of file definition.cpp.

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

References p.

◆ setBodyDef()

void DefinitionImpl::setBodyDef ( const FileDef * fd)

Definition at line 1019 of file definition.cpp.

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

References p.

◆ setBodySegment()

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

Definition at line 1007 of file definition.cpp.

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

500{
501 if (b.isEmpty()) return;
503}

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

◆ setDefFile()

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

Definition at line 148 of file definition.cpp.

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

References p.

◆ setDocumentation()

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

Definition at line 436 of file definition.cpp.

437{
438 if (d.isEmpty()) return;
440}

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

◆ setExported()

void DefinitionImpl::setExported ( bool b)

Definition at line 1865 of file definition.cpp.

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

References p.

◆ setHidden()

void DefinitionImpl::setHidden ( bool b)

Definition at line 1855 of file definition.cpp.

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

References p.

◆ setId()

void DefinitionImpl::setId ( const QCString & name)

Definition at line 291 of file definition.cpp.

292{
293 if (id.isEmpty()) return;
294 p->id = id;
296 {
297 //printf("DefinitionImpl::setId '%s'->'%s'\n",id,qPrint(p->name));
298 Doxygen::clangUsrMap->emplace(id.str(),p->def);
299 }
300}
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 527 of file definition.cpp.

528{
529 if (d.isEmpty()) return;
531}
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 1875 of file definition.cpp.

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

References p.

◆ setLocalName()

void DefinitionImpl::setLocalName ( const QCString & name)

Definition at line 1870 of file definition.cpp.

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

References name(), and p.

◆ setName()

void DefinitionImpl::setName ( const QCString & name)

Definition at line 282 of file definition.cpp.

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

References name(), and p.

Referenced by DefinitionImpl().

◆ setOuterScope()

void DefinitionImpl::setOuterScope ( Definition * d)

Definition at line 1309 of file definition.cpp.

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

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

References p.

◆ setRefItems()

void DefinitionImpl::setRefItems ( const RefItemVector & sli)

Definition at line 1340 of file definition.cpp.

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

References p.

◆ setRequirementReferences()

void DefinitionImpl::setRequirementReferences ( const RequirementRefs & rqli)

Definition at line 1345 of file definition.cpp.

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

References p.

◆ symbolName()

QCString DefinitionImpl::symbolName ( ) const

Definition at line 1580 of file definition.cpp.

1581{
1582 return p->symbolName;
1583}

References p.

Referenced by addToMap().

◆ writeDocAnchorsToTagFile()

void DefinitionImpl::writeDocAnchorsToTagFile ( TextStream & tagFile) const

Definition at line 343 of file definition.cpp.

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

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

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

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

1496{
1497 ol.pushGeneratorState();
1499
1500 QCString navPath;
1501 navPath += "<div id=\"nav-path\" class=\"navpath\">\n"
1502 " <ul>\n";
1503 navPath += navigationPathAsString();
1504 navPath += " </ul>\n"
1505 "</div>\n";
1506 ol.writeNavigationPath(navPath);
1507
1508 ol.popGeneratorState();
1509}
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 1947 of file definition.cpp.

1948{
1949}

◆ writeQuickMemberLinks()

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

Definition at line 1939 of file definition.cpp.

1940{
1941}

◆ writeRequirementRefs()

void DefinitionImpl::writeRequirementRefs ( OutputList & ol) const

Definition at line 1179 of file definition.cpp.

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

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

1170{
1171 _writeSourceRefList(ol,scopeName,theTranslator->trReferencedBy(),p->sourceRefByDict,FALSE);
1172}
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 1174 of file definition.cpp.

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

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

◆ writeSummaryLinks()

void DefinitionImpl::writeSummaryLinks ( OutputList & ) const

Definition at line 1943 of file definition.cpp.

1944{
1945}

◆ writeToc()

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

Definition at line 1511 of file definition.cpp.

1512{
1513 // first check if we have anything to show or if the outline is already shown on the outline panel
1514 if (p->sectionRefs.empty() || (Config_getBool(GENERATE_TREEVIEW) && Config_getBool(PAGE_OUTLINE_PANEL))) return;
1515 // generate the embedded toc
1516 //ol.writeLocalToc(p->sectionRefs,localToc);
1517
1518 auto generateTocEntries = [this,&ol]()
1519 {
1520 for (const SectionInfo *si : p->sectionRefs)
1521 {
1522 if (si->type().isSection())
1523 {
1524 ol.startTocEntry(si);
1525 const MemberDef *md = p->def->definitionType()==Definition::TypeMember ? toMemberDef(p->def) : nullptr;
1526 const Definition *scope = p->def->definitionType()==Definition::TypeMember ? p->def->getOuterScope() : p->def;
1527 QCString docTitle = si->title();
1528 if (docTitle.isEmpty()) docTitle = si->label();
1529 ol.generateDoc(docFile(),
1531 scope,
1532 md,
1533 docTitle,
1534 DocOptions()
1535 .setIndexWords(true)
1536 .setSingleLine(true)
1537 .setSectionLevel(si->type().level())
1538 );
1539 ol.endTocEntry(si);
1540 }
1541 }
1542 };
1543
1544 if (localToc.isHtmlEnabled())
1545 {
1546 ol.pushGeneratorState();
1548 ol.startLocalToc(localToc.htmlLevel());
1549 generateTocEntries();
1550 ol.endLocalToc();
1551 ol.popGeneratorState();
1552 }
1553 if (localToc.isDocbookEnabled())
1554 {
1555 ol.pushGeneratorState();
1557 ol.startLocalToc(localToc.docbookLevel());
1558 generateTocEntries();
1559 ol.endLocalToc();
1560 ol.popGeneratorState();
1561 }
1562 if (localToc.isLatexEnabled())
1563 {
1564 ol.pushGeneratorState();
1566 ol.startLocalToc(localToc.latexLevel());
1567 // no gneerateTocEntries() needed for LaTeX
1568 ol.endLocalToc();
1569 ol.popGeneratorState();
1570 }
1571}
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 1388 of file definition.cpp.

1389{
1390 return p->xrefListItems;
1391}

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


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