Commit 95aee340 authored by Dimitri van Heesch's avatar Dimitri van Heesch

Bug 729063 - Missing link for item inside the same namespace

parent 30216574
...@@ -118,8 +118,7 @@ static QCString addTemplateNames(const QCString &s,const QCString &n,const QCStr ...@@ -118,8 +118,7 @@ static QCString addTemplateNames(const QCString &s,const QCString &n,const QCStr
// ol.endMemberDoc(hasArgs=FALSE); // ol.endMemberDoc(hasArgs=FALSE);
// //
static bool writeDefArgumentList(OutputList &ol,ClassDef *cd, static bool writeDefArgumentList(OutputList &ol,Definition *scope,MemberDef *md)
const QCString & /*scopeName*/,MemberDef *md)
{ {
ArgumentList *defArgList=(md->isDocsForDefinition()) ? ArgumentList *defArgList=(md->isDocsForDefinition()) ?
md->argumentList() : md->declArgumentList(); md->argumentList() : md->declArgumentList();
...@@ -182,9 +181,9 @@ static bool writeDefArgumentList(OutputList &ol,ClassDef *cd, ...@@ -182,9 +181,9 @@ static bool writeDefArgumentList(OutputList &ol,ClassDef *cd,
//printf("===> name=%s isDefine=%d\n",md->name().data(),md->isDefine()); //printf("===> name=%s isDefine=%d\n",md->name().data(),md->isDefine());
QCString cName; QCString cName;
if (cd) if (scope)
{ {
cName=cd->name(); cName=scope->name();
int il=cName.find('<'); int il=cName.find('<');
int ir=cName.findRev('>'); int ir=cName.findRev('>');
if (il!=-1 && ir!=-1 && ir>il) if (il!=-1 && ir!=-1 && ir>il)
...@@ -192,9 +191,9 @@ static bool writeDefArgumentList(OutputList &ol,ClassDef *cd, ...@@ -192,9 +191,9 @@ static bool writeDefArgumentList(OutputList &ol,ClassDef *cd,
cName=cName.mid(il,ir-il+1); cName=cName.mid(il,ir-il+1);
//printf("1. cName=%s\n",cName.data()); //printf("1. cName=%s\n",cName.data());
} }
else if (cd->templateArguments()) else if (scope->definitionType()==Definition::TypeClass && ((ClassDef*)scope)->templateArguments())
{ {
cName=tempArgListToString(cd->templateArguments(),cd->getLanguage()); cName=tempArgListToString(((ClassDef*)scope)->templateArguments(),scope->getLanguage());
//printf("2. cName=%s\n",cName.data()); //printf("2. cName=%s\n",cName.data());
} }
else // no template specifier else // no template specifier
...@@ -238,8 +237,8 @@ static bool writeDefArgumentList(OutputList &ol,ClassDef *cd, ...@@ -238,8 +237,8 @@ static bool writeDefArgumentList(OutputList &ol,ClassDef *cd,
QCString n=a->type.left(vp); QCString n=a->type.left(vp);
if (hasFuncPtrType) n=a->type.left(wp); if (hasFuncPtrType) n=a->type.left(wp);
if (md->isObjCMethod()) { n.prepend("("); n.append(")"); } if (md->isObjCMethod()) { n.prepend("("); n.append(")"); }
if (!cName.isEmpty()) n=addTemplateNames(n,cd->name(),cName); if (!cName.isEmpty()) n=addTemplateNames(n,scope->name(),cName);
linkifyText(TextGeneratorOLImpl(ol),cd,md->getBodyDef(),md,n); linkifyText(TextGeneratorOLImpl(ol),scope,md->getBodyDef(),md,n);
} }
else // non-function pointer type else // non-function pointer type
{ {
...@@ -247,8 +246,8 @@ static bool writeDefArgumentList(OutputList &ol,ClassDef *cd, ...@@ -247,8 +246,8 @@ static bool writeDefArgumentList(OutputList &ol,ClassDef *cd,
if (md->isObjCMethod()) { n.prepend("("); n.append(")"); } if (md->isObjCMethod()) { n.prepend("("); n.append(")"); }
if (a->type!="...") if (a->type!="...")
{ {
if (!cName.isEmpty()) n=addTemplateNames(n,cd->name(),cName); if (!cName.isEmpty()) n=addTemplateNames(n,scope->name(),cName);
linkifyText(TextGeneratorOLImpl(ol),cd,md->getBodyDef(),md,n); linkifyText(TextGeneratorOLImpl(ol),scope,md->getBodyDef(),md,n);
} }
} }
if (!isDefine) if (!isDefine)
...@@ -292,17 +291,17 @@ static bool writeDefArgumentList(OutputList &ol,ClassDef *cd, ...@@ -292,17 +291,17 @@ static bool writeDefArgumentList(OutputList &ol,ClassDef *cd,
if (hasFuncPtrType) // write the part of the argument type if (hasFuncPtrType) // write the part of the argument type
// that comes after the name // that comes after the name
{ {
linkifyText(TextGeneratorOLImpl(ol),cd,md->getBodyDef(), linkifyText(TextGeneratorOLImpl(ol),scope,md->getBodyDef(),
md,a->type.right(a->type.length()-vp)); md,a->type.right(a->type.length()-vp));
} }
if (!a->defval.isEmpty()) // write the default value if (!a->defval.isEmpty()) // write the default value
{ {
QCString n=a->defval; QCString n=a->defval;
if (!cName.isEmpty()) n=addTemplateNames(n,cd->name(),cName); if (!cName.isEmpty()) n=addTemplateNames(n,scope->name(),cName);
ol.docify(" = "); ol.docify(" = ");
ol.startTypewriter(); ol.startTypewriter();
linkifyText(TextGeneratorOLImpl(ol),cd,md->getBodyDef(),md,n,FALSE,TRUE,TRUE); linkifyText(TextGeneratorOLImpl(ol),scope,md->getBodyDef(),md,n,FALSE,TRUE,TRUE);
ol.endTypewriter(); ol.endTypewriter();
} }
...@@ -361,7 +360,7 @@ static bool writeDefArgumentList(OutputList &ol,ClassDef *cd, ...@@ -361,7 +360,7 @@ static bool writeDefArgumentList(OutputList &ol,ClassDef *cd,
if (!defArgList->trailingReturnType.isEmpty()) if (!defArgList->trailingReturnType.isEmpty())
{ {
linkifyText(TextGeneratorOLImpl(ol), // out linkifyText(TextGeneratorOLImpl(ol), // out
cd, // scope scope, // scope
md->getBodyDef(), // fileScope md->getBodyDef(), // fileScope
md, // self md, // self
defArgList->trailingReturnType, // text defArgList->trailingReturnType, // text
...@@ -2649,6 +2648,7 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol, ...@@ -2649,6 +2648,7 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
ol.startMemberDoc(ciname,name(),memAnchor,title,showInline); ol.startMemberDoc(ciname,name(),memAnchor,title,showInline);
ClassDef *cd=getClassDef(); ClassDef *cd=getClassDef();
NamespaceDef *nd=getNamespaceDef();
if (!Config_getBool("HIDE_SCOPE_NAMES")) if (!Config_getBool("HIDE_SCOPE_NAMES"))
{ {
bool first=TRUE; bool first=TRUE;
...@@ -2759,7 +2759,9 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol, ...@@ -2759,7 +2759,9 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
this, this,
substitute(ldef,"::",sep) substitute(ldef,"::",sep)
); );
hasParameterList=writeDefArgumentList(ol,cd,scopeName,this); Definition *scope = cd;
if (scope==0) scope = nd;
hasParameterList=writeDefArgumentList(ol,scope,this);
} }
if (hasOneLineInitializer()) // add initializer if (hasOneLineInitializer()) // add initializer
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment