diff options
Diffstat (limited to 'src/util.cpp')
-rw-r--r-- | src/util.cpp | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/src/util.cpp b/src/util.cpp index 6728c56..679e0d3 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -2698,6 +2698,8 @@ static QCString getCanonicalTypeForIdentifier( symName=word; } + //printf("symName=%s templSpec=%s\n",symName.data(),templSpec.data()); + if (!symName.isEmpty() && !templSpec.isEmpty() && (defList=Doxygen::symbolMap->find(symName+templSpec)) && defList->count()==1) // word without scope but with template specs @@ -2733,6 +2735,10 @@ static QCString getCanonicalTypeForIdentifier( if (cd) // known type { result = cd->qualifiedNameWithTemplateParameters(); + if (cd->isTemplate()) + { + *tSpec=""; + } } else if (mType && mType->isEnumerate()) // an enum { @@ -2799,15 +2805,15 @@ static QCString extractCanonicalType(Definition *d,FileDef *fs,const Argument *a // then resolve any identifiers inside. { static QRegExp re("[a-z_A-Z][a-z_A-Z0-9]*"); - int p=0,l,i; + int tp=0,tl,ti; // for each identifier template specifier - while ((i=re.match(templSpec,p,&l))!=-1) + while ((ti=re.match(templSpec,tp,&tl))!=-1) { - canType += templSpec.mid(p,i-p); - canType += getCanonicalTypeForIdentifier(d,fs,word,0); - p=i+l; + canType += templSpec.mid(tp,ti-tp); + canType += getCanonicalTypeForIdentifier(d,fs,templSpec.mid(ti,tl),0); + tp=ti+tl; } - canType+=templSpec.right(templSpec.length()-p); + canType+=templSpec.right(templSpec.length()-tp); } pp=p; |