diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/config.xml | 5 | ||||
-rw-r--r-- | src/doxygen.cpp | 27 | ||||
-rw-r--r-- | src/memberdef.cpp | 18 | ||||
-rw-r--r-- | src/memberlist.cpp | 4 |
4 files changed, 43 insertions, 11 deletions
diff --git a/src/config.xml b/src/config.xml index 0ec4219..cb970f4 100644 --- a/src/config.xml +++ b/src/config.xml @@ -662,6 +662,7 @@ Go to the <a href="commands.html">next</a> section or return to the <br>Note that for custom extensions you also need to set \ref cfg_file_patterns "FILE_PATTERNS" otherwise the files are not read by doxygen. When specifying `no_extension` you should add `*` to the \ref cfg_file_patterns "FILE_PATTERNS". + <br>Note see also the list of \ref default_file_extension_mapping "default file extension mappings". ]]> </docs> </option> @@ -1404,6 +1405,8 @@ FILE_VERSION_FILTER = "cleartool desc -fmt \%Vn" Note that for custom extensions or not directly supported extensions you also need to set \ref cfg_extension_mapping "EXTENSION_MAPPING" for the extension otherwise the files are not read by doxygen.<br> + Note the list of default checked file patterns might differ from the list of + \ref default_file_extension_mapping "default file extension mappings".<br> If left blank the following patterns are tested: ]]> </docs> @@ -1438,8 +1441,6 @@ FILE_VERSION_FILTER = "cleartool desc -fmt \%Vn" <value name='*.md'/> <value name='*.mm'/> <value name='*.dox' desc='(to be provided as doxygen C comment)'/> - <value name='*.doc' desc='(to be provided as doxygen C comment)'/> - <value name='*.txt' desc='(to be provided as doxygen C comment)'/> <value name='*.py'/> <value name='*.pyw'/> <value name='*.f90'/> diff --git a/src/doxygen.cpp b/src/doxygen.cpp index 13b275f..6c8c67a 100644 --- a/src/doxygen.cpp +++ b/src/doxygen.cpp @@ -5454,7 +5454,8 @@ static void addMemberFunction(const Entry *root, qPrint(scopeName),cd ? qPrint(cd->name()) : "<none>", qPrint(md->argsString()), qPrint(root->fileName)); - //printf("Member %s (member scopeName=%s) (this scopeName=%s) classTempList=%s\n",md->name().data(),cd->name().data(),scopeName.data(),classTempList.data()); + //printf("Member %s (member scopeName=%s) (this scopeName=%s) isEnumValue()=%d\n", + // md->name().data(),cd->name().data(),scopeName.data(),md->isEnumValue()); FileDef *fd=root->fileDef(); NamespaceDef *nd=0; if (!namespaceName.isEmpty()) nd=getResolvedNamespace(namespaceName); @@ -5462,6 +5463,30 @@ static void addMemberFunction(const Entry *root, //printf("scopeName %s->%s\n",scopeName.data(), // stripTemplateSpecifiersFromScope(scopeName,FALSE).data()); + // if the member we are searching for is an enum value that is part of + // a "strong" enum, we need to look into the fields of the enum for a match + int enumNamePos=0; + if (md->isEnumValue() && (enumNamePos=className.findRev("::"))!=-1) + { + QCString enumName = className.mid(enumNamePos+2); + if (className.left(enumNamePos)==cd->name()) + { + MemberName *enumMn=Doxygen::memberNameLinkedMap->find(enumName); + //printf("enumMn(%s)=%p\n",className.data(),enumMn); + if (enumMn) + { + for (const auto &emd : *enumMn) + { + memFound = emd->isStrong() && md->getEnumScope()==emd.get(); + addMemberDocs(root,md,funcDecl,0,overloaded,spec); + count++; + if (memFound) break; + } + } + } + } + if (memFound) break; + const ClassDef *tcd=findClassDefinition(fd,nd,scopeName); if (tcd==0 && cd && stripAnonymousNamespaceScope(cd->name())==scopeName) { diff --git a/src/memberdef.cpp b/src/memberdef.cpp index b7ac968..7fe95db 100644 --- a/src/memberdef.cpp +++ b/src/memberdef.cpp @@ -1884,10 +1884,10 @@ void MemberDefImpl::writeLink(OutputList &ol, const NamespaceDef *nspace = getNamespaceDef(); if (!hideScopeNames) { - if (m_impl->enumScope && m_impl->livesInsideEnum) - { - n.prepend(m_impl->enumScope->displayName()+sep); - } + //if (m_impl->enumScope && m_impl->livesInsideEnum) + //{ + // n.prepend(m_impl->enumScope->displayName()+sep); + //} if (classDef && gd && !isRelated()) { n.prepend(classDef->displayName()+sep); @@ -4637,10 +4637,15 @@ void MemberDefImpl::writeEnumDeclaration(OutputList &typeDecl, MemberListIterator mli(*fmdl); MemberDefMutable *fmd=toMemberDefMutable(mli.current()); bool fmdVisible = fmd ? fmd->isBriefSectionVisible() : TRUE; + bool first=true; while (fmd) { if (fmdVisible) { + if (!first) + { + typeDecl.writeString(", "); + } /* in html we start a new line after a number of items */ if (numVisibleEnumValues>enumValuesPerLine && (enumMemCount%enumValuesPerLine)==0 @@ -4675,15 +4680,12 @@ void MemberDefImpl::writeEnumDeclaration(OutputList &typeDecl, typeDecl.writeString(" "); typeDecl.parseText(fmd->initializer()); } + first=false; } bool prevVisible = fmdVisible; ++mli; fmd=toMemberDefMutable(mli.current()); - if (fmd && (fmdVisible=fmd->isBriefSectionVisible())) - { - typeDecl.writeString(", "); - } if (prevVisible) { typeDecl.disable(OutputGenerator::Man); diff --git a/src/memberlist.cpp b/src/memberlist.cpp index 11b6c9f..ed10bed 100644 --- a/src/memberlist.cpp +++ b/src/memberlist.cpp @@ -508,6 +508,10 @@ void MemberList::writePlainDeclarations(OutputList &ol, ol.writeString("local "); } ol.writeString("enum "); + if (md->isStrong()) + { + ol.writeString("class "); + } ol.insertMemberAlign(); md->writeEnumDeclaration(ol,cd,nd,fd,gd); if (!detailsLinkable) |