From 9631035b36ade05bed6a71bcbc86d17f8b7c9cab Mon Sep 17 00:00:00 2001 From: Dimitri van Heesch Date: Sat, 12 Oct 2013 13:34:10 +0200 Subject: Bug 709870 - Broken links on members HTML page when using BUILTIN_STL_SUPPORT --- src/classdef.cpp | 55 +++++++++++++++++++++++++++++++------------------------ 1 file changed, 31 insertions(+), 24 deletions(-) diff --git a/src/classdef.cpp b/src/classdef.cpp index 52acec2..eab6b8e 100644 --- a/src/classdef.cpp +++ b/src/classdef.cpp @@ -2255,7 +2255,8 @@ void ClassDef::writeMemberList(OutputList &ol) ol.writeString(""); memberWritten=TRUE; } - else if (!Config_getBool("HIDE_UNDOC_MEMBERS") && + else if (!cd->isArtificial() && + !Config_getBool("HIDE_UNDOC_MEMBERS") && (protectionLevelVisible(md->protection()) || md->isFriend()) ) // no documentation, // generate link to the class instead. @@ -4143,15 +4144,18 @@ int ClassDef::countInheritedDecMembers(MemberListType lt, { ClassDef *icd=ibcd->classDef; int lt1,lt2; - convertProtectionLevel(lt,ibcd->prot,<1,<2); - //printf("%s: convert %d->(%d,%d) prot=%d\n", - // icd->name().data(),lt,lt1,lt2,ibcd->prot); - if (visitedClasses->find(icd)==0) + if (icd->isLinkable()) { - visitedClasses->insert(icd,icd); // guard for multiple virtual inheritance - if (lt1!=-1) + convertProtectionLevel(lt,ibcd->prot,<1,<2); + //printf("%s: convert %d->(%d,%d) prot=%d\n", + // icd->name().data(),lt,lt1,lt2,ibcd->prot); + if (visitedClasses->find(icd)==0) { - inhCount+=icd->countMemberDeclarations((MemberListType)lt1,inheritedFrom,lt2,FALSE,TRUE,visitedClasses); + visitedClasses->insert(icd,icd); // guard for multiple virtual inheritance + if (lt1!=-1) + { + inhCount+=icd->countMemberDeclarations((MemberListType)lt1,inheritedFrom,lt2,FALSE,TRUE,visitedClasses); + } } } } @@ -4279,25 +4283,28 @@ void ClassDef::writeInheritedMemberDeclarations(OutputList &ol, for (it.toFirst();(ibcd=it.current());++it) { ClassDef *icd=ibcd->classDef; - int lt1,lt3; - convertProtectionLevel(lt,ibcd->prot,<1,<3); - if (lt2==-1 && lt3!=-1) - { - lt2=lt3; - } - //printf("%s:convert %d->(%d,%d) prot=%d\n",icd->name().data(),lt,lt1,lt2,ibcd->prot); - if (visitedClasses->find(icd)==0) + if (icd->isLinkable()) { - visitedClasses->insert(icd,icd); // guard for multiple virtual inheritance - if (lt1!=-1) + int lt1,lt3; + convertProtectionLevel(lt,ibcd->prot,<1,<3); + if (lt2==-1 && lt3!=-1) { - icd->writeMemberDeclarations(ol,(MemberListType)lt1, - title,QCString(),FALSE,inheritedFrom,lt2,FALSE /*invert*/,TRUE,visitedClasses); + lt2=lt3; + } + //printf("%s:convert %d->(%d,%d) prot=%d\n",icd->name().data(),lt,lt1,lt2,ibcd->prot); + if (visitedClasses->find(icd)==0) + { + visitedClasses->insert(icd,icd); // guard for multiple virtual inheritance + if (lt1!=-1) + { + icd->writeMemberDeclarations(ol,(MemberListType)lt1, + title,QCString(),FALSE,inheritedFrom,lt2,FALSE,TRUE,visitedClasses); + } + } + else + { + //printf("%s: class already visited!\n",icd->name().data()); } - } - else - { - //printf("%s: class already visited!\n",icd->name().data()); } } } -- cgit v0.12