Loading src/doxygen.cpp +13 −2 Original line number Original line Diff line number Diff line Loading @@ -1295,10 +1295,21 @@ static void addClassToContext(EntryNav *rootNav) tagName = rootNav->tagInfo()->tagName; tagName = rootNav->tagInfo()->tagName; refFileName = rootNav->tagInfo()->fileName; refFileName = rootNav->tagInfo()->fileName; } } Definition *d = 0; int i; if ((i=fullName.find("::"))!=-1) { d = buildScopeFromQualifiedName(fullName,fullName.contains("::"),root->lang); } cd=new ClassDef(root->fileName,root->startLine,root->startColumn, cd=new ClassDef(root->fileName,root->startLine,root->startColumn, fullName,sec,tagName,refFileName,TRUE,root->spec&Entry::Enum); fullName,sec,tagName,refFileName,TRUE,root->spec&Entry::Enum); Debug::print(Debug::Classes,0," New class `%s' (sec=0x%08x)! #tArgLists=%d\n", Debug::print(Debug::Classes,0," New class `%s' (sec=0x%08x)! #tArgLists=%d\n", fullName.data(),sec,root->tArgLists ? (int)root->tArgLists->count() : -1); fullName.data(),sec,root->tArgLists ? (int)root->tArgLists->count() : -1); if (d) { cd->setOuterScope(d); d->addInnerCompound(cd); } cd->setDocumentation(root->doc,root->docFile,root->docLine); // copy docs to definition cd->setDocumentation(root->doc,root->docFile,root->docLine); // copy docs to definition cd->setBriefDescription(root->brief,root->briefFile,root->briefLine); cd->setBriefDescription(root->brief,root->briefFile,root->briefLine); cd->setLanguage(root->lang); cd->setLanguage(root->lang); Loading Loading @@ -7187,8 +7198,8 @@ static void addEnumValuesToEnums(EntryNav *rootNav) // them here and only add them to the enum // them here and only add them to the enum e->loadEntry(g_storage); e->loadEntry(g_storage); Entry *root = e->entry(); Entry *root = e->entry(); //printf("md->qualifiedName()=%s rootNav->name()=%s tagInfo=%p\n", //printf("md->qualifiedName()=%s rootNav->name()=%s tagInfo=%p name=%s\n", // md->qualifiedName().data(),rootNav->name().data(),rootNav->tagInfo()); // md->qualifiedName().data(),rootNav->name().data(),rootNav->tagInfo(),root->name.data()); if (substitute(md->qualifiedName(),"::",".")== // TODO: add function to get canonical representation if (substitute(md->qualifiedName(),"::",".")== // TODO: add function to get canonical representation substitute(rootNav->name(),"::",".") || // enum value scope matches that of the enum substitute(rootNav->name(),"::",".") || // enum value scope matches that of the enum rootNav->tagInfo() // be less strict for tag files as members can have incomplete scope rootNav->tagInfo() // be less strict for tag files as members can have incomplete scope Loading src/util.cpp +2 −1 Original line number Original line Diff line number Diff line Loading @@ -4279,7 +4279,8 @@ bool getDefs(const QCString &scName, MemberDef *tmd = mmd->getEnumScope(); MemberDef *tmd = mmd->getEnumScope(); //printf("try member %s tmd=%s\n",mmd->name().data(),tmd?tmd->name().data():"<none>"); //printf("try member %s tmd=%s\n",mmd->name().data(),tmd?tmd->name().data():"<none>"); int ni=namespaceName.findRev("::"); int ni=namespaceName.findRev("::"); bool notInNS = tmd && ni==-1 && tmd->getNamespaceDef()==0; //printf("namespaceName=%s ni=%d\n",namespaceName.data(),ni); bool notInNS = tmd && ni==-1 && tmd->getNamespaceDef()==0 && (mScope.isEmpty() || mScope==tmd->name()); bool sameNS = tmd && tmd->getNamespaceDef() && namespaceName.left(ni)==tmd->getNamespaceDef()->name(); bool sameNS = tmd && tmd->getNamespaceDef() && namespaceName.left(ni)==tmd->getNamespaceDef()->name(); //printf("notInNS=%d sameNS=%d\n",notInNS,sameNS); //printf("notInNS=%d sameNS=%d\n",notInNS,sameNS); if (tmd && tmd->isStrong() && // C++11 enum class if (tmd && tmd->isStrong() && // C++11 enum class Loading Loading
src/doxygen.cpp +13 −2 Original line number Original line Diff line number Diff line Loading @@ -1295,10 +1295,21 @@ static void addClassToContext(EntryNav *rootNav) tagName = rootNav->tagInfo()->tagName; tagName = rootNav->tagInfo()->tagName; refFileName = rootNav->tagInfo()->fileName; refFileName = rootNav->tagInfo()->fileName; } } Definition *d = 0; int i; if ((i=fullName.find("::"))!=-1) { d = buildScopeFromQualifiedName(fullName,fullName.contains("::"),root->lang); } cd=new ClassDef(root->fileName,root->startLine,root->startColumn, cd=new ClassDef(root->fileName,root->startLine,root->startColumn, fullName,sec,tagName,refFileName,TRUE,root->spec&Entry::Enum); fullName,sec,tagName,refFileName,TRUE,root->spec&Entry::Enum); Debug::print(Debug::Classes,0," New class `%s' (sec=0x%08x)! #tArgLists=%d\n", Debug::print(Debug::Classes,0," New class `%s' (sec=0x%08x)! #tArgLists=%d\n", fullName.data(),sec,root->tArgLists ? (int)root->tArgLists->count() : -1); fullName.data(),sec,root->tArgLists ? (int)root->tArgLists->count() : -1); if (d) { cd->setOuterScope(d); d->addInnerCompound(cd); } cd->setDocumentation(root->doc,root->docFile,root->docLine); // copy docs to definition cd->setDocumentation(root->doc,root->docFile,root->docLine); // copy docs to definition cd->setBriefDescription(root->brief,root->briefFile,root->briefLine); cd->setBriefDescription(root->brief,root->briefFile,root->briefLine); cd->setLanguage(root->lang); cd->setLanguage(root->lang); Loading Loading @@ -7187,8 +7198,8 @@ static void addEnumValuesToEnums(EntryNav *rootNav) // them here and only add them to the enum // them here and only add them to the enum e->loadEntry(g_storage); e->loadEntry(g_storage); Entry *root = e->entry(); Entry *root = e->entry(); //printf("md->qualifiedName()=%s rootNav->name()=%s tagInfo=%p\n", //printf("md->qualifiedName()=%s rootNav->name()=%s tagInfo=%p name=%s\n", // md->qualifiedName().data(),rootNav->name().data(),rootNav->tagInfo()); // md->qualifiedName().data(),rootNav->name().data(),rootNav->tagInfo(),root->name.data()); if (substitute(md->qualifiedName(),"::",".")== // TODO: add function to get canonical representation if (substitute(md->qualifiedName(),"::",".")== // TODO: add function to get canonical representation substitute(rootNav->name(),"::",".") || // enum value scope matches that of the enum substitute(rootNav->name(),"::",".") || // enum value scope matches that of the enum rootNav->tagInfo() // be less strict for tag files as members can have incomplete scope rootNav->tagInfo() // be less strict for tag files as members can have incomplete scope Loading
src/util.cpp +2 −1 Original line number Original line Diff line number Diff line Loading @@ -4279,7 +4279,8 @@ bool getDefs(const QCString &scName, MemberDef *tmd = mmd->getEnumScope(); MemberDef *tmd = mmd->getEnumScope(); //printf("try member %s tmd=%s\n",mmd->name().data(),tmd?tmd->name().data():"<none>"); //printf("try member %s tmd=%s\n",mmd->name().data(),tmd?tmd->name().data():"<none>"); int ni=namespaceName.findRev("::"); int ni=namespaceName.findRev("::"); bool notInNS = tmd && ni==-1 && tmd->getNamespaceDef()==0; //printf("namespaceName=%s ni=%d\n",namespaceName.data(),ni); bool notInNS = tmd && ni==-1 && tmd->getNamespaceDef()==0 && (mScope.isEmpty() || mScope==tmd->name()); bool sameNS = tmd && tmd->getNamespaceDef() && namespaceName.left(ni)==tmd->getNamespaceDef()->name(); bool sameNS = tmd && tmd->getNamespaceDef() && namespaceName.left(ni)==tmd->getNamespaceDef()->name(); //printf("notInNS=%d sameNS=%d\n",notInNS,sameNS); //printf("notInNS=%d sameNS=%d\n",notInNS,sameNS); if (tmd && tmd->isStrong() && // C++11 enum class if (tmd && tmd->isStrong() && // C++11 enum class Loading