Skip to content

Commit 65e57b5

Browse files
committed
Refactoring: move addDocCrossReference to memberdef.cpp/.h
1 parent c11530d commit 65e57b5

File tree

5 files changed

+46
-42
lines changed

5 files changed

+46
-42
lines changed

src/clangparser.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,8 @@
2525

2626
//--------------------------------------------------------------------------
2727

28-
std::mutex g_clangMutex;
28+
static std::mutex g_clangMutex;
29+
static std::mutex g_docCrossReferenceMutex;
2930

3031
ClangParser *ClangParser::instance()
3132
{
@@ -696,6 +697,7 @@ void ClangTUParser::linkIdentifier(CodeOutputInterface &ol,FileDef *fd,
696697
p->currentMemberDef && d->definitionType()==Definition::TypeMember &&
697698
(p->currentMemberDef!=d || p->currentLine<line)) // avoid self-reference
698699
{
700+
std::lock_guard<std::mutex> lock(g_docCrossReferenceMutex);
699701
addDocCrossReference(toMemberDefMutable(p->currentMemberDef),toMemberDefMutable(d));
700702
}
701703
writeMultiLineCodeLink(ol,fd,line,column,d,text);

src/memberdef.cpp

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6099,6 +6099,48 @@ bool MemberDefImpl::isReference() const
60996099
(m_impl->templateMaster && m_impl->templateMaster->isReference());
61006100
}
61016101

6102+
//-------------------------------------------------------------------------------
6103+
// Helpers
6104+
6105+
void addDocCrossReference(MemberDefMutable *src,MemberDefMutable *dst)
6106+
{
6107+
if (src==0 || dst==0) return;
6108+
//printf("--> addDocCrossReference src=%s,dst=%s\n",src->name().data(),dst->name().data());
6109+
if (dst->isTypedef() || dst->isEnumerate()) return; // don't add types
6110+
if ((dst->hasReferencedByRelation() || dst->hasCallerGraph()) &&
6111+
src->showInCallGraph()
6112+
)
6113+
{
6114+
dst->addSourceReferencedBy(src);
6115+
MemberDefMutable *mdDef = toMemberDefMutable(dst->memberDefinition());
6116+
if (mdDef)
6117+
{
6118+
mdDef->addSourceReferencedBy(src);
6119+
}
6120+
MemberDefMutable *mdDecl = toMemberDefMutable(dst->memberDeclaration());
6121+
if (mdDecl)
6122+
{
6123+
mdDecl->addSourceReferencedBy(src);
6124+
}
6125+
}
6126+
if ((src->hasReferencesRelation() || src->hasCallGraph()) &&
6127+
src->showInCallGraph()
6128+
)
6129+
{
6130+
src->addSourceReferences(dst);
6131+
MemberDefMutable *mdDef = toMemberDefMutable(src->memberDefinition());
6132+
if (mdDef)
6133+
{
6134+
mdDef->addSourceReferences(dst);
6135+
}
6136+
MemberDefMutable *mdDecl = toMemberDefMutable(src->memberDeclaration());
6137+
if (mdDecl)
6138+
{
6139+
mdDecl->addSourceReferences(dst);
6140+
}
6141+
}
6142+
}
6143+
61026144
// --- Cast functions
61036145
//
61046146
MemberDef *toMemberDef(Definition *d)

src/memberdef.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -448,5 +448,6 @@ MemberDefMutable *createMemberDef(const char *defFileName,int defLine,int defCol
448448
MemberDef *createMemberDefAlias(const Definition *newScope,const MemberDef *aliasMd);
449449

450450
void combineDeclarationAndDefinition(MemberDefMutable *mdec,MemberDefMutable *mdef);
451+
void addDocCrossReference(MemberDefMutable *src,MemberDefMutable *dst);
451452

452453
#endif

src/util.cpp

Lines changed: 0 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -6844,45 +6844,6 @@ bool fileVisibleInIndex(const FileDef *fd,bool &genSourceFile)
68446844
);
68456845
}
68466846

6847-
void addDocCrossReference(MemberDefMutable *src,MemberDefMutable *dst)
6848-
{
6849-
if (src==0 || dst==0) return;
6850-
//printf("--> addDocCrossReference src=%s,dst=%s\n",src->name().data(),dst->name().data());
6851-
if (dst->isTypedef() || dst->isEnumerate()) return; // don't add types
6852-
if ((dst->hasReferencedByRelation() || dst->hasCallerGraph()) &&
6853-
src->showInCallGraph()
6854-
)
6855-
{
6856-
dst->addSourceReferencedBy(src);
6857-
MemberDefMutable *mdDef = toMemberDefMutable(dst->memberDefinition());
6858-
if (mdDef)
6859-
{
6860-
mdDef->addSourceReferencedBy(src);
6861-
}
6862-
MemberDefMutable *mdDecl = toMemberDefMutable(dst->memberDeclaration());
6863-
if (mdDecl)
6864-
{
6865-
mdDecl->addSourceReferencedBy(src);
6866-
}
6867-
}
6868-
if ((src->hasReferencesRelation() || src->hasCallGraph()) &&
6869-
src->showInCallGraph()
6870-
)
6871-
{
6872-
src->addSourceReferences(dst);
6873-
MemberDefMutable *mdDef = toMemberDefMutable(src->memberDefinition());
6874-
if (mdDef)
6875-
{
6876-
mdDef->addSourceReferences(dst);
6877-
}
6878-
MemberDefMutable *mdDecl = toMemberDefMutable(src->memberDeclaration());
6879-
if (mdDecl)
6880-
{
6881-
mdDecl->addSourceReferences(dst);
6882-
}
6883-
}
6884-
}
6885-
68866847
//--------------------------------------------------------------------------------------
68876848

68886849
/*! @brief Get one unicode character as an unsigned integer from utf-8 string

src/util.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -460,8 +460,6 @@ QCString getDotImageExtension();
460460

461461
bool fileVisibleInIndex(const FileDef *fd,bool &genSourceFile);
462462

463-
void addDocCrossReference(MemberDefMutable *src,MemberDefMutable *dst);
464-
465463
uint getUtf8Code( const QCString& s, int idx );
466464
uint getUtf8CodeToLower( const QCString& s, int idx );
467465
uint getUtf8CodeToUpper( const QCString& s, int idx );

0 commit comments

Comments
 (0)