summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/config.xml5
-rw-r--r--src/doxygen.cpp27
-rw-r--r--src/memberdef.cpp18
-rw-r--r--src/memberlist.cpp4
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)