Skip to main content

The DefinitionImpl Class Reference

Declaration

class DefinitionImpl { ... }

Included Headers

Public Constructors Index

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 (const DefinitionImpl &d)
DefinitionImpl (DefinitionImpl &&d)=delete

Public Destructor Index

~DefinitionImpl ()

Public Operators Index

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

Public Member Functions Index

const QCString &name () const
boolisAnonymous () const
const QCString &localName () const
QCStringqualifiedName () const
QCStringsymbolName () const
QCStringgetSourceFileBase () const
QCStringgetSourceAnchor () const
QCStringdocumentation () const
intdocLine () const
QCStringdocFile () const
QCStringbriefDescription (bool abbreviate=FALSE) const
QCStringbriefDescriptionAsTooltip () const
intbriefLine () const
QCStringinbodyDocumentation () const
QCStringinbodyFile () const
intinbodyLine () const
QCStringbriefFile () const
QCStringgetDefFileName () const
QCStringgetDefFileExtension () const
intgetDefLine () const
intgetDefColumn () const
boolhasDocumentation () const
boolhasUserDocumentation () const
boolisVisibleInProject () const
boolisVisible () const
boolisHidden () const
boolisArtificial () const
boolisExported () const
QCStringgetReference () const
boolisReference () const
QCStringexternalReference (const QCString &relPath) const
intgetStartDefLine () const
intgetStartBodyLine () const
intgetEndBodyLine () const
const FileDef *getBodyDef () const
SrcLangExtgetLanguage () const
const GroupList &partOfGroups () const
boolisLinkableViaGroup () const
const RefItemVector &xrefListItems () const
const Definition *findInnerCompound (const QCString &name) const
Definition *getOuterScope () const
const MemberVector &getReferencesMembers () const
const MemberVector &getReferencedByMembers () const
boolhasSections () const
boolhasSources () const
boolhasBriefDescription () const
QCStringid () const
const SectionRefs &getSectionRefs () const
voidsetName (const QCString &name)
voidsetId (const QCString &name)
voidsetDefFile (const QCString &df, int defLine, int defColumn)
voidsetDocumentation (const QCString &d, const QCString &docFile, int docLine, bool stripWhiteSpace=TRUE)
voidsetBriefDescription (const QCString &b, const QCString &briefFile, int briefLine)
voidsetInbodyDocumentation (const QCString &d, const QCString &docFile, int docLine)
voidsetReference (const QCString &r)
voidaddSectionsToDefinition (const std::vector< const SectionInfo * > &anchorList)
voidsetBodySegment (int defLine, int bls, int ble)
voidsetBodyDef (const FileDef *fd)
voidaddSourceReferencedBy (MemberDef *d, const QCString &sourceRefName)
voidaddSourceReferences (MemberDef *d, const QCString &sourceRefName)
voidsetRefItems (const RefItemVector &sli)
voidmergeRefItems (Definition *d)
voidmergeReferences (const Definition *other)
voidmergeReferencedBy (const Definition *other)
voidaddInnerCompound (Definition *d)
voidsetOuterScope (Definition *d)
voidsetHidden (bool b)
voidsetArtificial (bool b)
voidsetExported (bool b)
voidsetLanguage (SrcLangExt lang)
voidwriteSourceDef (OutputList &ol) const
voidwriteInlineCode (OutputList &ol, const QCString &scopeName) const
boolhasSourceRefs () const
boolhasSourceReffedBy () const
voidwriteSourceRefs (OutputList &ol, const QCString &scopeName) const
voidwriteSourceReffedBy (OutputList &ol, const QCString &scopeName) const
voidmakePartOfGroup (GroupDef *gd)
voidwriteNavigationPath (OutputList &ol) const
QCStringnavigationPathAsString () const
voidwriteQuickMemberLinks (OutputList &, const MemberDef *) const
voidwriteSummaryLinks (OutputList &) const
voidwritePageNavigation (OutputList &ol) const
QCStringpathFragment () const
voidwriteDocAnchorsToTagFile (TextStream &) const
voidsetLocalName (const QCString &name)
voidwriteToc (OutputList &ol, const LocalToc &lt) const
voidcomputeTooltip ()
void_setSymbolName (const QCString &name)
QCString_symbolName () const

Private Member Functions Index

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 Member Attributes Index

std::unique_ptr< Private >p

Definition at line 27 of file definitionimpl.h.

Public Constructors

DefinitionImpl()

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)

Declaration at line 30 of file definitionimpl.h, definition at line 232 of file definition.cpp.

233 const QCString &df,int dl,int dc,
234 const QCString &name,const char *b,
235 const char *d,bool isSymbol)
236 : p(std::make_unique<Private>())
237{
239 p->def = def;
240 p->defLine = dl;
241 p->defColumn = dc;
242 p->init(df,name);
243 p->isSymbol = isSymbol;
244 if (isSymbol) addToMap(name,def);
245 _setBriefDescription(b,df,dl);
248 {
249 p->hidden = TRUE;
250 }
251}

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

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

DefinitionImpl()

DefinitionImpl::DefinitionImpl (const DefinitionImpl & d)

Declaration at line 36 of file definitionimpl.h, definition at line 253 of file definition.cpp.

254 : p(std::make_unique<Private>(*d.p))
255{
256 if (p->isSymbol) addToMap(p->name,p->def);
257}

References addToMap, DefinitionImpl and p.

DefinitionImpl()

DefinitionImpl::DefinitionImpl (DefinitionImpl && d)
delete

Definition at line 38 of file definitionimpl.h.

Reference DefinitionImpl.

Public Destructor

~DefinitionImpl()

DefinitionImpl::~DefinitionImpl ()

Declaration at line 35 of file definitionimpl.h, definition at line 268 of file definition.cpp.

269{
270 if (p->isSymbol)
271 {
272 removeFromMap(p->symbolName,p->def);
273 }
274}

References p and removeFromMap.

Public Operators

operator=()

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

Declaration at line 37 of file definitionimpl.h, definition at line 259 of file definition.cpp.

260{
261 if (this!=&other)
262 {
263 p = std::make_unique<Private>(*other.p);
264 }
265 return *this;
266}

References DefinitionImpl and p.

operator=()

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

Definition at line 39 of file definitionimpl.h.

References abbreviate, briefFile, briefLine, DefinitionImpl, docFile, docLine, FALSE, name, stripWhiteSpace and TRUE.

Public Member Functions

_setSymbolName()

void DefinitionImpl::_setSymbolName (const QCString & name)

Declaration at line 128 of file definitionimpl.h, definition at line 1809 of file definition.cpp.

1810{
1811 p->symbolName=name;
1812}

References name and p.

_symbolName()

QCString DefinitionImpl::_symbolName ()

Declaration at line 129 of file definitionimpl.h, definition at line 1814 of file definition.cpp.

1815{
1816 return p->symbolName;
1817}

Reference p.

addInnerCompound()

void DefinitionImpl::addInnerCompound (Definition * d)

Declaration at line 105 of file definitionimpl.h, definition at line 1212 of file definition.cpp.

1213{
1214 err("DefinitionImpl::addInnerCompound() called\n");
1215}

Reference err.

addSectionsToDefinition()

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

Declaration at line 96 of file definitionimpl.h, definition at line 301 of file definition.cpp.

301void DefinitionImpl::addSectionsToDefinition(const std::vector<const SectionInfo*> &anchorList)
302{
303 //printf("%s: addSectionsToDefinition(%d)\n",qPrint(name()),anchorList->count());
304 for (const SectionInfo *si : anchorList)
305 {
306 //printf("Add section '%s' to definition '%s'\n",
307 // qPrint(si->label()),qPrint(name()));
309 SectionInfo *gsi=sm.find(si->label());
310 //printf("===== label=%s gsi=%p\n",qPrint(si->label),gsi);
311 if (gsi==nullptr)
312 {
313 gsi = sm.add(*si);
314 }
315 if (p->sectionRefs.find(gsi->label())==nullptr)
316 {
317 p->sectionRefs.add(gsi);
318 gsi->setDefinition(p->def);
319 }
320 }
321}

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)

Declaration at line 99 of file definitionimpl.h, definition at line 1191 of file definition.cpp.

1192{
1193 if (md)
1194 {
1195 p->sourceRefByDict.emplace(sourceRefName.str(),md);
1196 }
1197}

References p and QCString::str.

addSourceReferences()

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

Declaration at line 100 of file definitionimpl.h, definition at line 1199 of file definition.cpp.

1200{
1201 if (md)
1202 {
1203 p->sourceRefsDict.emplace(sourceRefName.str(),md);
1204 }
1205}

References p and QCString::str.

briefDescription()

QCString DefinitionImpl::briefDescription (bool abbreviate=FALSE)

Declaration at line 51 of file definitionimpl.h, definition at line 1580 of file definition.cpp.

1581{
1582 //printf("%s::briefDescription(%d)='%s'\n",qPrint(name()),abbr,p->brief?qPrint(p->brief->doc):"<none>");
1583 return p->brief ?
1584 (abbr ? abbreviate(p->brief->doc,p->def->displayName()) : p->brief->doc) :
1585 QCString("");
1586}

References abbreviate and p.

Referenced by hasBriefDescription.

briefDescriptionAsTooltip()

QCString DefinitionImpl::briefDescriptionAsTooltip ()

Declaration at line 52 of file definitionimpl.h, definition at line 1599 of file definition.cpp.

1600{
1601 return p->brief ? p->brief->tooltip : QCString();
1602}

Reference p.

briefFile()

QCString DefinitionImpl::briefFile ()

Declaration at line 57 of file definitionimpl.h, definition at line 1609 of file definition.cpp.

1610{
1611 return p->brief && !p->brief->file.isEmpty() ? p->brief->file : QCString("<"+p->name+">");
1612}

Reference p.

Referenced by _setBriefDescription, operator= and setBriefDescription.

briefLine()

int DefinitionImpl::briefLine ()

Declaration at line 53 of file definitionimpl.h, definition at line 1604 of file definition.cpp.

1605{
1606 return p->brief ? p->brief->line : 1;
1607}

Reference p.

Referenced by _setBriefDescription, operator= and setBriefDescription.

computeTooltip()

void DefinitionImpl::computeTooltip ()

Declaration at line 127 of file definitionimpl.h, definition at line 1588 of file definition.cpp.

1589{
1590 if (p->brief && p->brief->tooltip.isEmpty() && !p->brief->doc.isEmpty())
1591 {
1592 const MemberDef *md = p->def->definitionType()==Definition::TypeMember ? toMemberDef(p->def) : nullptr;
1593 const Definition *scope = p->def->definitionType()==Definition::TypeMember ? p->def->getOuterScope() : p->def;
1594 p->brief->tooltip = parseCommentAsText(scope,md,
1595 p->brief->doc, p->brief->file, p->brief->line);
1596 }
1597}

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

docFile()

QCString DefinitionImpl::docFile ()

Declaration at line 50 of file definitionimpl.h, definition at line 1525 of file definition.cpp.

1526{
1527 if (p->details && !p->details->file.isEmpty()) return p->details->file;
1528 else if (p->brief && !p->brief->file.isEmpty()) return p->brief->file;
1529 else return "<" + p->name + ">";
1530}

Reference p.

Referenced by _setDocumentation, operator=, setDocumentation and writeToc.

docLine()

int DefinitionImpl::docLine ()

Declaration at line 49 of file definitionimpl.h, definition at line 1520 of file definition.cpp.

1521{
1522 return p->details ? p->details->line : p->brief ? p->brief->line : 1;
1523}

Reference p.

Referenced by _setDocumentation, operator=, setDocumentation and toDefinition.

documentation()

QCString DefinitionImpl::documentation ()

Declaration at line 48 of file definitionimpl.h, definition at line 1515 of file definition.cpp.

1516{
1517 return p->details ? p->details->doc : QCString("");
1518}

Reference p.

externalReference()

QCString DefinitionImpl::externalReference (const QCString & relPath)

Declaration at line 71 of file definitionimpl.h, definition at line 1825 of file definition.cpp.

1826{
1827 QCString ref = getReference();
1828 if (!ref.isEmpty())
1829 {
1830 auto it = Doxygen::tagDestinationMap.find(ref.str());
1832 {
1833 QCString result(it->second);
1834 size_t l = result.length();
1835 if (!relPath.isEmpty() && l>0 && result.at(0)=='.')
1836 { // relative path -> prepend relPath.
1837 result.prepend(relPath);
1838 l+=relPath.length();
1839 }
1840 if (l>0 && result.at(l-1)!='/') result+='/';
1841 return result;
1842 }
1843 }
1844 return relPath;
1845}

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

findInnerCompound()

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

Declaration at line 80 of file definitionimpl.h, definition at line 1207 of file definition.cpp.

1208{
1209 return nullptr;
1210}

getBodyDef()

const FileDef * DefinitionImpl::getBodyDef ()

Declaration at line 75 of file definitionimpl.h, definition at line 1694 of file definition.cpp.

1695{
1696 return p->body ? p->body->fileDef : nullptr;
1697}

Reference p.

getDefColumn()

int DefinitionImpl::getDefColumn ()

Declaration at line 61 of file definitionimpl.h, definition at line 1862 of file definition.cpp.

1863{
1864 return p->defColumn;
1865}

Reference p.

getDefFileExtension()

QCString DefinitionImpl::getDefFileExtension ()

Declaration at line 59 of file definitionimpl.h, definition at line 1639 of file definition.cpp.

1640{
1641 return p->defFileExt;
1642}

Reference p.

getDefFileName()

QCString DefinitionImpl::getDefFileName ()

Declaration at line 58 of file definitionimpl.h, definition at line 1634 of file definition.cpp.

1635{
1636 return p->defFileName;
1637}

Reference p.

getDefLine()

int DefinitionImpl::getDefLine ()

Declaration at line 60 of file definitionimpl.h, definition at line 1857 of file definition.cpp.

1858{
1859 return p->defLine;
1860}

Reference p.

getEndBodyLine()

int DefinitionImpl::getEndBodyLine ()

Declaration at line 74 of file definitionimpl.h, definition at line 1689 of file definition.cpp.

1690{
1691 return p->body ? p->body->endLine : -1;
1692}

Reference p.

getLanguage()

SrcLangExt DefinitionImpl::getLanguage ()

Declaration at line 76 of file definitionimpl.h, definition at line 1778 of file definition.cpp.

1779{
1780 return p->lang;
1781}

Reference p.

Referenced by qualifiedName.

getOuterScope()

Definition * DefinitionImpl::getOuterScope ()

Declaration at line 81 of file definitionimpl.h, definition at line 1713 of file definition.cpp.

1714{
1715 return p->outerScope;
1716}

Reference p.

Referenced by navigationPathAsString.

getReference()

QCString DefinitionImpl::getReference ()

Declaration at line 69 of file definitionimpl.h, definition at line 1669 of file definition.cpp.

1670{
1671 return p->ref;
1672}

Reference p.

Referenced by externalReference.

getReferencedByMembers()

const MemberVector & DefinitionImpl::getReferencedByMembers ()

Declaration at line 83 of file definitionimpl.h, definition at line 1730 of file definition.cpp.

1731{
1732 std::lock_guard<std::mutex> lock(g_memberReferenceMutex);
1733 if (p->referencedByMembers.empty() && !p->sourceRefByDict.empty())
1734 {
1735 p->referencedByMembers = refMapToVector(p->sourceRefByDict);
1736 }
1737 return p->referencedByMembers;
1738}

References g_memberReferenceMutex, p and refMapToVector.

getReferencesMembers()

const MemberVector & DefinitionImpl::getReferencesMembers ()

Declaration at line 82 of file definitionimpl.h, definition at line 1720 of file definition.cpp.

1721{
1722 std::lock_guard<std::mutex> lock(g_memberReferenceMutex);
1723 if (p->referencesMembers.empty() && !p->sourceRefsDict.empty())
1724 {
1725 p->referencesMembers = refMapToVector(p->sourceRefsDict);
1726 }
1727 return p->referencesMembers;
1728}

References g_memberReferenceMutex, p and refMapToVector.

getSectionRefs()

const SectionRefs & DefinitionImpl::getSectionRefs ()

Declaration at line 88 of file definitionimpl.h, definition at line 1503 of file definition.cpp.

1504{
1505 return p->sectionRefs;
1506}

Reference p.

getSourceAnchor()

QCString DefinitionImpl::getSourceAnchor ()

Declaration at line 47 of file definitionimpl.h, definition at line 915 of file definition.cpp.

916{
917 const int maxAnchorStrLen = 20;
918 char anchorStr[maxAnchorStrLen];
919 anchorStr[0]='\0';
920 if (p->body && p->body->startLine!=-1)
921 {
923 {
924 qsnprintf(anchorStr,maxAnchorStrLen,"L%d",p->body->defLine);
925 }
926 else
927 {
928 qsnprintf(anchorStr,maxAnchorStrLen,"l%05d",p->body->defLine);
929 }
930 }
931 return anchorStr;
932}

References p, qsnprintf and Htags::useHtags.

Referenced by writeSourceDef.

getSourceFileBase()

QCString DefinitionImpl::getSourceFileBase ()

Declaration at line 46 of file definitionimpl.h, definition at line 902 of file definition.cpp.

903{
904 ASSERT(p->def->definitionType()!=Definition::TypeFile); // file overloads this method
905 QCString fn;
906 bool sourceBrowser = Config_getBool(SOURCE_BROWSER);
907 if (sourceBrowser &&
908 p->body && p->body->startLine!=-1 && p->body->fileDef)
909 {
910 fn = p->body->fileDef->getSourceFileBase();
911 }
912 return fn;
913}

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

Referenced by writeSourceDef.

getStartBodyLine()

int DefinitionImpl::getStartBodyLine ()

Declaration at line 73 of file definitionimpl.h, definition at line 1684 of file definition.cpp.

1685{
1686 return p->body ? p->body->startLine : -1;
1687}

Reference p.

Referenced by writeToc.

getStartDefLine()

int DefinitionImpl::getStartDefLine ()

Declaration at line 72 of file definitionimpl.h, definition at line 1679 of file definition.cpp.

1680{
1681 return p->body ? p->body->defLine : -1;
1682}

Reference p.

hasBriefDescription()

bool DefinitionImpl::hasBriefDescription ()

Declaration at line 86 of file definitionimpl.h, definition at line 1819 of file definition.cpp.

1820{
1821 bool briefMemberDesc = Config_getBool(BRIEF_MEMBER_DESC);
1822 return !briefDescription().isEmpty() && briefMemberDesc;
1823}

References briefDescription, Config_getBool and QCString::isEmpty.

hasDocumentation()

bool DefinitionImpl::hasDocumentation ()

Declaration at line 62 of file definitionimpl.h, definition at line 1167 of file definition.cpp.

1168{
1169 bool extractAll = Config_getBool(EXTRACT_ALL);
1170 //bool sourceBrowser = Config_getBool(SOURCE_BROWSER);
1171 bool hasDocs =
1172 (p->details && !p->details->doc.isEmpty()) || // has detailed docs
1173 (p->brief && !p->brief->doc.isEmpty()) || // has brief description
1174 (p->inbodyDocs && !p->inbodyDocs->doc.isEmpty()) || // has inbody docs
1175 extractAll //|| // extract everything
1176 // (sourceBrowser && p->body &&
1177 // p->body->startLine!=-1 && p->body->fileDef)
1178 ; // link to definition
1179 return hasDocs;
1180}

References Config_getBool and p.

hasSections()

bool DefinitionImpl::hasSections ()

Declaration at line 84 of file definitionimpl.h, definition at line 323 of file definition.cpp.

324{
325 //printf("DefinitionImpl::hasSections(%s) #sections=%zu\n",qPrint(name()), p->sectionRefs.size());
326 if (p->sectionRefs.empty()) return FALSE;
327 for (const SectionInfo *si : p->sectionRefs)
328 {
329 if (si->type().isSection())
330 {
331 return TRUE;
332 }
333 }
334 return FALSE;
335}

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

hasSourceReffedBy()

bool DefinitionImpl::hasSourceReffedBy ()

Declaration at line 114 of file definitionimpl.h, definition at line 1157 of file definition.cpp.

1158{
1159 return !p->sourceRefByDict.empty();
1160}

Reference p.

hasSourceRefs()

bool DefinitionImpl::hasSourceRefs ()

Declaration at line 113 of file definitionimpl.h, definition at line 1162 of file definition.cpp.

1163{
1164 return !p->sourceRefsDict.empty();
1165}

Reference p.

hasSources()

bool DefinitionImpl::hasSources ()

Declaration at line 85 of file definitionimpl.h, definition at line 1005 of file definition.cpp.

1006{
1007 return p->body && p->body->startLine!=-1 &&
1008 p->body->endLine>=p->body->startLine &&
1009 p->body->fileDef;
1010}

Reference p.

Referenced by writeInlineCode.

hasUserDocumentation()

bool DefinitionImpl::hasUserDocumentation ()

Declaration at line 63 of file definitionimpl.h, definition at line 1182 of file definition.cpp.

1183{
1184 bool hasDocs =
1185 (p->details && !p->details->doc.isEmpty()) ||
1186 (p->brief && !p->brief->doc.isEmpty()) ||
1187 (p->inbodyDocs && !p->inbodyDocs->doc.isEmpty());
1188 return hasDocs;
1189}

Reference p.

id()

QCString DefinitionImpl::id ()

Declaration at line 87 of file definitionimpl.h, definition at line 296 of file definition.cpp.

297{
298 return p->id;
299}

Reference p.

Referenced by setId.

inbodyDocumentation()

QCString DefinitionImpl::inbodyDocumentation ()

Declaration at line 54 of file definitionimpl.h, definition at line 1616 of file definition.cpp.

1617{
1618 return p->inbodyDocs ? p->inbodyDocs->doc : QCString("");
1619}

Reference p.

inbodyFile()

QCString DefinitionImpl::inbodyFile ()

Declaration at line 55 of file definitionimpl.h, definition at line 1626 of file definition.cpp.

1627{
1628 return p->inbodyDocs && !p->inbodyDocs->file.isEmpty() ? p->inbodyDocs->file : QCString("<"+p->name+">");
1629}

Reference p.

Referenced by _setInbodyDocumentation and setInbodyDocumentation.

inbodyLine()

int DefinitionImpl::inbodyLine ()

Declaration at line 56 of file definitionimpl.h, definition at line 1621 of file definition.cpp.

1622{
1623 return p->inbodyDocs ? p->inbodyDocs->line : 1;
1624}

Reference p.

Referenced by _setInbodyDocumentation and setInbodyDocumentation.

isAnonymous()

bool DefinitionImpl::isAnonymous ()

Declaration at line 42 of file definitionimpl.h, definition at line 1852 of file definition.cpp.

1853{
1854 return p->isAnonymous;
1855}

Reference p.

isArtificial()

bool DefinitionImpl::isArtificial ()

Declaration at line 67 of file definitionimpl.h, definition at line 1659 of file definition.cpp.

1660{
1661 return p->isArtificial;
1662}

Reference p.

isExported()

bool DefinitionImpl::isExported ()

Declaration at line 68 of file definitionimpl.h, definition at line 1664 of file definition.cpp.

1665{
1666 return p->isExported;
1667}

Reference p.

isHidden()

bool DefinitionImpl::isHidden ()

Declaration at line 66 of file definitionimpl.h, definition at line 1644 of file definition.cpp.

1645{
1646 return p->hidden;
1647}

Reference p.

isLinkableViaGroup()

bool DefinitionImpl::isLinkableViaGroup ()

Declaration at line 78 of file definitionimpl.h, definition at line 1704 of file definition.cpp.

1705{
1706 for (const auto &gd : partOfGroups())
1707 {
1708 if (gd->isLinkable()) return true;
1709 }
1710 return false;
1711}

Reference partOfGroups.

isReference()

bool DefinitionImpl::isReference ()

Declaration at line 70 of file definitionimpl.h, definition at line 1674 of file definition.cpp.

1675{
1676 return !p->ref.isEmpty();
1677}

Reference p.

isVisible()

bool DefinitionImpl::isVisible ()

Declaration at line 65 of file definitionimpl.h, definition at line 1654 of file definition.cpp.

1655{
1656 return p->def->isLinkable() && !p->hidden;
1657}

Reference p.

isVisibleInProject()

bool DefinitionImpl::isVisibleInProject ()

Declaration at line 64 of file definitionimpl.h, definition at line 1649 of file definition.cpp.

1650{
1651 return p->def->isLinkableInProject() && !p->hidden;
1652}

Reference p.

localName()

const QCString & DefinitionImpl::localName ()

Declaration at line 43 of file definitionimpl.h, definition at line 1276 of file definition.cpp.

1277{
1278 return p->localName;
1279}

Reference p.

Referenced by navigationPathAsString.

makePartOfGroup()

void DefinitionImpl::makePartOfGroup (GroupDef * gd)

Declaration at line 117 of file definitionimpl.h, definition at line 1281 of file definition.cpp.

1282{
1283 p->partOfGroups.push_back(gd);
1284}

Reference p.

mergeReferencedBy()

void DefinitionImpl::mergeReferencedBy (const Definition * other)

Declaration at line 104 of file definitionimpl.h, definition at line 1756 of file definition.cpp.

1757{
1758 const DefinitionImpl *defImpl = other->toDefinitionImpl_();
1759 if (defImpl)
1760 {
1761 for (const auto &kv : defImpl->p->sourceRefByDict)
1762 {
1763 auto it = p->sourceRefByDict.find(kv.first);
1764 if (it != p->sourceRefByDict.end())
1765 {
1766 p->sourceRefByDict.emplace(kv.first,kv.second);
1767 }
1768 }
1769 }
1770}

References DefinitionImpl, p and Definition::toDefinitionImpl_.

mergeReferences()

void DefinitionImpl::mergeReferences (const Definition * other)

Declaration at line 103 of file definitionimpl.h, definition at line 1740 of file definition.cpp.

1741{
1742 const DefinitionImpl *defImpl = other->toDefinitionImpl_();
1743 if (defImpl)
1744 {
1745 for (const auto &kv : defImpl->p->sourceRefsDict)
1746 {
1747 auto it = p->sourceRefsDict.find(kv.first);
1748 if (it != p->sourceRefsDict.end())
1749 {
1750 p->sourceRefsDict.insert(kv);
1751 }
1752 }
1753 }
1754}

References DefinitionImpl, p and Definition::toDefinitionImpl_.

mergeRefItems()

void DefinitionImpl::mergeRefItems (Definition * d)

Declaration at line 102 of file definitionimpl.h, definition at line 1291 of file definition.cpp.

1292{
1293 auto otherXrefList = d->xrefListItems();
1294
1295 // append vectors
1296 p->xrefListItems.reserve(p->xrefListItems.size()+otherXrefList.size());
1297 p->xrefListItems.insert (p->xrefListItems.end(),
1298 otherXrefList.begin(),otherXrefList.end());
1299
1300 // sort results on itemId
1301 std::stable_sort(p->xrefListItems.begin(),p->xrefListItems.end(),
1302 [](RefItem *left,RefItem *right)
1303 { return left->id() <right->id() ||
1304 (left->id()==right->id() &&
1305 left->list()->listName() < right->list()->listName());
1306 });
1307
1308 // filter out duplicates
1309 auto last = std::unique(p->xrefListItems.begin(),p->xrefListItems.end(),
1310 [](const RefItem *left,const RefItem *right)
1311 { return left->id()==right->id() &&
1312 left->list()->listName()==right->list()->listName();
1313 });
1314 p->xrefListItems.erase(last, p->xrefListItems.end());
1315}

References p and Definition::xrefListItems.

name()

const QCString & DefinitionImpl::name ()

Declaration at line 41 of file definitionimpl.h, definition at line 1847 of file definition.cpp.

1848{
1849 return p->name;
1850}

Reference p.

Referenced by _setSymbolName, _writeSourceRefList, addToMap, DefinitionImpl, matchExcludedSymbols, navigationPathAsString, operator=, removeFromMap, setLocalName and setName.

navigationPathAsString()

QCString DefinitionImpl::navigationPathAsString ()

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

Declaration at line 119 of file definitionimpl.h, definition at line 1372 of file definition.cpp.

1373{
1374 QCString result;
1375 Definition *outerScope = getOuterScope();
1376 QCString locName = localName();
1377 if (outerScope && outerScope!=Doxygen::globalScope)
1378 {
1379 result+=outerScope->navigationPathAsString();
1380 }
1381 else if (p->def->definitionType()==Definition::TypeFile &&
1382 toFileDef(p->def)->getDirDef())
1383 {
1384 result+=(toFileDef(p->def))->getDirDef()->navigationPathAsString();
1385 }
1386 result+="<li class=\"navelem\">";
1387 if (p->def->isLinkableInProject())
1388 {
1389 QCString fn = p->def->getOutputFileBase();
1391 if (p->def->definitionType()==Definition::TypeGroup &&
1392 !toGroupDef(p->def)->groupTitle().isEmpty())
1393 {
1394 QCString title = parseCommentAsHtml(p->def,nullptr,toGroupDef(p->def)->groupTitle(),
1395 p->def->getDefFileName(),p->def->getDefLine());
1396 result+="<a href=\"$relpath^"+fn+"\">"+title+"</a>";
1397 }
1398 else if (p->def->definitionType()==Definition::TypePage &&
1399 toPageDef(p->def)->hasTitle())
1400 {
1401 QCString title = parseCommentAsHtml(p->def,nullptr,toPageDef(p->def)->title(),
1402 p->def->getDefFileName(),p->def->getDefLine());
1403 result+="<a href=\"$relpath^"+fn+"\">"+title+"</a>";
1404 }
1405 else if (p->def->definitionType()==Definition::TypeClass)
1406 {
1408 if (name.endsWith("-p"))
1409 {
1410 name = name.left(name.length()-2);
1411 }
1412 result+="<a href=\"$relpath^"+fn;
1413 if (!p->def->anchor().isEmpty()) result+="#"+p->def->anchor();
1414 result+="\">"+convertToHtml(name)+"</a>";
1415 }
1416 else
1417 {
1418 result+="<a href=\"$relpath^"+fn+"\">"+
1419 convertToHtml(locName)+"</a>";
1420 }
1421 }
1422 else
1423 {
1424 result+="<b>"+convertToHtml(locName)+"</b>";
1425 }
1426 result+="</li>";
1427 return result;
1428}

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.

partOfGroups()

const GroupList & DefinitionImpl::partOfGroups ()

Declaration at line 77 of file definitionimpl.h, definition at line 1699 of file definition.cpp.

1700{
1701 return p->partOfGroups;
1702}

Reference p.

Referenced by isLinkableViaGroup.

pathFragment()

QCString DefinitionImpl::pathFragment ()

Declaration at line 123 of file definitionimpl.h, definition at line 1334 of file definition.cpp.

1335{
1336 QCString result;
1337 if (p->outerScope && p->outerScope!=Doxygen::globalScope)
1338 {
1339 result = p->outerScope->pathFragment();
1340 }
1341 if (p->def->isLinkable())
1342 {
1343 if (!result.isEmpty()) result+="/";
1344 if (p->def->definitionType()==Definition::TypeGroup &&
1345 !toGroupDef(p->def)->groupTitle().isEmpty())
1346 {
1347 result+=toGroupDef(p->def)->groupTitle();
1348 }
1349 else if (p->def->definitionType()==Definition::TypePage &&
1350 toPageDef(p->def)->hasTitle())
1351 {
1352 result+=toPageDef(p->def)->title();
1353 }
1354 else
1355 {
1356 result+=p->localName;
1357 }
1358 }
1359 else
1360 {
1361 result+=p->localName;
1362 }
1363 return result;
1364}

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

qualifiedName()

QCString DefinitionImpl::qualifiedName ()

Declaration at line 44 of file definitionimpl.h, definition at line 1219 of file definition.cpp.

1220{
1221 std::lock_guard<std::recursive_mutex> lock(g_qualifiedNameMutex);
1222 if (!p->qualifiedName.isEmpty())
1223 {
1224 return p->qualifiedName;
1225 }
1226
1227 //printf("start %s::qualifiedName() localName=%s\n",qPrint(name()),qPrint(p->localName));
1228 if (p->outerScope==nullptr)
1229 {
1230 if (p->localName=="<globalScope>")
1231 {
1232 return "";
1233 }
1234 else
1235 {
1236 return p->localName;
1237 }
1238 }
1239
1240 if (p->outerScope->name()=="<globalScope>")
1241 {
1242 p->qualifiedName = p->localName;
1243 }
1244 else
1245 {
1246 p->qualifiedName = p->outerScope->qualifiedName()+
1248 p->localName;
1249 }
1250 //printf("end %s::qualifiedName()=%s\n",qPrint(name()),qPrint(p->qualifiedName));
1251 //count--;
1252 return p->qualifiedName;
1253}

References g_qualifiedNameMutex, getLanguage, getLanguageSpecificSeparator and p.

setArtificial()

void DefinitionImpl::setArtificial (bool b)

Declaration at line 108 of file definitionimpl.h, definition at line 1788 of file definition.cpp.

1789{
1790 p->isArtificial = b;
1791}

Reference p.

setBodyDef()

void DefinitionImpl::setBodyDef (const FileDef * fd)

Declaration at line 98 of file definitionimpl.h, definition at line 996 of file definition.cpp.

997{
998 if (!p->body.has_value())
999 {
1000 p->body = std::make_optional<BodyInfo>();
1001 }
1002 p->body.value().fileDef=fd;
1003}

Reference p.

setBodySegment()

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

Declaration at line 97 of file definitionimpl.h, definition at line 984 of file definition.cpp.

984void DefinitionImpl::setBodySegment(int defLine, int bls,int ble)
985{
986 if (!p->body.has_value())
987 {
988 p->body = std::make_optional<BodyInfo>();
989 }
990 BodyInfo &body = p->body.value();
991 body.defLine = defLine;
992 body.startLine = bls;
993 body.endLine = ble;
994}

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

setBriefDescription()

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

Declaration at line 93 of file definitionimpl.h, definition at line 493 of file definition.cpp.

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

setDefFile()

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

Declaration at line 91 of file definitionimpl.h, definition at line 148 of file definition.cpp.

148void DefinitionImpl::setDefFile(const QCString &df,int defLine,int defCol)
149{
150 p->setDefFileName(df);
151 p->defLine = defLine;
152 p->defColumn = defCol;
153}

Reference p.

setDocumentation()

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

Declaration at line 92 of file definitionimpl.h, definition at line 430 of file definition.cpp.

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

setExported()

void DefinitionImpl::setExported (bool b)

Declaration at line 109 of file definitionimpl.h, definition at line 1793 of file definition.cpp.

1794{
1795 p->isExported = b;
1796}

Reference p.

setHidden()

void DefinitionImpl::setHidden (bool b)

Declaration at line 107 of file definitionimpl.h, definition at line 1783 of file definition.cpp.

1784{
1785 p->hidden = p->hidden || b;
1786}

Reference p.

setId()

void DefinitionImpl::setId (const QCString & name)

Declaration at line 90 of file definitionimpl.h, definition at line 285 of file definition.cpp.

286{
287 if (id.isEmpty()) return;
288 p->id = id;
290 {
291 //printf("DefinitionImpl::setId '%s'->'%s'\n",id,qPrint(p->name));
292 Doxygen::clangUsrMap->emplace(id.str(),p->def);
293 }
294}

References Doxygen::clangUsrMap, id and p.

setInbodyDocumentation()

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

Declaration at line 94 of file definitionimpl.h, definition at line 521 of file definition.cpp.

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

setLanguage()

void DefinitionImpl::setLanguage (SrcLangExt lang)

Declaration at line 110 of file definitionimpl.h, definition at line 1803 of file definition.cpp.

1804{
1805 p->lang=lang;
1806}

Reference p.

setLocalName()

void DefinitionImpl::setLocalName (const QCString & name)

Declaration at line 125 of file definitionimpl.h, definition at line 1798 of file definition.cpp.

1799{
1800 p->localName=name;
1801}

References name and p.

setName()

void DefinitionImpl::setName (const QCString & name)

Declaration at line 89 of file definitionimpl.h, definition at line 276 of file definition.cpp.

277{
278 if (name.isEmpty()) return;
279 p->name = name;
280 p->isAnonymous = p->name.isEmpty() ||
281 p->name.at(0)=='@' ||
282 p->name.find("::@")!=-1;
283}

References name and p.

Referenced by DefinitionImpl.

setOuterScope()

void DefinitionImpl::setOuterScope (Definition * d)

Declaration at line 106 of file definitionimpl.h, definition at line 1255 of file definition.cpp.

1256{
1257 std::lock_guard<std::recursive_mutex> lock(g_qualifiedNameMutex);
1258 //printf("%s::setOuterScope(%s)\n",qPrint(name()),d?qPrint(d->name()):"<none>");
1259 Definition *outerScope = p->outerScope;
1260 bool found=false;
1261 // make sure that we are not creating a recursive scope relation.
1262 while (outerScope && !found)
1263 {
1264 found = (outerScope==d);
1265 outerScope = outerScope->getOuterScope();
1266 }
1267 if (!found)
1268 {
1269 p->qualifiedName.clear(); // flush cached scope name
1270 p->outerScope = d;
1271 }
1272 p->hidden = p->hidden || d->isHidden();
1273 assert(p->def!=p->outerScope);
1274}

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

setReference()

void DefinitionImpl::setReference (const QCString & r)

Declaration at line 95 of file definitionimpl.h, definition at line 1773 of file definition.cpp.

1774{
1775 p->ref=r;
1776}

Reference p.

setRefItems()

void DefinitionImpl::setRefItems (const RefItemVector & sli)

Declaration at line 101 of file definitionimpl.h, definition at line 1286 of file definition.cpp.

1287{
1288 p->xrefListItems.insert(p->xrefListItems.end(), sli.cbegin(), sli.cend());
1289}

Reference p.

symbolName()

QCString DefinitionImpl::symbolName ()

Declaration at line 45 of file definitionimpl.h, definition at line 1508 of file definition.cpp.

1509{
1510 return p->symbolName;
1511}

Reference p.

Referenced by addToMap.

writeDocAnchorsToTagFile()

void DefinitionImpl::writeDocAnchorsToTagFile (TextStream & tagFile)

Declaration at line 124 of file definitionimpl.h, definition at line 337 of file definition.cpp.

338{
339 if (!p->sectionRefs.empty())
340 {
341 //printf("%s: writeDocAnchorsToTagFile(%d)\n",qPrint(name()),p->sectionRef.size());
342 for (const SectionInfo *si : p->sectionRefs)
343 {
344 if (!si->generated() && si->ref().isEmpty() && !AnchorGenerator::instance().isGenerated(si->label().str()))
345 {
346 //printf("write an entry!\n");
347 if (p->def->definitionType()==Definition::TypeMember) tagFile << " ";
348 QCString fn = si->fileName();
350 tagFile << " <docanchor file=\"" << fn << "\"";
351 if (!si->title().isEmpty())
352 {
353 tagFile << " title=\"" << convertToXML(si->title()) << "\"";
354 }
355 tagFile << ">" << si->label() << "</docanchor>\n";
356 }
357 }
358 }
359}

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)

Write code of this definition into the documentation

Declaration at line 112 of file definitionimpl.h, definition at line 1013 of file definition.cpp.

1014{
1015 const MemberDef *thisMd = nullptr;
1016 if (p->def->definitionType()==Definition::TypeMember)
1017 {
1018 thisMd = toMemberDef(p->def);
1019 }
1020 bool inlineSources = thisMd && thisMd->hasInlineSource();
1021 //printf("Source Fragment %s: %d-%d\n",qPrint(name()),
1022 // p->body->startLine,p->body->endLine);
1023 if (inlineSources && hasSources())
1024 {
1026 QCString codeFragment;
1027 bool isMacro = thisMd && thisMd->memberType()==MemberType::Define;
1028 int actualStart=p->body->startLine,actualEnd=p->body->endLine;
1029 if (readCodeFragment(p->body->fileDef->absFilePath(),isMacro,
1030 actualStart,actualEnd,codeFragment)
1031 )
1032 {
1033 //printf("Adding code fragment '%s' ext='%s' range=%d-%d\n",
1034 // qPrint(codeFragment),qPrint(p->defFileExt),actualStart,actualEnd);
1035 auto intf = Doxygen::parserManager->getCodeParser(p->defFileExt);
1036 intf->resetCodeParserState();
1037 //printf("Read:\n'%s'\n\n",qPrint(codeFragment));
1038
1039 auto &codeOL = ol.codeGenerators();
1040 codeOL.startCodeFragment("DoxyCode");
1041 intf->parseCode(codeOL, // codeOutIntf
1042 scopeName, // scope
1043 codeFragment, // input
1044 p->lang, // lang
1045 Config_getBool(STRIP_CODE_COMMENTS),
1046 FALSE, // isExample
1047 QCString(), // exampleName
1048 p->body->fileDef, // fileDef
1049 actualStart, // startLine
1050 actualEnd, // endLine
1051 TRUE, // inlineFragment
1052 thisMd, // memberDef
1053 TRUE // show line numbers
1054 );
1055 codeOL.endCodeFragment("DoxyCode");
1056 }
1058 }
1059}

References OutputList::codeGenerators, Config_getBool, Define, FALSE, MemberDef::hasInlineSource, hasSources, MemberDef::memberType, p, Doxygen::parserManager, OutputList::popGeneratorState, OutputList::pushGeneratorState, readCodeFragment, OutputCodeList::startCodeFragment, toMemberDef, TRUE and Definition::TypeMember.

writeNavigationPath()

void DefinitionImpl::writeNavigationPath (OutputList & ol)

Declaration at line 118 of file definitionimpl.h, definition at line 1431 of file definition.cpp.

1432{
1435
1436 QCString navPath;
1437 navPath += "<div id=\"nav-path\" class=\"navpath\">\n"
1438 " <ul>\n";
1439 navPath += navigationPathAsString();
1440 navPath += " </ul>\n"
1441 "</div>\n";
1442 ol.writeNavigationPath(navPath);
1443
1445}

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

writePageNavigation()

void DefinitionImpl::writePageNavigation (OutputList & ol)

Declaration at line 122 of file definitionimpl.h, definition at line 1875 of file definition.cpp.

writeQuickMemberLinks()

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

Declaration at line 120 of file definitionimpl.h, definition at line 1867 of file definition.cpp.

writeSourceDef()

void DefinitionImpl::writeSourceDef (OutputList & ol)

Write a reference to the source code defining this definition

Declaration at line 111 of file definitionimpl.h, definition at line 935 of file definition.cpp.

936{
937 //printf("DefinitionImpl::writeSourceRef %d %p\n",bodyLine,bodyDef);
939 if (!fn.isEmpty())
940 {
941 QCString refText = theTranslator->trDefinedAtLineInSourceFile();
942 int lineMarkerPos = refText.find("@0");
943 int fileMarkerPos = refText.find("@1");
944 if (lineMarkerPos!=-1 && fileMarkerPos!=-1) // should always pass this.
945 {
946 QCString lineStr;
947 lineStr.sprintf("%d",p->body->defLine);
948 QCString anchorStr = getSourceAnchor();
949 ol.startParagraph("definition");
950 if (lineMarkerPos<fileMarkerPos) // line marker before file marker
951 {
952 // write text left from linePos marker
953 ol.parseText(refText.left(lineMarkerPos));
954 ol.writeObjectLink(QCString(),fn,anchorStr,lineStr);
955 // write text between markers
956 ol.parseText(refText.mid(lineMarkerPos+2,fileMarkerPos-lineMarkerPos-2));
957 // write file link
958 ol.writeObjectLink(QCString(),fn,QCString(),p->body->fileDef->name());
959 // write text right from file marker
960 ol.parseText(refText.right(refText.length()-static_cast<size_t>(fileMarkerPos)-2));
961 }
962 else // file marker before line marker
963 {
964 // write text left from file marker
965 ol.parseText(refText.left(fileMarkerPos));
966 // write file link
967 ol.writeObjectLink(QCString(),fn,QCString(),p->body->fileDef->name());
968 // write text between markers
969 ol.parseText(refText.mid(fileMarkerPos+2,lineMarkerPos-fileMarkerPos-2));
970 // write line link
971 ol.writeObjectLink(QCString(),fn,anchorStr,lineStr);
972 // write text right from linePos marker
973 ol.parseText(refText.right(refText.length()-static_cast<size_t>(lineMarkerPos)-2));
974 }
975 ol.endParagraph();
976 }
977 else
978 {
979 err("translation error: invalid markers in trDefinedAtLineInSourceFile()\n");
980 }
981 }
982}

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)

Declaration at line 116 of file definitionimpl.h, definition at line 1147 of file definition.cpp.

1148{
1149 _writeSourceRefList(ol,scopeName,theTranslator->trReferencedBy(),p->sourceRefByDict,FALSE);
1150}

References _writeSourceRefList, FALSE, p and theTranslator.

writeSourceRefs()

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

Declaration at line 115 of file definitionimpl.h, definition at line 1152 of file definition.cpp.

1153{
1154 _writeSourceRefList(ol,scopeName,theTranslator->trReferences(),p->sourceRefsDict,TRUE);
1155}

References _writeSourceRefList, p, theTranslator and TRUE.

writeSummaryLinks()

void DefinitionImpl::writeSummaryLinks (OutputList &)

Declaration at line 121 of file definitionimpl.h, definition at line 1871 of file definition.cpp.

writeToc()

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

Declaration at line 126 of file definitionimpl.h, definition at line 1447 of file definition.cpp.

1447void DefinitionImpl::writeToc(OutputList &ol, const LocalToc &localToc) const
1448{
1449 // first check if we have anything to show or if the outline is already shown on the outline panel
1450 if (p->sectionRefs.empty() || (Config_getBool(GENERATE_TREEVIEW) && Config_getBool(PAGE_OUTLINE_PANEL))) return;
1451 // generate the embedded toc
1452 //ol.writeLocalToc(p->sectionRefs,localToc);
1453
1454 auto generateTocEntries = [this,&ol]()
1455 {
1456 for (const SectionInfo *si : p->sectionRefs)
1457 {
1458 if (si->type().isSection())
1459 {
1460 ol.startTocEntry(si);
1461 const MemberDef *md = p->def->definitionType()==Definition::TypeMember ? toMemberDef(p->def) : nullptr;
1462 const Definition *scope = p->def->definitionType()==Definition::TypeMember ? p->def->getOuterScope() : p->def;
1463 QCString docTitle = si->title();
1464 if (docTitle.isEmpty()) docTitle = si->label();
1465 ol.generateDoc(docFile(),getStartBodyLine(),scope,md,docTitle,TRUE,FALSE,
1467 ol.endTocEntry(si);
1468 }
1469 }
1470 };
1471
1472 if (localToc.isHtmlEnabled())
1473 {
1476 ol.startLocalToc(localToc.htmlLevel());
1477 generateTocEntries();
1478 ol.endLocalToc();
1480 }
1481 if (localToc.isDocbookEnabled())
1482 {
1485 ol.startLocalToc(localToc.docbookLevel());
1486 generateTocEntries();
1487 ol.endLocalToc();
1489 }
1490 if (localToc.isLatexEnabled())
1491 {
1494 ol.startLocalToc(localToc.latexLevel());
1495 // no gneerateTocEntries() needed for LaTeX
1496 ol.endLocalToc();
1498 }
1499}

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

xrefListItems()

const RefItemVector & DefinitionImpl::xrefListItems ()

Declaration at line 79 of file definitionimpl.h, definition at line 1329 of file definition.cpp.

1330{
1331 return p->xrefListItems;
1332}

Reference p.

Private Member Functions

_docsAlreadyAdded()

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

Declaration at line 140 of file definitionimpl.h, definition at line 361 of file definition.cpp.

362{
363 uint8_t md5_sig[16];
364 char sigStr[33];
365 // to avoid mismatches due to differences in indenting, we first remove
366 // double whitespaces...
367 QCString docStr = doc.simplifyWhiteSpace();
368 MD5Buffer(docStr.data(),static_cast<unsigned int>(docStr.length()),md5_sig);
369 MD5SigToString(md5_sig,sigStr);
370 //printf("%s:_docsAlreadyAdded doc='%s' sig='%s' docSigs='%s'\n",
371 // qPrint(name()),qPrint(doc),qPrint(sigStr),qPrint(sigList));
372 if (sigList.find(sigStr)==-1) // new docs, add signature to prevent re-adding it
373 {
374 sigList+=QCString(":")+sigStr;
375 return FALSE;
376 }
377 else
378 {
379 return TRUE;
380 }
381}

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

Referenced by _setBriefDescription and _setInbodyDocumentation.

_getXRefListId()

int DefinitionImpl::_getXRefListId (const QCString & listName)

Declaration at line 134 of file definitionimpl.h, definition at line 1317 of file definition.cpp.

1317int DefinitionImpl::_getXRefListId(const QCString &listName) const
1318{
1319 for (const RefItem *item : p->xrefListItems)
1320 {
1321 if (item->list()->listName()==listName)
1322 {
1323 return item->id();
1324 }
1325 }
1326 return -1;
1327}

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

_setBriefDescription()

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

Declaration at line 137 of file definitionimpl.h, definition at line 436 of file definition.cpp.

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

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)

Declaration at line 138 of file definitionimpl.h, definition at line 383 of file definition.cpp.

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

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)

Declaration at line 139 of file definitionimpl.h, definition at line 499 of file definition.cpp.

500{
501 if (!_docsAlreadyAdded(doc,p->docSignatures))
502 {
503 if (!p->inbodyDocs.has_value())
504 {
505 p->inbodyDocs = std::make_optional<DocInfo>();
506 }
507 DocInfo &inbodyDocs = p->inbodyDocs.value();
508 if (inbodyDocs.doc.isEmpty()) // fresh inbody docs
509 {
510 inbodyDocs.doc = doc;
511 inbodyDocs.file = inbodyFile;
512 inbodyDocs.line = inbodyLine;
513 }
514 else // another inbody documentation fragment, append this to the end
515 {
516 inbodyDocs.doc += QCString("\n\n")+doc;
517 }
518 }
519}

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

Referenced by setInbodyDocumentation.

_writeSourceRefList()

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

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

Declaration at line 135 of file definitionimpl.h, definition at line 1079 of file definition.cpp.

1080 const QCString &text,const std::unordered_map<std::string,MemberDef *> &membersMap,
1081 bool /*funcOnly*/) const
1082{
1083 if (!membersMap.empty())
1084 {
1085 auto members = refMapToVector(membersMap);
1086
1087 auto replaceFunc = [this,&members,scopeName,&ol](size_t entryIndex)
1088 {
1089 bool sourceBrowser = Config_getBool(SOURCE_BROWSER);
1090 bool refLinkSource = Config_getBool(REFERENCES_LINK_SOURCE);
1091 const MemberDef *md=members[entryIndex];
1092 if (md)
1093 {
1094 QCString scope=md->getScopeString();
1095 QCString name=md->name();
1096 //printf("class=%p scope=%s scopeName=%s\n",md->getClassDef(),qPrint(scope),scopeName);
1097 if (!scope.isEmpty() && scope!=scopeName)
1098 {
1099 name.prepend(scope+getLanguageSpecificSeparator(p->lang));
1100 }
1101 if (!md->isObjCMethod() &&
1102 (md->isFunction() || md->isSlot() ||
1103 md->isPrototype() || md->isSignal()
1104 )
1105 )
1106 {
1107 name+="()";
1108 }
1109 if (sourceBrowser &&
1110 !(md->isLinkable() && !refLinkSource) &&
1111 md->getStartBodyLine()!=-1 &&
1112 md->getBodyDef()
1113 )
1114 {
1115 const int maxLineNrStr = 10;
1116 char anchorStr[maxLineNrStr];
1117 qsnprintf(anchorStr,maxLineNrStr,"l%05d",md->getStartBodyLine());
1118 //printf("Write object link to %s\n",qPrint(md->getBodyDef()->getSourceFileBase()));
1120 }
1121 else if (md->isLinkable())
1122 {
1124 md->getOutputFileBase(),
1125 md->anchor(),name);
1126 }
1127 else
1128 {
1129 ol.docify(name);
1130 }
1131 }
1132 };
1133
1134 ol.startParagraph("reference");
1135 ol.parseText(text);
1136 ol.docify(" ");
1138 theTranslator->trWriteList(static_cast<int>(members.size())).str(),
1139 members.size(),
1140 replaceFunc);
1141 ol.writeString(".");
1142 ol.endParagraph();
1143
1144 }
1145}

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.

Private Member Attributes

p

std::unique_ptr<Private> DefinitionImpl::p

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


Generated via doxygen2docusaurus by Doxygen 1.14.0.