chiark / gitweb /
doxygen: avoid showing undocumented enum values twice.
authorVladimír Vondruš <mosra@centrum.cz>
Fri, 29 Mar 2019 12:25:02 +0000 (13:25 +0100)
committerVladimír Vondruš <mosra@centrum.cz>
Fri, 29 Mar 2019 12:44:31 +0000 (13:44 +0100)
doxygen/dox2html5.py
doxygen/templates/details-enum.html
doxygen/test/test_undocumented.py
doxygen/test/undocumented/Directory/File.h
doxygen/test/undocumented/File_8h.html
doxygen/test/undocumented/namespaceNamespace.html

index 0585fa9e7f19fb0a705a4509f3d2dcf39bfa8e39..b4b8d9cb63c1795bb2e4f07ca3fa813518d28a7e 100755 (executable)
@@ -1736,7 +1736,6 @@ def parse_enum(state: State, element: ET.Element):
         value.brief = parse_desc(state, enumvalue.find('briefdescription'))
         value.description, value_search_keywords, value.is_deprecated = parse_enum_value_desc(state, enumvalue)
         if value.brief or value.description:
-            enum.has_value_details = True
             if enum.base_url == state.current_compound_url and not state.doxyfile['M_SEARCH_DISABLED']:
                 result = Empty()
                 result.flags = ResultFlag.ENUM_VALUE|(ResultFlag.DEPRECATED if value.is_deprecated else ResultFlag(0))
@@ -1747,6 +1746,16 @@ def parse_enum(state: State, element: ET.Element):
                 if search_enum_values_as_keywords and value.initializer.startswith('='):
                     result.keywords += [(value.initializer[1:].lstrip(), '', 0)]
                 state.search += [result]
+
+            # If either brief or description for this value is present, we want
+            # to show the detailed enum docs. However, in
+            # case M_SHOW_UNDOCUMENTED is enabled, the values might have just
+            # a dummy <span></span> content in order to make them "appear
+            # documented". Then it doesn't make sense to repeat the same list
+            # twice.
+            if not state.doxyfile['M_SHOW_UNDOCUMENTED'] or value.brief != '<span></span>':
+                enum.has_value_details = True
+
         enum.values += [value]
 
     if enum.base_url == state.current_compound_url and (enum.description or enum.has_value_details):
index e95b5590721d5140709cb561610187878ab37fa5..dabcbb121fa225b1592b78f81eaa898e655f8c4e 100644 (file)
@@ -23,7 +23,7 @@
             {% if enum.description %}
 {{ enum.description }}
             {% endif %}
-            {% if enum.values %}
+            {% if enum.has_value_details %}
             <table class="m-table m-fullwidth m-flat m-dox">
               <thead><tr><th style="width: 1%">Enumerators</th><th></th></tr></thead>
               <tbody>
index 01c6b4fe024edcff7e888cefbf34e5ffe5566aa1..74c0de4d8742b33d313ffc21db0f556168379dd1 100644 (file)
@@ -57,4 +57,4 @@ class Test(IntegrationTestCase):
         with open(os.path.join(self.path, 'html', 'searchdata.bin'), 'rb') as f:
             serialized = f.read()
             magic, version, symbol_count, map_offset = search_data_header_struct.unpack_from(serialized)
-            self.assertEqual(symbol_count, 38)
+            self.assertEqual(symbol_count, 44)
index 71622df4022b0127a797733b1e9c14b92465a04c..ce6f38121be8768987556d8eb466b6bbcb3000e7 100644 (file)
@@ -12,7 +12,17 @@ struct Struct {};
 union Union {};
 
 /* An undocumented enum in the root namespace */
-enum Enum {};
+enum Enum {
+    A,
+
+    /**
+     * This value is documented so the enum *should* be present in detailed
+     * docs.
+     */
+    B,
+
+    C
+};
 
 /* An undocumented typedef in the root namespace */
 typedef int Int;
@@ -51,7 +61,11 @@ struct ClassInANamespace {
 };
 
 /* An undocumented enum */
-enum EnumInANamespace {};
+enum EnumInANamespace {
+    /* None of these are documented so the enum shouldn't be present in
+       detailed docs */
+    A, B, C
+};
 
 /* An undocumented typedef */
 typedef int IntInANamespace;
index c189dc47d53c86565ac40720655161a9e578a25a..ea91b67f4a69c01901956daf53df816c6f58bc7f 100644 (file)
           <h2><a href="#enum-members">Enums</a></h2>
           <dl class="m-dox">
             <dt>
-              <span class="m-dox-wrap-bumper">enum <a href="#a8150b7776c2a1749101acf22e868d091" class="m-dox-self" name="a8150b7776c2a1749101acf22e868d091">Enum</a> { </span><span class="m-dox-wrap"> }</span>
+              <span class="m-dox-wrap-bumper">enum <a href="#a8150b7776c2a1749101acf22e868d091" class="m-dox">Enum</a> { </span><span class="m-dox-wrap"><a href="#a8150b7776c2a1749101acf22e868d091a42a4ade1acd55a49164099104990e09f" class="m-dox">A</a>,
+              <a href="#a8150b7776c2a1749101acf22e868d091a3f2a77ecd272aa6d6b5902faa5e5fc68" class="m-dox">B</a>,
+              <a href="#a8150b7776c2a1749101acf22e868d091a739ce3f516592d245d16fd8a3893472c" class="m-dox">C</a> }</span>
             </dt>
             <dd><span></span></dd>
             <dt>
-              <span class="m-dox-wrap-bumper">enum <a href="#a8a9c59c4fc669202671b19a5df454fd0" class="m-dox-self" name="a8a9c59c4fc669202671b19a5df454fd0">EnumInANamespace</a> { </span><span class="m-dox-wrap"> }</span>
+              <span class="m-dox-wrap-bumper">enum <a href="#a8a9c59c4fc669202671b19a5df454fd0" class="m-dox-self" name="a8a9c59c4fc669202671b19a5df454fd0">EnumInANamespace</a> { </span><span class="m-dox-wrap"><a href="#a8a9c59c4fc669202671b19a5df454fd0aaa4aa9d191fa809c64a59397226b9449" class="m-dox">A</a>,
+              <a href="#a8a9c59c4fc669202671b19a5df454fd0aeeda54a2b8b162bfc6e790f364fa99cf" class="m-dox">B</a>,
+              <a href="#a8a9c59c4fc669202671b19a5df454fd0ad37305d06fee8ebfbb8a30306f16c832" class="m-dox">C</a> }</span>
             </dt>
             <dd><span></span></dd>
             <dt>
             <dd><span></span></dd>
           </dl>
         </section>
+        <section>
+          <h2>Enum documentation</h2>
+          <section class="m-dox-details" id="a8150b7776c2a1749101acf22e868d091"><div>
+            <h3>
+              enum <a href="#a8150b7776c2a1749101acf22e868d091" class="m-dox-self">Enum</a>
+            </h3>
+            <p><span></span></p>
+            <table class="m-table m-fullwidth m-flat m-dox">
+              <thead><tr><th style="width: 1%">Enumerators</th><th></th></tr></thead>
+              <tbody>
+                <tr>
+                  <td><a href="#a8150b7776c2a1749101acf22e868d091a42a4ade1acd55a49164099104990e09f" class="m-dox-self" name="a8150b7776c2a1749101acf22e868d091a42a4ade1acd55a49164099104990e09f">A</a></td>
+                  <td>
+                  <p><span></span></p>
+                  </td>
+                </tr>
+                <tr>
+                  <td><a href="#a8150b7776c2a1749101acf22e868d091a3f2a77ecd272aa6d6b5902faa5e5fc68" class="m-dox-self" name="a8150b7776c2a1749101acf22e868d091a3f2a77ecd272aa6d6b5902faa5e5fc68">B</a></td>
+                  <td>
+<p>This value is documented so the enum <em>should</em> be present in detailed docs.</p>
+                  </td>
+                </tr>
+                <tr>
+                  <td><a href="#a8150b7776c2a1749101acf22e868d091a739ce3f516592d245d16fd8a3893472c" class="m-dox-self" name="a8150b7776c2a1749101acf22e868d091a739ce3f516592d245d16fd8a3893472c">C</a></td>
+                  <td>
+                  <p><span></span></p>
+                  </td>
+                </tr>
+              </tbody>
+            </table>
+          </div></section>
+        </section>
       </div>
     </div>
   </div>
index 7d9b828b141db1a2283305fda223928782aa7926..c78375023f0558821881f604005eb727049c75b1 100644 (file)
@@ -86,7 +86,9 @@
           <h2><a href="#enum-members">Enums</a></h2>
           <dl class="m-dox">
             <dt>
-              <span class="m-dox-wrap-bumper">enum <a href="File_8h.html#a8a9c59c4fc669202671b19a5df454fd0" class="m-dox">EnumInANamespace</a> { </span><span class="m-dox-wrap"> }</span>
+              <span class="m-dox-wrap-bumper">enum <a href="File_8h.html#a8a9c59c4fc669202671b19a5df454fd0" class="m-dox">EnumInANamespace</a> { </span><span class="m-dox-wrap"><a href="#a8a9c59c4fc669202671b19a5df454fd0aaa4aa9d191fa809c64a59397226b9449" class="m-dox">A</a>,
+              <a href="#a8a9c59c4fc669202671b19a5df454fd0aeeda54a2b8b162bfc6e790f364fa99cf" class="m-dox">B</a>,
+              <a href="#a8a9c59c4fc669202671b19a5df454fd0ad37305d06fee8ebfbb8a30306f16c832" class="m-dox">C</a> }</span>
             </dt>
             <dd><span></span></dd>
             <dt>