summaryrefslogtreecommitdiffstats
path: root/src/util.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/util.cpp')
-rw-r--r--src/util.cpp15
1 files changed, 13 insertions, 2 deletions
diff --git a/src/util.cpp b/src/util.cpp
index f49b761..0af45f5 100644
--- a/src/util.cpp
+++ b/src/util.cpp
@@ -946,7 +946,8 @@ static void trimNamespaceScope(QCString &t1,QCString &t2)
// stored in the list should be equal.
bool matchArguments(ArgumentList *srcAl,ArgumentList *dstAl,
- const char *cl,const char *ns,bool checkCV)
+ const char *cl,const char *ns,bool checkCV,
+ NamespaceList *usingList)
{
QCString className=cl;
QCString namespaceName=ns;
@@ -1048,9 +1049,18 @@ bool matchArguments(ArgumentList *srcAl,ArgumentList *dstAl,
srcAType=trimScope(namespaceName,srcAType);
dstAType=trimScope(namespaceName,dstAType);
}
+ if (usingList && usingList->count()>0)
+ {
+ NamespaceListIterator nli(*usingList);
+ NamespaceDef *nd;
+ for (;(nd=nli.current());++nli)
+ {
+ srcAType=trimScope(nd->name(),srcAType);
+ dstAType=trimScope(nd->name(),dstAType);
+ }
+ }
//printf("srcAType=%s dstAType=%s\n",srcAType.data(),dstAType.data());
- //printf("`%s' <=> `%s'\n",srcAType.data(),dstAType.data());
uint srcPos=0,dstPos=0;
bool equal=TRUE;
while (srcPos<srcAType.length() && dstPos<dstAType.length() && equal)
@@ -1201,6 +1211,7 @@ void mergeArguments(ArgumentList *srcAl,ArgumentList *dstAl)
// argListToString(srcAl).data(),argListToString(dstAl).data());
//printArgList(srcAl);printf(" <=> ");
//printArgList(dstAl);printf("\n");
+
if (srcAl==0 || dstAl==0 || srcAl->count()!=dstAl->count())
{
return; // invalid argument lists -> do not merge