summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVladimír Vondruš <mosra@centrum.cz>2017-11-29 17:38:13 (GMT)
committerVladimír Vondruš <mosra@centrum.cz>2017-11-29 17:40:00 (GMT)
commit17bceb8f4580535de52d19e8cadf0d088f972bef (patch)
tree7dbf772e60b415efdc6982d3dcdb84d71dc9f0d1
parent4f45bd20d4da7d40c793ec4c4c13558581e995ac (diff)
downloadDoxygen-17bceb8f4580535de52d19e8cadf0d088f972bef.zip
Doxygen-17bceb8f4580535de52d19e8cadf0d088f972bef.tar.gz
Doxygen-17bceb8f4580535de52d19e8cadf0d088f972bef.tar.bz2
Expose underlying enum type in the XML output.
The <type> element (used for function return type and variable type) is now reused also for underlying enum type. C++03-style enum types that don't have the underlying type specified have the <type> tag as well, but empty to indicate that the underlying type is unspecified. Added a new test case for this.
-rw-r--r--src/xmlgen.cpp7
-rw-r--r--testing/018/018__def_8c.xml1
-rw-r--r--testing/068/068__typed__enum_8cpp.xml25
-rw-r--r--testing/068_typed_enum.cpp7
4 files changed, 40 insertions, 0 deletions
diff --git a/src/xmlgen.cpp b/src/xmlgen.cpp
index 1b03c3b..3b81408 100644
--- a/src/xmlgen.cpp
+++ b/src/xmlgen.cpp
@@ -802,6 +802,13 @@ static void generateXMLForMember(MemberDef *md,FTextStream &ti,FTextStream &t,De
t << " <argsstring>" << convertToXML(md->argsString()) << "</argsstring>" << endl;
}
+ if (md->memberType() == MemberType_Enumeration)
+ {
+ t << " <type>";
+ linkifyText(TextGeneratorXMLImpl(t),def,md->getBodyDef(),md,md->enumBaseType());
+ t << "</type>" << endl;
+ }
+
t << " <name>" << convertToXML(md->name()) << "</name>" << endl;
if (md->memberType() == MemberType_Property)
diff --git a/testing/018/018__def_8c.xml b/testing/018/018__def_8c.xml
index 8518666..8bc5c09 100644
--- a/testing/018/018__def_8c.xml
+++ b/testing/018/018__def_8c.xml
@@ -18,6 +18,7 @@
</sectiondef>
<sectiondef kind="enum">
<memberdef kind="enum" id="018__def_8c_1aa57b8491d1d8fc1014dd54bcf83b130a" prot="public" static="no">
+ <type/>
<name>E</name>
<enumvalue id="018__def_8c_1aa57b8491d1d8fc1014dd54bcf83b130aab1710e6a49014ba389d57c8753c530f4" prot="public">
<name>E1</name>
diff --git a/testing/068/068__typed__enum_8cpp.xml b/testing/068/068__typed__enum_8cpp.xml
new file mode 100644
index 0000000..d6f1058
--- /dev/null
+++ b/testing/068/068__typed__enum_8cpp.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="">
+ <compounddef id="068__typed__enum_8cpp" kind="file" language="C++">
+ <compoundname>068_typed_enum.cpp</compoundname>
+ <sectiondef kind="enum">
+ <memberdef kind="enum" id="068__typed__enum_8cpp_1aa72902e6181db009a6a84502f81612c2" prot="public" static="no">
+ <type>unsigned short</type>
+ <name>E</name>
+ <briefdescription>
+ <para>A strongly-typed enum. </para>
+ </briefdescription>
+ <detaileddescription>
+ </detaileddescription>
+ <inbodydescription>
+ </inbodydescription>
+ <location file="068_typed_enum.cpp" line="7" column="1" bodyfile="068_typed_enum.cpp" bodystart="7" bodyend="7"/>
+ </memberdef>
+ </sectiondef>
+ <briefdescription>
+ </briefdescription>
+ <detaileddescription>
+ </detaileddescription>
+ <location file="068_typed_enum.cpp"/>
+ </compounddef>
+</doxygen>
diff --git a/testing/068_typed_enum.cpp b/testing/068_typed_enum.cpp
new file mode 100644
index 0000000..44c4123
--- /dev/null
+++ b/testing/068_typed_enum.cpp
@@ -0,0 +1,7 @@
+// objective: test underlying type and strongness for an enum
+// check: 068__typed__enum_8cpp.xml
+
+/** \file */
+
+/** @brief A strongly-typed enum */
+enum class E: unsigned short {};